diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..9ad8b67 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..a24490a --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,1058 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1516611952087 + + + 1516677205280 + + + 1516696555111 + + + 1516696902937 + + + 1516697580630 + + + 1516864259051 + + + 1516864906408 + + + 1517387104503 + + + 1517387208748 + + + 1517538327045 + + + 1517538658143 + + + 1517538707684 + + + 1517562329931 + + + 1517801674889 + + + 1517801799361 + + + 1517802119906 + + + 1517802354082 + + + 1517814930685 + + + 1517982676713 + + + 1518141092515 + + + 1520386468824 + + + 1520388207902 + + + 1520480813078 + + + 1520928294359 + + + 1521685677510 + + + 1522207847528 + + + 1522214002808 + + + 1524889643342 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + file://$PROJECT_DIR$/application/admin/view/devsncfg/index.html + 89 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/xypg.iml b/.idea/xypg.iml new file mode 100644 index 0000000..c956989 --- /dev/null +++ b/.idea/xypg.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..36f7b6f --- /dev/null +++ b/.travis.yml @@ -0,0 +1,42 @@ +sudo: false + +language: php + +branches: + only: + - stable + +cache: + directories: + - $HOME/.composer/cache + +before_install: + - composer self-update + +install: + - composer install --no-dev --no-interaction --ignore-platform-reqs + - zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Core.zip . + - composer require --update-no-dev --no-interaction "topthink/think-image:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-migration:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-captcha:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-mongo:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-worker:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-helper:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-queue:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-angular:^1.0" + - composer require --dev --update-no-dev --no-interaction "topthink/think-testing:^1.0" + - zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Full.zip . + +script: + - php think unit + +deploy: + provider: releases + api_key: + secure: TSF6bnl2JYN72UQOORAJYL+CqIryP2gHVKt6grfveQ7d9rleAEoxlq6PWxbvTI4jZ5nrPpUcBUpWIJHNgVcs+bzLFtyh5THaLqm39uCgBbrW7M8rI26L8sBh/6nsdtGgdeQrO/cLu31QoTzbwuz1WfAVoCdCkOSZeXyT/CclH99qV6RYyQYqaD2wpRjrhA5O4fSsEkiPVuk0GaOogFlrQHx+C+lHnf6pa1KxEoN1A0UxxVfGX6K4y5g4WQDO5zT4bLeubkWOXK0G51XSvACDOZVIyLdjApaOFTwamPcD3S1tfvuxRWWvsCD5ljFvb2kSmx5BIBNwN80MzuBmrGIC27XLGOxyMerwKxB6DskNUO9PflKHDPI61DRq0FTy1fv70SFMSiAtUv9aJRT41NQh9iJJ0vC8dl+xcxrWIjU1GG6+l/ZcRqVx9V1VuGQsLKndGhja7SQ+X1slHl76fRq223sMOql7MFCd0vvvxVQ2V39CcFKao/LB1aPH3VhODDEyxwx6aXoTznvC/QPepgWsHOWQzKj9ftsgDbsNiyFlXL4cu8DWUty6rQy8zT2b4O8b1xjcwSUCsy+auEjBamzQkMJFNlZAIUrukL/NbUhQU37TAbwsFyz7X0E/u/VMle/nBCNAzgkMwAUjiHM6FqrKKBRWFbPrSIixjfjkCnrMEPw= + file: + - ThinkPHP_Core.zip + - ThinkPHP_Full.zip + skip_cleanup: true + on: + tags: true diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..574a39c --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,32 @@ + +ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 +版权所有Copyright © 2006-2016 by ThinkPHP (http://thinkphp.cn) +All rights reserved。 +ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 + +Apache Licence是著名的非盈利开源组织Apache采用的协议。 +该协议和BSD类似,鼓励代码共享和尊重原作者的著作权, +允许代码修改,再作为开源或商业软件发布。需要满足 +的条件: +1. 需要给代码的用户一份Apache Licence ; +2. 如果你修改了代码,需要在被修改的文件中说明; +3. 在延伸的代码中(修改和有源代码衍生的代码中)需要 +带有原来代码中的协议,商标,专利声明和其他原来作者规 +定需要包含的说明; +4. 如果再发布的产品中包含一个Notice文件,则在Notice文 +件中需要带有本协议内容。你可以在Notice中增加自己的 +许可,但不可以表现为对Apache Licence构成更改。 +具体的协议参考:http://www.apache.org/licenses/LICENSE-2.0 + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md index c1cc369..81cf109 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,129 @@ -# phpweb +ThinkPHP 5.0 +=============== +[![Total Downloads](https://poser.pugx.org/topthink/think/downloads)](https://packagist.org/packages/topthink/think) +[![Latest Stable Version](https://poser.pugx.org/topthink/think/v/stable)](https://packagist.org/packages/topthink/think) +[![Latest Unstable Version](https://poser.pugx.org/topthink/think/v/unstable)](https://packagist.org/packages/topthink/think) +[![License](https://poser.pugx.org/topthink/think/license)](https://packagist.org/packages/topthink/think) + +ThinkPHP5在保持快速开发和大道至简的核心理念不变的同时,PHP版本要求提升到5.4,对已有的CBD模式做了更深的强化,优化核心,减少依赖,基于全新的架构思想和命名空间实现,是ThinkPHP突破原有框架思路的颠覆之作,其主要特性包括: + + + 基于命名空间和众多PHP新特性 + + 核心功能组件化 + + 强化路由功能 + + 更灵活的控制器 + + 重构的模型和数据库类 + + 配置文件可分离 + + 重写的自动验证和完成 + + 简化扩展机制 + + API支持完善 + + 改进的Log类 + + 命令行访问支持 + + REST支持 + + 引导文件支持 + + 方便的自动生成定义 + + 真正惰性加载 + + 分布式环境支持 + + 更多的社交类库 + +> ThinkPHP5的运行环境要求PHP5.4以上。 + +详细开发文档参考 [ThinkPHP5完全开发手册](http://www.kancloud.cn/manual/thinkphp5) + +## 目录结构 + +初始的目录结构如下: + +~~~ +www WEB部署目录(或者子目录) +├─application 应用目录 +│ ├─common 公共模块目录(可以更改) +│ ├─module_name 模块目录 +│ │ ├─config.php 模块配置文件 +│ │ ├─common.php 模块函数文件 +│ │ ├─controller 控制器目录 +│ │ ├─model 模型目录 +│ │ ├─view 视图目录 +│ │ └─ ... 更多类库目录 +│ │ +│ ├─command.php 命令行工具配置文件 +│ ├─common.php 公共函数文件 +│ ├─config.php 公共配置文件 +│ ├─route.php 路由配置文件 +│ ├─tags.php 应用行为扩展定义文件 +│ └─database.php 数据库配置文件 +│ +├─public WEB目录(对外访问目录) +│ ├─index.php 入口文件 +│ ├─router.php 快速测试文件 +│ └─.htaccess 用于apache的重写 +│ +├─thinkphp 框架系统目录 +│ ├─lang 语言文件目录 +│ ├─library 框架类库目录 +│ │ ├─think Think类库包目录 +│ │ └─traits 系统Trait目录 +│ │ +│ ├─tpl 系统模板目录 +│ ├─base.php 基础定义文件 +│ ├─console.php 控制台入口文件 +│ ├─convention.php 框架惯例配置文件 +│ ├─helper.php 助手函数文件 +│ ├─phpunit.xml phpunit配置文件 +│ └─start.php 框架入口文件 +│ +├─extend 扩展类库目录 +├─runtime 应用的运行时目录(可写,可定制) +├─vendor 第三方类库目录(Composer依赖库) +├─build.php 自动生成定义文件(参考) +├─composer.json composer 定义文件 +├─LICENSE.txt 授权说明文件 +├─README.md README 文件 +├─think 命令行入口文件 +~~~ + +> router.php用于php自带webserver支持,可用于快速测试 +> 切换到public目录后,启动命令:php -S localhost:8888 router.php +> 上面的目录结构和名称是可以改变的,这取决于你的入口文件和配置参数。 + +## 命名规范 + +`ThinkPHP5`遵循PSR-2命名规范和PSR-4自动加载规范,并且注意如下规范: + +### 目录和文件 + +* 目录不强制规范,驼峰和小写+下划线模式均支持; +* 类库、函数文件统一以`.php`为后缀; +* 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致; +* 类名和类文件名保持一致,统一采用驼峰法命名(首字母大写); + +### 函数和类、属性命名 +* 类的命名采用驼峰法,并且首字母大写,例如 `User`、`UserType`,默认不需要添加后缀,例如`UserController`应该直接命名为`User`; +* 函数的命名使用小写字母和下划线(小写字母开头)的方式,例如 `get_client_ip`; +* 方法的命名使用驼峰法,并且首字母小写,例如 `getUserName`; +* 属性的命名使用驼峰法,并且首字母小写,例如 `tableName`、`instance`; +* 以双下划线“__”打头的函数或方法作为魔法方法,例如 `__call` 和 `__autoload`; + +### 常量和配置 +* 常量以大写字母和下划线命名,例如 `APP_PATH`和 `THINK_PATH`; +* 配置参数以小写字母和下划线命名,例如 `url_route_on` 和`url_convert`; + +### 数据表和字段 +* 数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如 `think_user` 表和 `user_name`字段,不建议使用驼峰和中文作为数据表字段命名。 + +## 参与开发 +请参阅 [ThinkPHP5 核心框架包](https://github.com/top-think/framework)。 + +## 版权信息 + +ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 + +本项目包含的第三方源码和二进制文件之版权信息另行标注。 + +版权所有Copyright © 2006-2017 by ThinkPHP (http://thinkphp.cn) + +All rights reserved。 + +ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 + +更多细节参阅 [LICENSE.txt](LICENSE.txt) diff --git a/application/.htaccess b/application/.htaccess new file mode 100644 index 0000000..3418e55 --- /dev/null +++ b/application/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/application/admin/config.php b/application/admin/config.php new file mode 100644 index 0000000..4a5160b --- /dev/null +++ b/application/admin/config.php @@ -0,0 +1,10 @@ + [ + '__PUBLIC__'=>SITE_URL.'/static/admin', + '__IMG__'=>SITE_URL.'/static', + '__ROOTURL__'=>SITE_URL.'/index.php', + + ], + +]; diff --git a/application/admin/controller/Admin.php b/application/admin/controller/Admin.php new file mode 100644 index 0000000..c2f6a8f --- /dev/null +++ b/application/admin/controller/Admin.php @@ -0,0 +1,108 @@ +getadmin(); + foreach ($adminres as $k => $v) { + var_dump($v['id']); + $_groupTitle=$auth->getGroups($v['id']); + if($_groupTitle){ + $groupTitle=$_groupTitle[0]['title']; + }else{ + $groupTitle="暂无"; + } + + $v['groupTitle']=$groupTitle; + } + $this->assign('adminres',$adminres); + return view(); + } + public function add() + { + if(request()->isPost()){ + $data=input('post.'); + //var_dump($data);die; + //res=db('admin')->insert($data); + $validate = \think\Loader::validate('Admin'); + if(!$validate->scene('add')->check($data)){ + $this->error($validate->getError()); + } + $admin=new AdminModel(); + if($admin->addadmin($data)){ + $this->success('添加管理员成功!',url('lst')); + }else{ + $this->error('添加管理员失败!'); + } + return; + } + $authGroupRes=db('auth_group')->select(); + $this->assign('authGroupRes',$authGroupRes); + return view(); + } + + public function edit($id) + { + $admins=db('admin')->where("id=$id")->find(); + if(request()->isPost()){ + $data=input('post.'); + $validate = \think\Loader::validate('Admin'); + if(!$validate->scene('edit')->check($data)){ + $this->error($validate->getError()); + } + $admin=new AdminModel(); + $savenum=$admin->saveadmin($data,$admins); + if($savenum == '2'){ + $this->error('管理员用户名不得为空!'); + } + if($savenum !== false){ + $this->success('修改成功!',url('lst')); + }else{ + $this->error('修改失败!'); + } + return; + } + + if(!$admins){ + $this->error('该管理员不存在'); + } + $authGroupAccess=db('auth_group_access')->where(array('uid'=>$id))->find(); + $authGroupRes=db('auth_group')->select(); + $this->assign('authGroupRes',$authGroupRes); + $this->assign('admin',$admins); + $this->assign('groupId',$authGroupAccess['group_id']); + return view(); + } + + public function del($id){ + $admin=new AdminModel(); + $delnum=$admin->deladmin($id); + if($delnum == '1'){ + $this->success('删除管理员成功!',url('lst')); + }else{ + $this->error('删除管理员失败!'); + } + } + + public function logout(){ + session(null); + $this->success('退出系统成功!',url('/index/login/index')); + } + + + + + + + + + + + + + +} diff --git a/application/admin/controller/Admin_bak.php b/application/admin/controller/Admin_bak.php new file mode 100644 index 0000000..9633d5c --- /dev/null +++ b/application/admin/controller/Admin_bak.php @@ -0,0 +1,3 @@ + +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 \ No newline at end of file diff --git a/application/admin/controller/Article.php b/application/admin/controller/Article.php new file mode 100644 index 0000000..41817d5 --- /dev/null +++ b/application/admin/controller/Article.php @@ -0,0 +1,3 @@ + +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 \ No newline at end of file diff --git a/application/admin/controller/Auth.php b/application/admin/controller/Auth.php new file mode 100644 index 0000000..5d94535 --- /dev/null +++ b/application/admin/controller/Auth.php @@ -0,0 +1,3 @@ + +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idBAmhU0+F2aScBY0htL7tJOifbOPTolzftE9wysfKXpMd3klCBYPwtILFmaScbHICbHIkuk1doApwuShDBCIhtyldbn0GUILFmaScaSmC29Vcol0DB9Vk10phUn7tJO0DolzRT5mcbOaF2aZUB5MdZILfBlLhTShkoYvdB1idMWINUnXFMamb3klFoxiC2APkZ9FGZiFfZP/hax9RZFSkZO1F2aZB1XmbyXxbtffkZXLFmaScaSmC29Vcol0DB9Vk10pKXpEhoa2CBXPkZOjd25LDbOpd249htFVkoYvdB1idMWIRJFpKZFphTShkoYvdMOpfolvdJEMkJOifbOPTolzfysfwe0IF3OZfo9Sd3flFJILFmaScaSmdMyscUffhTShgBaSF2AIGXPLCba0DrxpF3OdbUE9wuY0FmOvdo93cbwPkuk1doadk25idBAmbUL7tm0hgWPLb2y1foiHDbY0BZO1DBWIRJO0bUE9wtOifbOPTolzfeShDBCIhtO0DolzRT5jd25MDBfdk2y1foigfulXcUffwe09wewpwuShky9TOaYTUA9KBZfgCba0Dy9SDbY0bZFVkuapctEVkuOfwe0Ikoy1foiHDbY0KXp9tmklfuaZdJniFmkiGa91dMlxfBAPkoy1foiHDbY0hTShgWpXFM90cBY0cBWIcmaVC3Opd24Ic2a0abYlFLlVcM8PkuapctLIGXpzfoy0DBHIkuazcbkpdMcvwe0IB107tMlMwtIiDbYzcbWPkuazcbkpdMcvBZO1DBOfhULIGXPLfbYlFMlVcM9dkuapcy0INUnrCjP6dMyscUILfoipFZ0+C29VcMlmBZfifbOPb3azcbwmbULsNmfPcbklhySmfBlLkz0+kuapcy0pRT5MDB5LhtL7tm0hFMa0fbkVwtO1F2aZDB5Md1SLfBlLbTShgWp9 \ No newline at end of file diff --git a/application/admin/controller/AuthGroup.php b/application/admin/controller/AuthGroup.php new file mode 100644 index 0000000..cd62a73 --- /dev/null +++ b/application/admin/controller/AuthGroup.php @@ -0,0 +1,3 @@ + +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 \ No newline at end of file diff --git a/application/admin/controller/AuthRule.php b/application/admin/controller/AuthRule.php new file mode 100644 index 0000000..f706656 --- /dev/null +++ b/application/admin/controller/AuthRule.php @@ -0,0 +1,3 @@ + +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 \ No newline at end of file diff --git a/application/admin/controller/Bdz.php b/application/admin/controller/Bdz.php new file mode 100644 index 0000000..2a902c9 --- /dev/null +++ b/application/admin/controller/Bdz.php @@ -0,0 +1,3 @@ + +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 diff --git a/application/admin/controller/Cac.php b/application/admin/controller/Cac.php new file mode 100644 index 0000000..1596b24 --- /dev/null +++ b/application/admin/controller/Cac.php @@ -0,0 +1,3 @@ + +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 \ No newline at end of file diff --git a/application/admin/controller/Cag.php b/application/admin/controller/Cag.php new file mode 100644 index 0000000..48027f4 --- /dev/null +++ b/application/admin/controller/Cag.php @@ -0,0 +1,3 @@ + +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 \ No newline at end of file diff --git a/application/admin/controller/Cate.php b/application/admin/controller/Cate.php new file mode 100644 index 0000000..716c2f7 --- /dev/null +++ b/application/admin/controller/Cate.php @@ -0,0 +1,3 @@ + +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 \ No newline at end of file diff --git a/application/admin/controller/Common.php b/application/admin/controller/Common.php new file mode 100644 index 0000000..1413422 --- /dev/null +++ b/application/admin/controller/Common.php @@ -0,0 +1,3 @@ + +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 \ No newline at end of file diff --git a/application/admin/controller/Conf.php b/application/admin/controller/Conf.php new file mode 100644 index 0000000..94a9ff5 --- /dev/null +++ b/application/admin/controller/Conf.php @@ -0,0 +1,3 @@ + +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 \ No newline at end of file diff --git a/application/admin/controller/Devsncfg.php b/application/admin/controller/Devsncfg.php new file mode 100644 index 0000000..1861dff --- /dev/null +++ b/application/admin/controller/Devsncfg.php @@ -0,0 +1,96 @@ +fetch(); + } + + + public function get_ajax(){ + $data = Db::query("SELECT DISTINCT concat('b',bdzid) id,bmc name,0 as pId from vw_sb +UNION DISTINCT SELECT concat('j',jgid) id,jmc name,concat('b',bdzid) pId from vw_sb +UNION DISTINCT SELECT concat('z',zid) id,zmc name,concat('j',jgid) pId from vw_sb +UNION DISTINCT SELECT concat('m',id) id,name,concat('z',zid) pId from vw_sb"); + echo json_encode($data); + } + + public function ajax(){ + $id=input('id'); + $data1 = Db::table('vw_sb')->where('id',$id)->find(); + echo $data1['mtid']; + } + + public function lst() + { + $sid=input('sid'); + //$list=db('i2relation')->where('eqmid',$sid)->select(); + $list=Db::table('i2relation')->where('eqmid', $sid)->paginate(5,false,['query' => request()->param()]); + $this->assign('list',$list); + return $this->fetch(); + } + public function add() + { + $sid=input('sid'); + if (request()->isPost()){ + $data = input('post.'); + $data['eqmid']=$sid; + try { + if (db('i2relation')->insert($data)) { + return $this->success('添加设备编码成功', 'lst?sid=' . $sid); + } else { + return $this->error('添加设备编码失败'); + } + } + catch (Exception $e) + { + return $this->error($e->getMessage()); + } + } + return $this->fetch(); + + } + public function edit(){ + $sid=input('sid'); + $sensorid=input('sensorid'); + $list=db('i2relation')->find($sensorid); + if(request()->ispost()){ + $data=[ + 'eqmid'=>input('eqmid'), + 'cacid'=>input('cacid'), + 'sensorid'=>input('sensorid1'), + 'equipmentid'=>input('equipmentid'), + 'monitortype'=>input('monitortype'), + 'phase'=>input('phase'), + 'sensorindex'=>input('sensorindex'), + ]; + + $save=db('i2relation')->where("sensorid",$data["sensorid"])->update($data); + if($save !== false){ + $this->success('修改设备编码成功!','lst?sid='.$sid); + }else{ + $this->error('修改设备编码失败!'); + } + } + $this->assign('list',$list); + return $this->fetch(); + } + + public function del(){ + $sid=input('sid'); + $sensorid=input('sensorid'); + if(db('i2relation')->delete(input('sensorid'))){ + $this->success('删除设备编码成功!','lst?sid='.$sid); + }else{ + $this->error('删除设备编码失败!'); + } + + } +} diff --git a/application/admin/controller/Dmin1.php b/application/admin/controller/Dmin1.php new file mode 100644 index 0000000..15ca405 --- /dev/null +++ b/application/admin/controller/Dmin1.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXboyLdBlVboYvdmOZd2xScbw7eWp1F2AIfoipdMsFW29VfukvdoxlFjSYtmazcUn0DolVD1xrCjSYtMYSCbYzwtnrdBlVHUnlGuOldMOzwrYvdmOZd2xScbwYtmSYtmn1CMxpCZnMfB5jfolvdJnSF3WPhW0hGX0hF2azF2lvdl9zfoyZftIpKX0hcBYPdZELb1YyA1YkT05dwlaTOakgTLyYOUkfKX0hcBYPdZELb1YyA1YkT05dwlnnA1YbT1krwl07eWpZcbO1FM4IkuOPDbHsNMclfoYPhtL7eWp9eWpXfBkSDBHIcmaVC3Opd24ICBOLhtLYtmSYtMlMwtiZcby1cbY0htLsNMlzAo9zftIphbSYtJOLCbOiwe0IBX0hk1aTOakgUAWmNT4PDB5XfbWPk1aTOakgUAWmhULSeWPmaaYyAl9KWA1ykz0+holVFua0htfaA0aUb05nTAAmhULSeWPmaaYyAl9WALlBkz0+holVFua0htfaA0aUb1nUUaCmhULSeWPmOraWay9kOtF9NJipdmn1ftImOraWay9kOtFphUXYtJfaA0aUb05Nkz0+holVFua0htfaA0aUb05NkZLpRE0hk1nNA1OgAykkaJF9NJipdmn1ftImAr9Tay9WALlBkZLpRE0hk0lYb1knTLfykz0+holVFua0htfkTa9UWA5uOUFphUXYtJfeWA5tAL9nOrYnA1WmNT4PDB5XfbWPk0YnTLkUT0yrW0yTatFphUXYtJfTOaImNT4PDB5XfbWPk1YyBtFphUXYtJfWWaYTa09UOtF9NJipdmn1ftImAryTA1fNALWmhULSeWpfKX0hDBCPcowPk3azcbwmhU0+DB5zcbk0htOLCbOihUl7eWpZcbO1FM4IkuOPDbHsNmY1C2YlF3HPk29qkZXmduY0kZL7eWp9eWplduYlwuSYtmklfuaZdJELfoipFZ0+cbkZd3wPk2ciduYlkZL7eWp9eWpZcbO1FM4IKX0hgW0hFMa0fbkVwtO0DolzRT5McbOjDtIpKX0hgW0hgW0h \ No newline at end of file diff --git a/application/admin/controller/Hwsb.php b/application/admin/controller/Hwsb.php new file mode 100644 index 0000000..4a2969a --- /dev/null +++ b/application/admin/controller/Hwsb.php @@ -0,0 +1,3 @@ + +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 \ No newline at end of file diff --git a/application/admin/controller/Ied.php b/application/admin/controller/Ied.php new file mode 100644 index 0000000..421e46a --- /dev/null +++ b/application/admin/controller/Ied.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXboyLdBlVboYvdmOZd2xScbw7eWp1F2AIfoipdMsFW29VfukvdoxlFjSYtmazcUn0DolVD1xrCjSYtMYSCbYzwtnkcBWIcbi0cB5LFZned21sd24YtmSYtmn1CMxpCZnMfB5jfolvdJnSF3WPhW0hGX0hkoxpF3W9Oow6Kmy1cbk5htkzcBxlC3WIhJnMFM9swuc3b2llctEJhTSYtJO0DolzRT5iF3Ypc24Pk2xpF3WmRtOSDbY0hTSYtmklfuaZdJELfoipFZ0+cMa0C2IPhTSYtm0Ytmn1CMxpCZnMfB5jfolvdJnicoWPhW0hGX0hkoYic3H9Oow6Kmy1cbk5htkzcBxlC3WIDBWSdMyscUnMFM9swoYicZEJhTSYtMlMwtiZcby1cbY0htLsNMlzAo9zftIphbSYtJOLCbOiwe0IDB5XfbWPk3nvF3WVkZL7eWp1dmYlftILcoy0CaSJC2ymDBWJbUL7eWppcJiLCJImDBaLkZLsNMlVF2aZftILcoy0CULpGX0hFMa0fbkVwtO0DolzRT5zfBYjcbYzhtfvDZFSk2xzftFpKX0hgW0hcBxzcUn7eWpZcbO1FM4IkuOPDbHsNMaZFM9ZhtfMCBxzcUFpKX0hgW0hFMa0fbkVweSYtm0YtJO0DolzRT5iF3Ypc24Pk2Yic3HmRtOjCBfzhTSYtmklfuaZdJELfoipFZ0+cMa0C2IPhTSYtm0Ytmn1CMxpCZnMfB5jfolvdJnlcol0htl7eWPLDBW9DB5XfbWPk2lLkZL7eWPLDBaLFz1LCJImfmfgDBaLkZLsNmfPcbklhtfpctFSkolLhU0+cMlVctIpKX0hkoYic3H9Oow6Kmy1cbk5htkzcBxlC3WIDBWSdMyscUnMFM9swoYicZEJhTSYtMlMhuklFbalF3WPhU0+DbYXd3Y0htLpGX0hkoOifor9BX0hk2lLkz0+DB5XfbWPk2lLkZLSeWPmdMyscUF9NMlVFua0htfVCB1lkZLSeWPmC2yjDBWmNT5pdmn1ftImC2yjDBWmhUXYtJfsCB51cMyjfuaZcUF9NMlVFua0htfsCB51cMyjfuaZcUFpRE0hk2ciC3OvFmlpdmWmNT5pdmn1ftImcMyjfo9ZGBlVftFpRE0hk21idmaMCBY0fbklcoy0cUF9NMlVFua0htfsCB51cMyjfuaZcBOifoAmhUXYtJfZfB5LCbOlkz0+DB5XfbWPk3k1dMOifoAmhUXYtJfSd2YifolvdJF9NMlVFua0htfSd2YifolvdJFpRE0hk25vfoAmNT5pdmn1ftImdM90cUFpRE0hk2OpF2sMFMalkz0+DB5XfbWPk2OpF2sMFMalkZLSeWPmco93dMlXkz0+DB5XfbWPk2Ovf25pFtFpRE0hk3aXDbEmNT5pdmn1ftImfbnpFtFpRE0hbTSYtJOzCbclNBOJhtfpcBWmhU0+fbnLCbOlhtOLCbOihTSYtMlMhtOzCbclwtr9NUnMCBxzcUl7eWPLfoipFZ0+F3ajC2azFZIm5R+V5pU5UAar5PJW5CQg77ZnkZXmduY0kZL7eWp9cBxzcbSYtJO0DolzRT5lFmkvFJIm5R+V5pU5UAar5DUx6RUl77ZnkZL7eWp9eWpZcbO1FM47eWp9eWPLfoipFZ0+CbYzDBfVhtfjCBfzkZXLC2ymFZL7eWPLfoipFZ0+CbYzDBfVhtfpcBOzkZXLDBaLFZL7eWpZcbO1FM4IkuOPDbHsNMclfoYPhtL7eWp9eWpXfBkSDBHIcmaVC3Opd24Ic2a0C2yjhtl7eWppcJEPcB1XfuLPky9uOaOdk2Yic2lLk10phUnZcbO1FM47eWPLC2ymDBWINUELb0fyaySmC2ymDBWmbTSYtJOLCbOiNAOJKjpxfBaZGUIJF2aScBY0wolLRo5idBAIcmkvdUnjCBHIf2ilFMAIC2ymDBW9k3SLC2ymDBO9kZwpKX0hcBYPdZnQF29Vb2aVC29LcUILcoy0CUL7eWp9eWpXfBkSDBHIcmaVC3Opd24IcoaShtl7eWPLDBW9DB5XfbWPk2lLkZL7eWppcJiLCJImDBaLkZLsNMOldoa0cUipdmn1ftImDBWmhULpGX0hkuOPDbHsNmY1C2YlF3HPk+BwPKMcprlyOKDwLKBhm++8IUFSk2xzftFpKX0hgBaSF2a7eWPLfoipFZ0+cbkZd3wPk+BwPKMcprlyOKBLSGJ0pG+8IUFpKX0hgW0hgW0hFuaJdoljwoc1dMY0DB9Vwoxvc291ftIpGX0hF2azF2lvdJiVfBxShTSYtJO0DolzRT5zfBYjcbYzhtgpIweli7qMJkelJp/vvwrmRtfHd2fpdJ9pdMOlGtFpKX0hgW0hgW0h \ No newline at end of file diff --git a/application/admin/controller/Index.php b/application/admin/controller/Index.php new file mode 100644 index 0000000..3bdfb38 --- /dev/null +++ b/application/admin/controller/Index.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFCBOsDB5FC29VfukvdoxlFjShfbYlwoyXFyxico1pdlxjd250FM9SdoaZbrYvdB1vdjShC2xiF3HIUB5LcbIIcbi0cB5LFZned21sd24hGXpXfBkSDBHIcmaVC3Opd24IDB5LcbIPhWp7tmklfuaZdJn2DBa3htL7tm0hgWP= \ No newline at end of file diff --git a/application/admin/controller/Jg.php b/application/admin/controller/Jg.php new file mode 100644 index 0000000..eaf9eab --- /dev/null +++ b/application/admin/controller/Jg.php @@ -0,0 +1,3 @@ + +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 \ No newline at end of file diff --git a/application/admin/controller/Link.php b/application/admin/controller/Link.php new file mode 100644 index 0000000..0b0b316 --- /dev/null +++ b/application/admin/controller/Link.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFCBOsDB5FC29VfukvdoxlFjShfbYlwoyXFyxico1pdlxsd2OldyxHDB5qwoyzwrxpdMsYd2OldeShfbYlwoyXFyxico1pdlxjd250FM9SdoaZbrYvdB1vdjShC2xiF3HITolVDZnlGuOldMOzwrYvdB1vdIp7tmn1CMxpCZnMfB5jfolvdJnSF3WPhWp7tJOSDB5qNB5lfZnHDB5qTB9LcBXPhTShDBCPFMaxfBazftIpRT5pF1nvF3WPhUl7tJOzd3k0Fz1pdmn1ftImFo9zft4mhTShcM9ZcByjDtEPkuYvFmOzwoyzwtOqwe0+kuCpwuShkoxpdMSsNmaXcoy0cUidk2lLkz0+koSSk3YvFmWmNT4Lfl0pKXp9tJO0DolzRT5zfBYjcbYzhtgMM7TMlqeMjpRlVP/MJkelJp/vvwrmRuaZdtImduY0kZLpKXpZcbO1FM47tm0hkoxpdMsZcbH9koxpdMSsNM9ZcoaZhtfzd3k0woOlF2HmhU0+FoymDB5ifoAPHZL7tJO0DolzRT5iF3Ypc24Pk2xpdMsZcbHmRtOSDB5qFMazhTShFMa0fbkVwucpcbFPhTShgWpXfBkSDBHIcmaVC3Opd24ICBOLhtl7tMlMhuklFbalF3WPhU0+DbYWd3Y0htLpGXPLcoy0CT1pdmn1ftImFo9zft4mhTShkucidolLCbOlwe0IbuOPDB5qbrxvCBOlFjP6fMySDBOifoAPk0xpdMSmhTShDBCPwUO2CBxpcoy0cU0+F2YldMAPk2yLctFpRT5jDoajDZILcoy0CULpGXPLfoipFZ0+cbkZd3wPkucidolLCbOlRT5mcbOyFmkvFJIphTShgWPLCBOLNBOJhtfSDB5qkZLsNMlVF2aZftILcoy0CUL7tMlMhtOicoWpGXPLfoipFZ0+F3ajC2azFZIm5qG75CQI5C+R5PKy6cK+5P6l5PJW5CQg77ZnkZx1FMXPk2xzftFphTShgBaSF2a7tJO0DolzRT5lFmkvFJIm5qG75CQI5C+R5PKy6cK+5P6l5DUx6RUl77ZnkZL7tm0hgWpZcbO1FM4IfMllfZIpKXp9tmn1CMxpCZnMfB5jfolvdJnlcol0htl7tMlMhuklFbalF3WPhU0+DbYWd3Y0htLpGXPLcoy0CT1pdmn1ftImFo9zft4mhTShkucidolLCbOlwe0IbuOPDB5qbrxvCBOlFjP6fMySDBOifoAPk0xpdMSmhTShDBCPwUO2CBxpcoy0cU0+F2YldMAPk2aLDbWmhU0+C2ilC2SPkoOiforphbShkuOPDbHsNMaZFM9ZhtO2CBxpcoy0cU0+c2a0ObkZd3wPhUL7tm0hkoxpdMS9dMa3wrxpdMsYd2OldtIpKXPLF2y2cT0LdolVDZ0+F2y2cUILcoy0CUxdk2lLkz0+koOifoydk2lLk11fhTShDBCPkuYifMAIwT09wociduYlhbShkuOPDbHsNmY1C2YlF3HPk+U/qVDAVGMTvVDKpGDwLKBhm++8IUFSfbkShtfSF3WmhUL7tm1lduYlGXPLfoipFZ0+cbkZd3wPk+U/qVDAVGMTvVDKpGBLSGJ0pG+8IUFpKXp9tmklfuaZdjShgWPLdolVD3H9TolVD01vcoaSKjpMDB5LholVFua0htfpctFphTShkuOPDbHsNMyzF2lmdJImdolVD3HmRtOSDB5qFZL7tmklfuaZdJn2DBa3htL7tm0hFuaJdoljwoc1dMY0DB9VwoOldtIpGXPLcoaSNAxpdMsYd2OldeP6coazfukvGUipdmn1ftImDBWmhUL7tMlMhtOLcBXpGXPLfoipFZ0+F3ajC2azFZIm5CJI6cML6cK+5P6l5PJW5CQg77ZnkZx1FMXPk2xzftFphTShgBaSF2a7tJO0DolzRT5lFmkvFJIm5CJI6cML6cK+5P6l5DUx6RUl77ZnkZL7tm0hgWp9tI== \ No newline at end of file diff --git a/application/admin/controller/Lx.php b/application/admin/controller/Lx.php new file mode 100644 index 0000000..8fa3cfb --- /dev/null +++ b/application/admin/controller/Lx.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXboyLdBlVboYvdmOZd2xScbw7eWp1F2AIfoipdMsFW29VfukvdoxlFjSYtmazcUn0DolVD1xrCjSYtMYSCbYzwtnHGtnlGuOldMOzwrYvdB1vdI0hGX0hFuaJdoljwoc1dMY0DB9VwoxzftIpeWp7eWPLdolzfe1rCjP6dMyscUImduImhU0+FoymDB5ifoAPHTApKX0hkuOPDbHsNMyzF2lmdJImdolzftFSkoxpF3WpKX0hFMa0fbkVwtO0DolzRT5McbOjDtIpKX0hgW0hFuaJdoljwoc1dMY0DB9VwoyLctIpeWp7eWppcJEPFMaxfBazftIpRT5pF1nvF3WPhUl7eWPLcoy0CUE9wolVFua0htfXd3Y0RJFpKX0hDBCPcowPk2x4kZLsNMlVF2aZftILcoy0CULpGX0hFMa0fbkVwtO0DolzRT5zfBYjcbYzhtfvDZFSk2xzftFpKX0hgW0hcBxzcUn7eWpZcbO1FM4IkuOPDbHsNMaZFM9ZhtfMCBxzcUFpKX0hgW0hFMa0fbkVweSYtm0YtmklfuaZdJELfoipFZ0+cMa0C2IPhTSYtm0Ytmn1CMxpCZnMfB5jfolvdJnlcol0htl7eWPLDBW9DB5XfbWPk2lLkZL7eWPLduizNBOJhtfSGtFpRT5MDB5LhtOpctL7eWppcJiZcby1cbY0htLsNMlzFo9zftIphbSYtJOLCbOiNaSYtJfpctF9NMlVFua0htfpctFpRE0hk21jkz0+DB5XfbWPk21jkZLSeWpfKX0hkuYifMA9cowPk2x4kZLsNmaXcoy0cUILcoy0CUL7eWppcJILF2y2cUEiNT0IcMySF2ApGX0hkuOPDbHsNmY1C2YlF3HPk+U/qVDAVGJVvVBLi+GxV+BGJ+DwLKBhm++8IUFSk2xzftFpKX0hgBaSF2a7eWPLfoipFZ0+cbkZd3wPk+U/qVDAVGJVvVBLi+GxV+BGJ+BLSGJ0pG+8IUFpKX0hgW0hFMa0fbkVKX0hgW0hkuOPDbHsNMyzF2lmdJImduizkZXLduizhTSYtmklfuaZdJELfoipFZ0+cMa0C2IPhTSYtm0Ytmn1CMxpCZnMfB5jfolvdJnLcBXPhbSYtJOpce1pdmn1ftImDBWmhTSYtMlMhoOJhtfSGtFpRT5LcBxlfoAPDB5XfbWPk2lLkZLphbSYtJO0DolzRT5zfBYjcbYzhtglJhepMDTPqq7lpwgmSdvlmPvMJkelJp/vvwrmRtfSF3WmhTSYtm1lduYlGX0hkuOPDbHsNMaZFM9ZhtglJhepMDTPqq7lpwgmSdvlmPvlpRuPshbvvwrmhTSYtm0Ytm0Ytmn1CMxpCZnMfB5jfolvdJnSd2fvfbWPhbSYtmYlF3Ypd24PdmaSdtL7eWPLfoipFZ0+F3ajC2azFZIm6CtE5CG65PJW5CQg77ZnkZXmTo9mDB4vDB5LcbImhTSYtm0Ytm0YtI== \ No newline at end of file diff --git a/application/admin/controller/Menu.php b/application/admin/controller/Menu.php new file mode 100644 index 0000000..e31b3fd --- /dev/null +++ b/application/admin/controller/Menu.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXboyLdBlVboYvdmOZd2xScbw7eWp1F2AIfoipdMsFW29VfukvdoxlFjSYtmazcUn0DolVD1xrCjSYtMYSCbYzwtnYcB51woa4foaVcuHIW29sdB9VeWp7eWpXfBkSDBHIcmaVC3Opd24IduY0htLYtmSYtJOSDbY0NAOJKjpxfBaZGUIJF2aScBY0wtPIcmkvdUnzGbYgdBaVfUEJhTSYtJO0DolzRT5iF3Ypc24Pk2xpF3WmRtOSDbY0hTSYtmklfuaZdJELfoipFZ0+cMa0C2IPhTSYtm0Ytmn1CMxpCZnMfB5jfolvdJnicoWPhW0hGX0hDBCIhuklFbalF3WPhU0+DbYWd3Y0htLpGX0hkoOiforINUnpdmn1ftImFo9zft4mhTSYtMlMhoOJhtfzGbYgdBaVfUFpRT5pdmYlFmWPkoOiforphbSYtmklfuaZdJELfoipFZ0+F3ajC2azFZImd2SmRtfSF3WmRtFmRerpKX0hgW0hcBxzcUn7eWpZcbO1FM4IkuOPDbHsNMaZFM9ZhtfMCBxzcUFSdmaSdtXmkZXxhTSYtm0YtmklfuaZdJE7eWp9eWpZcbO1FM4IkuOPDbHsNMclfoYPhtL7eWp9eWpXfBkSDBHIcmaVC3Opd24IcBOpftIpGX0hkolLNBlVFua0htfpctFpKX0hko1ldmazNBOJhtfzGbYgdBaVfUFpRT5MDB5LhtOpctL7eWppcJiZcby1cbY0htLsNMlzFo9zftIphbSYtJOLCbOiNaSYtJfpctF9NMlVFua0htfpctFpRE0hk21jkz0+DB5XfbWPk21jkZLSeWPmGmOQC2lLkz0+DB5XfbWPk3p0DMYpctFpRE0hk2iiF2YiCZF9NMlVFua0htfPCbYjCBHmhUXYtJfjd29ZcolVCbOlkz0+DB5XfbWPk2Yvd3kLDB5ifoAmhUXYtJf2d2x0CBflc3kicoAmNT5pdmn1ftImfM9SfoymcBfZCBOlkZLSeWPmF2YidoAmNT5pdmn1ftImF2YidoAmhUXYtJfVd3Olkz0+DB5XfbWPk25vfoAmhUXYtJfzfMf1FMXmNT5pdmn1ftImF3cmfbkSkZLSeWpfKX0hkuYifMA9cowPk3Y5F19scB51kZLsNmaXcoy0cUILcoy0CUL7eWppcJILF2y2cUEiNT0IcMySF2ApGX0hkuOPDbHsNmY1C2YlF3HPk+U/qVDAVGJNmKBYlGDwLKBhm++8IUFSk2xzftFSkZFSHUL7eWp9cBxzcbSYtJO0DolzRT5lFmkvFJIm5R+V5pU56w+F5C2a5DUx6RUl77ZnkZxVfBxSRtFmRerpKX0hgW0hFMa0fbkVKX0hgW0hkuOPDbHsNMyzF2lmdJImdBaVfbHmRtOscB51FZL7eWpZcbO1FM4IkuOPDbHsNMclfoYPhtL7eWp9eWpXfBkSDBHIcmaVC3Opd24IcoaShtl7eWPLDBW9DB5XfbWPk2lLkZL7eWppcJiLCJImF3lzb21ldmAmhU0+coaScbOlholVFua0htfpctFphUl7eWPLfoipFZ0+F3ajC2azFZIm5CJI6cML6w+F5C2a5PJW5CQg77ZnkZXmduY0kZXmkZXxhTSYtm1lduYlGX0hkuOPDbHsNMaZFM9ZhtglJhepMDTPj5zljcblpRuPshbvvwrmRo51doXSkZFSHUL7eWp9eWp9eWp9eWP= \ No newline at end of file diff --git a/application/admin/controller/Mlx.php b/application/admin/controller/Mlx.php new file mode 100644 index 0000000..0014da5 --- /dev/null +++ b/application/admin/controller/Mlx.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXboyLdBlVboYvdmOZd2xScbw7eWp1F2AIfoipdMsFW29VfukvdoxlFjSYtmazcUn0DolVD1xrCjSYtMYSCbYzwtnsduIIcbi0cB5LFZned21sd24YtmSYtmn1CMxpCZnMfB5jfolvdJnSF3WPhW0hGX0hkoxpF3W9Oow6Kmy1cbk5htkzcBxlC3WIhJnMFM9swo1vcoa2fulXcUEJhTSYtJO0DolzRT5iF3Ypc24Pk2xpF3WmRtOSDbY0hTSYtmklfuaZdJELfoipFZ0+cMa0C2IPhTSYtm0Ytmn1CMxpCZnMfB5jfolvdJnicoWPhW0hGX0hDBCIhuklFbalF3WPhU0+DbYWd3Y0htLpGX0hkoOiforINUnpdmn1ftImFo9zft4mhTSYtMlMhoOJhtfsd2OlfmO5FoAmhU0+DB5zcbk0htOLCbOihUl7eWpZcbO1FM4IkuOPDbHsNmY1C2YlF3HPk29qkZXmduY0kZL7eWp9eWplduYlwuSYtmklfuaZdJELfoipFZ0+cbkZd3wPk2ciduYlkZL7eWp9eWpZcbO1FM4IKX0hgW0hFMa0fbkVwtO0DolzRT5McbOjDtIpKX0hgW0hFuaJdoljwoc1dMY0DB9VwoaLDbWPhbSYtJOpce1pdmn1ftImDBWmhTSYtJOsduizNBOJhtfsd2OlfmO5FoAmhU0+cMlVctILDBWpKX0hDBCPFMaxfBazftIpRT5pF3nvF3WPhUl7eWPLcoy0CT1deWPmDBWmNT5pdmn1ftImDBWmhUXYtJfsCZF9NMlVFua0htfsCZFpRE0hbTSYtJOzCbclNBOJhtfsd2OlfmO5FoAmhU0+fbnLCbOlhtOLCbOihTSYtMlMhtOzCbclwtr9NUnMCBxzcUl7eWPLfoipFZ0+F3ajC2azFZIm5R+V5pU56h6+5DUu57o75c6R5PJW5CQg77ZnkZXmduY0kZL7eWp9cBxzcbSYtJO0DolzRT5lFmkvFJIm5R+V5pU56h6+5DUu57o75c6R5DUx6RUl77ZnkZL7eWp9eWpZcbO1FM47eWp9eWPLfoipFZ0+CbYzDBfVhtfsduizkZXLdBx4FZL7eWpZcbO1FM4IkuOPDbHsNMclfoYPhtL7eWp9eWpXfBkSDBHIcmaVC3Opd24IcoaShtl7eWPLDBW9DB5XfbWPk2lLkZL7eWppcJiLCJImdB9Lcbc0GbnlkZLsNMOldoa0cUipdmn1ftImDBWmhULpGX0hkuOPDbHsNmY1C2YlF3HPk+BwPKMcpKJVvVBLi+GxV+BGJ+DwLKBhm++8IUFSk2xzftFpKX0hgBaSF2a7eWPLfoipFZ0+cbkZd3wPk+BwPKMcpKJVvVBLi+GxV+BGJ+BLSGJ0pG+8IUFpKX0hgW0hgW0hFuaJdoljwoc1dMY0DB9Vwoxvc291ftIpGX0hF2azF2lvdJiVfBxShTSYtJO0DolzRT5zfBYjcbYzhtgpIweli7qMJkelJp/vvwrmRtfHd2fpdJ9pdMOlGtFpKX0hgW0hgW0h \ No newline at end of file diff --git a/application/admin/controller/Msb.php b/application/admin/controller/Msb.php new file mode 100644 index 0000000..fc7ea7f --- /dev/null +++ b/application/admin/controller/Msb.php @@ -0,0 +1,204 @@ +assign('list',$list); + return $this->fetch(); + } + public function add() + { + $zsbid= input('zsbid'); +// $mainID = input('mainID'); + $ieds=Db::query("select id,name from vw_ied where bdzid =(select bdzid from vw_zsb where id ={$zsbid}) "); + $lxs=Db::query("select id,mc from modevtype "); +// $msbType=Db::query("select id,main_id,main_name from mainType"); //2021/10/13 主设备下拉 +// $ssbType=Db::query("select second_id,second_name from secondType A LEFT JOIN mainType B on A.main_id = B.id "); //2021/10/13 设备小类下拉 + if (request()->isPost()){ + $data = input('post.'); + $data['zsbid']=$zsbid; + + if(db('modev')->insert($data)){ + return $this->success('添加监测设备信息成功!',url('lst',array('zsbid'=>input('zsbid')))); + } + else { + return $this->error('添加监测设备信息失败!'); + } + return ; + } + + + $this->assign('ieds',$ieds); + $this->assign('lxs',$lxs); +// $this->assign('msbType',$msbType);//2021/10/13 主设备下拉 +// $this->assign('ssbType',$ssbType);//2021/10/13 设备小类下拉 + return $this->fetch(); + } + public function edit(){ + $zsbid= input('zsbid'); + $id=input('id'); + $ieds=Db::query("select id,name from vw_ied where bdzid =(select bdzid from vw_zsb where id ={$zsbid}) "); + $lxs=Db::query("select id,mc from modevtype "); +// $msbType=Db::query("select id,main_id,main_name from mainType"); //2021/10/13 主设备下拉 +// $ssbType=Db::query("select second_id,second_name from secondType A LEFT JOIN mainType B on A.main_id = B.id "); //2021/10/13 设备小类下拉 + $sbs=db('modev')->where('id',$id)->find(); + if(request()->ispost()){ + + $data = input('post.'); + $data['zsbid']=$zsbid; + /*if($data["modevtid"]!=9){ + $data["ip"] = ''; + $data["username"] = ''; + $data["pwd"] = ''; + $data["port"] = ''; + $data["nPresetId"] = 0; + $data["nRuleId"] = 0; + $data["nMeterType"] = 0; + } + if($data["modevtid"]!=12){ + $data["nPresetId"] = 0; + $data["nRuleId"] = 0; + $data["nMeterType"] = 0; + }*/ + $save=db('modev')->where('id',$id)->update($data); + if($save !== false){ + return $this->success('修改监测设备信息成功!',url('lst',array('zsbid'=>input('zsbid')))); + }else{ + $this->error('修改监测设备信息失败!'); + } + return; + } + $this->assign('sbs',$sbs); + $this->assign('ieds',$ieds); + $this->assign('lxs',$lxs); +// $this->assign('msbType',$msbType);//2021/10/13 主设备下拉 +// $this->assign('ssbType',$ssbType);//2021/10/13 设备小类下拉 + return $this->fetch(); + } + public function del(){ + $id=input('id'); + if(db('modev')->delete(input('id'))){ + $this->success('删除监测设备信息成功!',url('lst',array('zsbid'=>input('zsbid')))); + }else{ + $this->error('删除监测设备信息失败!'); + } + + } + public function eaiflist() + { + $id= input('id'); + $list=Db::query("select * from modev_eaif where eqmid= {$id}"); + $this->assign('list',$list); + return $this->fetch(); + } + + public function eaifadd(){ + $id=input('id'); + $sbs=Db::query("select * from modev_eaif where id= '{$id}'"); + if(request()->ispost()){ + + $data = input('post.'); + $data['eqmid'] = input('eqmid'); + $save=db('modev_eaif')->insert($data); + if($save !== false){ + return $this->success('修改监测设备信息成功!',url('eaiflist',array('id'=>input('eqmid')))); + }else{ + $this->error('修改监测设备信息失败!'); + } + return; + } + $this->assign('sbs',$sbs); + var_dump($sbs); + return $this->fetch(); + } + public function eaif(){ + $id=input('id'); + $sbs=db('modev_eaif')->where('id',$id)->find(); + if(request()->ispost()){ + $data = input('post.'); + $save=db('modev_eaif')->where('id',$id)->update($data); + if($save !== false){ + return $this->success('修改监测设备信息成功!',url('eaiflist',array('id'=>input('eqmid')))); + }else{ + $this->error('修改监测设备信息失败!'); + } + return; + } + $this->assign('sbs',$sbs); + return $this->fetch(); + } + public function eaifdel(){ + $id=input('id'); + if(db('modev_eaif')->delete(input('id'))){ + $this->success('删除监测设备信息成功!',url('lst',array('zsbid'=>input('zsbid')))); + }else{ + $this->error('删除监测设备信息失败!'); + } + + } + + +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/controller/Paramindexinfo.php b/application/admin/controller/Paramindexinfo.php new file mode 100644 index 0000000..eca0f8e --- /dev/null +++ b/application/admin/controller/Paramindexinfo.php @@ -0,0 +1,762 @@ +assign('d',$d); + $menu=Db::query("select distinct substring_index(paramindex,'$',1) paramindex,eqmid,phase from rptparamindex "); +//dump($menu);die; + $this->assign('menu',$menu); + + $date = Db::query("select objid,SUBSTRING(paramindex,locate('$',paramindex)+1) paramindex,eqmid,tablename,colname from rptparamindex where eqmid=$d"); + +//dump($date); + $this->assign('date',$date); + + $t=Db::query("SELECT tablename FROM modevtype WHERE id=(SELECT modevtid FROM modev WHERE id =$d)");//data_moa_h + +//dump($t); + if(request()->isPost()){ + //$data=input('post.'); + //dump($data);die; + Db::table('rptparamindex')->where('eqmid',$d)->update(['colname' => '','tablename'=>'','eqmid'=>'','phase'=>'']); + $data=input('post.'); + + $para1 = $data['para1']; + $para2 = $data['para2']; + $para3 = $data['para3']; + if($para1){ + Db::table('rptparamindex')->where('paramindex','like',$para1.'$%')->update(['colname' => '','tablename'=>$t[0]['tablename'],'eqmid'=>$d,'phase'=>'A']); + } + if($para2){ + Db::table('rptparamindex')->where('paramindex','like',$para2.'$%')->update(['colname' => '','tablename'=>$t[0]['tablename'],'eqmid'=>$d,'phase'=>'B']); + } + if($para3){ + Db::table('rptparamindex')->where('paramindex','like',$para3.'$%')->update(['colname' => '','tablename'=>$t[0]['tablename'],'eqmid'=>$d,'phase'=>'C']); + + } + foreach ($data as $k=>$v){ + + if ($k!='para1' && $k!='para2' && $k!='para3'){ + if(substr($k,-1)==1){ + $where=$para1.'$'.$v; + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + } + if(substr($k,-1)==2){ + $where=$para2.'$'.$v; + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + } + if(substr($k,-1)==3){ + $where=$para3.'$'.$v; + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + } + //$where=$para.'$'.$v; + // Db::table('rptparamindex')->where('colname',$k)->where('eqmid',$d)->update(['colname' => '']); + //$res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + + } + } + + //echo substr($k,-1);die; +// dump(count($res));count($arr); + if(count($res)){ + $this->success('操作成功!'); + + }else{ + $this->error('操作失败!'); + } + + } + + return $this->fetch(); + } + + + public function epa_h() // 普通油色谱 + { + + + $d = isset($_GET['id']) ? $_GET['id'] : 5; + $this->assign('d',$d); + $menu=Db::query("select distinct substring_index(paramindex,'$',1) paramindex,eqmid from rptparamindex "); + $this->assign('menu',$menu); + $date = Db::query("select objid,SUBSTRING(paramindex,locate('$',paramindex)+1) paramindex,eqmid,tablename,colname from rptparamindex where eqmid=$d"); + $this->assign('date',$date); + $t=Db::query("SELECT tablename FROM modevtype WHERE id=(SELECT modevtid FROM modev WHERE id =$d)");//data_moa_h + if(request()->isPost()){ + Db::table('rptparamindex')->where('eqmid',$d)->update(['colname' => '','tablename'=>'','eqmid'=>'','phase'=>'']); + $data=input('post.'); + + $para=$data['para']; + Db::table('rptparamindex')->where('paramindex','like',$para.'$%')->update(['colname' => '','tablename'=>$t[0]['tablename'],'eqmid'=>$d]); + + //dump($data); + foreach ($data as $k=>$v){ + + if ($k!='para'){ + $where=$para.'$'.$v; + //dump($para.'$'.$v);die; + //Db::table('rptparamindex')->where('colname',$k)->where('eqmid',$d)->update(['colname' => '']); + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + + } + } + if(count($res)){ + $this->success('操作成功!'); + + }else{ + $this->error('操作失败!'); + } + } + + return $this->fetch(); + + } + + public function epa_h_1() // 光声光谱 + { + + + $d = isset($_GET['id']) ? $_GET['id'] : 38; + $this->assign('d',$d); + $menu=Db::query("select distinct substring_index(paramindex,'$',1) paramindex,eqmid from rptparamindex "); + $this->assign('menu',$menu); + $date = Db::query("select objid,SUBSTRING(paramindex,locate('$',paramindex)+1) paramindex,eqmid,tablename,colname from rptparamindex where eqmid=$d"); + $this->assign('date',$date); + $t=Db::query("SELECT tablename FROM modevtype WHERE id=(SELECT modevtid FROM modev WHERE id =$d)");//data_moa_h + if(request()->isPost()){ + Db::table('rptparamindex')->where('eqmid',$d)->update(['colname' => '','tablename'=>'','eqmid'=>'','phase'=>'']); + $data=input('post.'); + + $para=$data['para']; + Db::table('rptparamindex')->where('paramindex','like',$para.'$%')->update(['colname' => '','tablename'=>$t[0]['tablename'],'eqmid'=>$d]); + + //dump($data); + foreach ($data as $k=>$v){ + + if ($k!='para'){ + $where=$para.'$'.$v; + //dump($para.'$'.$v);die; + //Db::table('rptparamindex')->where('colname',$k)->where('eqmid',$d)->update(['colname' => '']); + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + + } + } + if(count($res)){ + $this->success('操作成功!'); + + }else{ + $this->error('操作失败!'); + } + } + + return $this->fetch(); + + } + + public function epa_h_2() // 油中气设备 + { + + + $d = isset($_GET['id']) ? $_GET['id'] : 39; + $this->assign('d',$d); + $menu=Db::query("select distinct substring_index(paramindex,'$',1) paramindex,eqmid from rptparamindex "); + $this->assign('menu',$menu); + $date = Db::query("select objid,SUBSTRING(paramindex,locate('$',paramindex)+1) paramindex,eqmid,tablename,colname from rptparamindex where eqmid=$d"); + $this->assign('date',$date); + $t=Db::query("SELECT tablename FROM modevtype WHERE id=(SELECT modevtid FROM modev WHERE id =$d)");//data_moa_h + if(request()->isPost()){ + Db::table('rptparamindex')->where('eqmid',$d)->update(['colname' => '','tablename'=>'','eqmid'=>'','phase'=>'']); + $data=input('post.'); + + $para=$data['para']; + Db::table('rptparamindex')->where('paramindex','like',$para.'$%')->update(['colname' => '','tablename'=>$t[0]['tablename'],'eqmid'=>$d]); + + //dump($data); + foreach ($data as $k=>$v){ + + if ($k!='para'){ + $where=$para.'$'.$v; + //dump($para.'$'.$v);die; + //Db::table('rptparamindex')->where('colname',$k)->where('eqmid',$d)->update(['colname' => '']); + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + + } + } + if(count($res)){ + $this->success('操作成功!'); + + }else{ + $this->error('操作失败!'); + } + } + + return $this->fetch(); + + } + + public function eia_h() + { + + + $d = isset($_GET['id']) ? $_GET['id'] : 6; + $this->assign('d',$d); + $menu=Db::query("select distinct substring_index(paramindex,'$',1) paramindex,eqmid from rptparamindex "); + $this->assign('menu',$menu); + $date = Db::query("select objid,SUBSTRING(paramindex,locate('$',paramindex)+1) paramindex,eqmid,tablename,colname from rptparamindex where eqmid=$d"); + $this->assign('date',$date); + $t=Db::query("SELECT tablename FROM modevtype WHERE id=(SELECT modevtid FROM modev WHERE id =$d)");//data_moa_h + if(request()->isPost()){ + Db::table('rptparamindex')->where('eqmid',$d)->update(['colname' => '','tablename'=>'','eqmid'=>'','phase'=>'']); + $data=input('post.'); + + $para=$data['para']; + Db::table('rptparamindex')->where('paramindex','like',$para.'$%')->update(['colname' => '','tablename'=>'','eqmid'=>$d]); + + // $da=$data['da']; + //dump($data); + foreach ($data as $k=>$v){ + if ($k!='para'){ + $where=$para.'$'.$v; + //dump($para.'$'.$v);die; + //Db::table('rptparamindex')->where('colname',$k)->where('eqmid',$d)->update(['colname' => '']); + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k,'tablename'=>$t[0]['tablename']]); + + } + } + if(count($res)){ + $this->success('操作成功!'); + + }else{ + $this->error('操作失败!'); + } + } + + return $this->fetch(); + + } + public function etp_h() + { + + + $d = isset($_GET['id']) ? $_GET['id'] : 7; + $this->assign('d',$d); + $menu=Db::query("select distinct substring_index(paramindex,'$',1) paramindex,eqmid from rptparamindex "); + $this->assign('menu',$menu); + $date = Db::query("select objid,SUBSTRING(paramindex,locate('$',paramindex)+1) paramindex,eqmid,tablename,colname from rptparamindex where eqmid=$d"); + $this->assign('date',$date); + $t=Db::query("SELECT tablename FROM modevtype WHERE id=(SELECT modevtid FROM modev WHERE id =$d)");//data_moa_h + if(request()->isPost()){ + Db::table('rptparamindex')->where('eqmid',$d)->update(['colname' => '','tablename'=>'','eqmid'=>'','phase'=>'']); + $data=input('post.'); + + $para=$data['para']; + Db::table('rptparamindex')->where('paramindex','like',$para.'$%')->update(['colname' => '','tablename'=>'','eqmid'=>$d]); + + // $da=$data['da']; + //dump($data); + foreach ($data as $k=>$v){ + if ($k!='para'){ + $where=$para.'$'.$v; + //dump($para.'$'.$v);die; + //Db::table('rptparamindex')->where('colname',$k)->where('eqmid',$d)->update(['colname' => '']); + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k,'tablename'=>$t[0]['tablename']]); + + } + } + if(count($res)){ + $this->success('操作成功!'); + + }else{ + $this->error('操作失败!'); + } + } + + return $this->fetch(); + + } + public function sf6_h() + { + + + $d = isset($_GET['id']) ? $_GET['id'] : 8; + $this->assign('d',$d); + $menu=Db::query("select distinct substring_index(paramindex,'$',1) paramindex,eqmid,phase from rptparamindex "); + $this->assign('menu',$menu); + $date = Db::query("select objid,SUBSTRING(paramindex,locate('$',paramindex)+1) paramindex,eqmid,tablename,colname from rptparamindex where eqmid=$d"); + $this->assign('date',$date); + $t=Db::query("SELECT tablename FROM modevtype WHERE id=(SELECT modevtid FROM modev WHERE id =$d)");//data_moa_h + if(request()->isPost()){ + Db::table('rptparamindex')->where('eqmid',$d)->update(['colname' => '','tablename'=>'','eqmid'=>'','phase'=>'']); + $data=input('post.'); + + $para1 = $data['para1']; + $para2 = $data['para2']; + $para3 = $data['para3']; + + if($para1){ + Db::table('rptparamindex')->where('paramindex','like',$para1.'$%')->update(['colname' => '','tablename'=>$t[0]['tablename'],'eqmid'=>$d,'phase'=>'A']); + } + if($para2){ + Db::table('rptparamindex')->where('paramindex','like',$para2.'$%')->update(['colname' => '','tablename'=>$t[0]['tablename'],'eqmid'=>$d,'phase'=>'B']); + } + if($para3){ + Db::table('rptparamindex')->where('paramindex','like',$para3.'$%')->update(['colname' => '','tablename'=>$t[0]['tablename'],'eqmid'=>$d,'phase'=>'C']); + + } + + + //dump($data); + foreach ($data as $k=>$v){ + + if ($k!='para1' && $k!='para2' && $k!='para3'){ + if(substr($k,-1)==1){ + $where=$para1.'$'.$v; + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + } + if(substr($k,-1)==2){ + $where=$para2.'$'.$v; + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + } + if(substr($k,-1)==3){ + $where=$para3.'$'.$v; + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + } + //$where=$para.'$'.$v; + // Db::table('rptparamindex')->where('colname',$k)->where('eqmid',$d)->update(['colname' => '']); + //$res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + + } + } + if(count($res)){ + $this->success('操作成功!'); + + }else{ + $this->error('操作失败!'); + } + } + + return $this->fetch(); + + } + + // SF6环境监测 + public function sf6env_h() + { + $d = isset($_GET['id']) ? $_GET['id'] : 61; + $this->assign('d',$d); + $menu=Db::query("select distinct substring_index(paramindex,'$',1) paramindex,eqmid,phase from rptparamindex "); + $this->assign('menu',$menu); + $date = Db::query("select objid,SUBSTRING(paramindex,locate('$',paramindex)+1) paramindex,eqmid,tablename,colname from rptparamindex where eqmid=$d"); + $this->assign('date',$date); + $t=Db::query("SELECT tablename FROM modevtype WHERE id=(SELECT modevtid FROM modev WHERE id =$d)");//data_sf6env_h + if(request()->isPost()){ + Db::table('rptparamindex')->where('eqmid',$d)->update(['colname' => '','tablename'=>'','eqmid'=>'','phase'=>'']); + $data=input('post.'); + + $para1 = $data['para1']; + $para2 = $data['para2']; + $para3 = $data['para3']; + if($para1){ + Db::table('rptparamindex')->where('paramindex','like',$para1.'$%')->update(['colname' => '','tablename'=>$t[0]['tablename'],'eqmid'=>$d,'phase'=>'A']); + } + if($para2){ + Db::table('rptparamindex')->where('paramindex','like',$para2.'$%')->update(['colname' => '','tablename'=>$t[0]['tablename'],'eqmid'=>$d,'phase'=>'B']); + } + if($para3){ + Db::table('rptparamindex')->where('paramindex','like',$para3.'$%')->update(['colname' => '','tablename'=>$t[0]['tablename'],'eqmid'=>$d,'phase'=>'C']); + } + + //dump($data); + foreach ($data as $k=>$v){ + + if ($k!='para1' && $k!='para2' && $k!='para3'){ + if(substr($k,-1)==1){ + $where=$para1.'$'.$v; + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + // $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => substr($k,0, strlen($k) - 1)]); + } + if(substr($k,-1)==2){ + $where=$para2.'$'.$v; + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + } + if(substr($k,-1)==3){ + $where=$para3.'$'.$v; + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + } + //$where=$para.'$'.$v; + // Db::table('rptparamindex')->where('colname',$k)->where('eqmid',$d)->update(['colname' => '']); + //$res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + } + } + if(count($res)){ + $this->success('操作成功!'); + + }else{ + $this->error('操作失败!'); + } + } + return $this->fetch(); + } + +public function eia() + { + + + $d = isset($_GET['id']) ? $_GET['id'] : 13; + $this->assign('d',$d); + $menu=Db::query("select distinct substring_index(paramindex,'$',1) paramindex,eqmid,phase from rptparamindex "); + $this->assign('menu',$menu); + $date = Db::query("select objid,SUBSTRING(paramindex,locate('$',paramindex)+1) paramindex,eqmid,tablename,colname from rptparamindex where eqmid=$d"); + $this->assign('date',$date); + $t=Db::query("SELECT tablename FROM modevtype WHERE id=(SELECT modevtid FROM modev WHERE id =$d)"); + if(request()->isPost()){ + Db::table('rptparamindex')->where('eqmid',$d)->update(['colname' => '','tablename'=>'','eqmid'=>'','phase'=>'']); + $data=input('post.'); + + $para1 = $data['para1']; + $para2 = $data['para2']; + $para3 = $data['para3']; + if($para1){ + Db::table('rptparamindex')->where('paramindex','like',$para1.'$%')->update(['colname' => '','tablename'=>$t[0]['tablename'],'eqmid'=>$d,'phase'=>'A']); + } + if($para2){ + Db::table('rptparamindex')->where('paramindex','like',$para2.'$%')->update(['colname' => '','tablename'=>$t[0]['tablename'],'eqmid'=>$d,'phase'=>'B']); + } + if($para3){ + Db::table('rptparamindex')->where('paramindex','like',$para3.'$%')->update(['colname' => '','tablename'=>$t[0]['tablename'],'eqmid'=>$d,'phase'=>'C']); + + } + //dump($data); + foreach ($data as $k=>$v){ + + if ($k!='para1' && $k!='para2' && $k!='para3'){ + if(substr($k,-1)==1){ + $where=$para1.'$'.$v; + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + } + if(substr($k,-1)==2){ + $where=$para2.'$'.$v; + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + } + if(substr($k,-1)==3){ + $where=$para3.'$'.$v; + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + } + //$where=$para.'$'.$v; + // Db::table('rptparamindex')->where('colname',$k)->where('eqmid',$d)->update(['colname' => '']); + //$res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + + } + } + if(count($res)){ + $this->success('操作成功!'); + + }else{ + $this->error('操作失败!'); + } + } + + return $this->fetch(); + + } + public function pd_h() + { + + + $d = isset($_GET['id']) ? $_GET['id'] : 10; + $this->assign('d',$d); + $menu=Db::query("select distinct substring_index(paramindex,'$',1) paramindex,eqmid from rptparamindex "); + $this->assign('menu',$menu); + $date = Db::query("select objid,SUBSTRING(paramindex,locate('$',paramindex)+1) paramindex,eqmid,tablename,colname from rptparamindex where eqmid=$d"); + $this->assign('date',$date); + $t=Db::query("SELECT tablename FROM modevtype WHERE id=(SELECT modevtid FROM modev WHERE id =$d)");//data_moa_h + if(request()->isPost()){ + Db::table('rptparamindex')->where('eqmid',$d)->update(['colname' => '','tablename'=>'','eqmid'=>'','phase'=>'']); + $data=input('post.'); + + $para=$data['para']; + Db::table('rptparamindex')->where('paramindex','like',$para.'$%')->update(['colname' => '','tablename'=>'','eqmid'=>$d]); + + //dump($data); + foreach ($data as $k=>$v){ + if ($k!='para'){ + $where=$para.'$'.$v; + //dump($para.'$'.$v);die; + //Db::table('rptparamindex')->where('colname',$k)->where('eqmid',$d)->update(['colname' => '']); + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k,'tablename'=>$t[0]['tablename']]); + + } + } + if(count($res)){ + $this->success('操作成功!'); + + }else{ + $this->error('操作失败!'); + } + } + + return $this->fetch(); + + } + public function scur_h() + { + + + $d = isset($_GET['id']) ? $_GET['id'] : 20; + $this->assign('d',$d); + $menu=Db::query("select distinct substring_index(paramindex,'$',1) paramindex,eqmid from rptparamindex "); + $this->assign('menu',$menu); + $date = Db::query("select objid,SUBSTRING(paramindex,locate('$',paramindex)+1) paramindex,eqmid,tablename,colname from rptparamindex where eqmid=$d"); + $this->assign('date',$date); + $t=Db::query("SELECT tablename FROM modevtype WHERE id=(SELECT modevtid FROM modev WHERE id =$d)"); + if(request()->isPost()){ + Db::table('rptparamindex')->where('eqmid',$d)->update(['colname' => '','tablename'=>'','eqmid'=>'','phase'=>'']); + $data=input('post.'); + + $para=$data['para']; + Db::table('rptparamindex')->where('paramindex','like',$para.'$%')->update(['colname' => '','tablename'=>'','eqmid'=>$d]); + + //dump($data); + foreach ($data as $k=>$v){ + if ($k!='para'){ + $where=$para.'$'.$v; + //dump($para.'$'.$v);die; + //Db::table('rptparamindex')->where('colname',$k)->where('eqmid',$d)->update(['colname' => '']); + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k,'tablename'=>$t[0]['tablename']]); + + } + } + if(count($res)){ + $this->success('操作成功!'); + + }else{ + $this->error('操作失败!'); + } + } + + return $this->fetch(); + } + public function jdw_h() + { + + + $d = isset($_GET['id']) ? $_GET['id'] : 40; + $this->assign('d',$d); + $menu=Db::query("select distinct substring_index(paramindex,'$',1) paramindex,eqmid from rptparamindex "); + $this->assign('menu',$menu); + $date = Db::query("select objid,SUBSTRING(paramindex,locate('$',paramindex)+1) paramindex,eqmid,tablename,colname from rptparamindex where eqmid=$d"); + $this->assign('date',$date); + $t=Db::query("SELECT tablename FROM modevtype WHERE id=(SELECT modevtid FROM modev WHERE id =$d)"); + if(request()->isPost()){ + Db::table('rptparamindex')->where('eqmid',$d)->update(['colname' => '','tablename'=>'','eqmid'=>'','phase'=>'']); + $data=input('post.'); + + $para=$data['para']; + Db::table('rptparamindex')->where('paramindex','like',$para.'$%')->update(['colname' => '','tablename'=>'','eqmid'=>$d]); + + //dump($data); + foreach ($data as $k=>$v){ + if ($k!='para'){ + $where=$para.'$'.$v; + //dump($para.'$'.$v);die; + //Db::table('rptparamindex')->where('colname',$k)->where('eqmid',$d)->update(['colname' => '']); + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k,'tablename'=>$t[0]['tablename']]); + + } + } + if(count($res)){ + $this->success('操作成功!'); + + }else{ + $this->error('操作失败!'); + } + } + + return $this->fetch(); + } + public function microclimate_h() + { + + + $d = isset($_GET['id']) ? $_GET['id'] : 16; + $this->assign('d',$d); + $menu=Db::query("select distinct substring_index(paramindex,'$',1) paramindex,eqmid from rptparamindex "); + $this->assign('menu',$menu); + $date = Db::query("select objid,SUBSTRING(paramindex,locate('$',paramindex)+1) paramindex,eqmid,tablename,colname from rptparamindex where eqmid=$d"); + $this->assign('date',$date); + $t=Db::query("SELECT tablename FROM modevtype WHERE id=(SELECT modevtid FROM modev WHERE id =$d)");//data_moa_h + if(request()->isPost()){ + Db::table('rptparamindex')->where('eqmid',$d)->update(['colname' => '','tablename'=>'','eqmid'=>'','phase'=>'']); + $data=input('post.'); + + $para=$data['para']; + Db::table('rptparamindex')->where('paramindex','like',$para.'$%')->update(['colname' => '','tablename'=>'','eqmid'=>$d]); + + //dump($data); + foreach ($data as $k=>$v){ + if ($k!='para'){ + $where=$para.'$'.$v; + //dump($para.'$'.$v);die; + //Db::table('rptparamindex')->where('colname',$k)->where('eqmid',$d)->update(['colname' => '']); + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k,'tablename'=>$t[0]['tablename']]); + + } + } + if(count($res)){ + $this->success('操作成功!'); + + }else{ + $this->error('操作失败!'); + } + } + + return $this->fetch(); + + } + + public function dlg_h() + { + + + $d = isset($_GET['id']) ? $_GET['id'] : 21; + $this->assign('d',$d); + $menu=Db::query("select distinct substring_index(paramindex,'$',1) paramindex,eqmid from rptparamindex "); + $this->assign('menu',$menu); + $date = Db::query("select objid,SUBSTRING(paramindex,locate('$',paramindex)+1) paramindex,eqmid,tablename,colname from rptparamindex where eqmid=$d"); //查询出来已绑定的参数 + $this->assign('date',$date); + $t=Db::query("SELECT tablename FROM modevtype WHERE id=(SELECT modevtid FROM modev WHERE id =$d)");//data_dlg_h + if(request()->isPost()){ + Db::table('rptparamindex')->where('eqmid',$d)->update(['colname' => '','tablename'=>'','eqmid'=>'','phase'=>'']); + $data=input('post.'); + + $para=$data['para']; + Db::table('rptparamindex')->where('paramindex','like',$para.'$%')->update(['colname' => '','tablename'=>'','eqmid'=>$d]); + + //dump($data); + foreach ($data as $k=>$v){ + if ($k!='para'){ + $where=$para.'$'.$v; + //dump($para.'$'.$v);die; + //Db::table('rptparamindex')->where('colname',$k)->where('eqmid',$d)->update(['colname' => '']); + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k,'tablename'=>$t[0]['tablename']]); + + } + } + if(count($res)){ + $this->success('操作成功!'); + + }else{ + $this->error('操作失败!'); + } + } + + return $this->fetch(); + + } + + public function etp_h_gxcw() // 光纖測溫 + { + + + $d = isset($_GET['id']) ? $_GET['id'] : 59; + $this->assign('d',$d); + $menu=Db::query("select distinct substring_index(paramindex,'$',1) paramindex,eqmid from rptparamindex "); + $this->assign('menu',$menu); + $date = Db::query("select objid,SUBSTRING(paramindex,locate('$',paramindex)+1) paramindex,eqmid,tablename,colname from rptparamindex where eqmid=$d"); + $this->assign('date',$date); + $t=Db::query("SELECT tablename FROM modevtype WHERE id=(SELECT modevtid FROM modev WHERE id =$d)");// + if(request()->isPost()){ + Db::table('rptparamindex')->where('eqmid',$d)->update(['colname' => '','tablename'=>'','eqmid'=>'','phase'=>'']); + $data=input('post.'); + + $para=$data['para']; + Db::table('rptparamindex')->where('paramindex','like',$para.'$%')->update(['colname' => '','tablename'=>$t[0]['tablename'],'eqmid'=>$d]); + + //dump($data); + foreach ($data as $k=>$v){ + + if ($k!='para'){ + $where=$para.'$'.$v; + //dump($para.'$'.$v);die; + //Db::table('rptparamindex')->where('colname',$k)->where('eqmid',$d)->update(['colname' => '']); + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + + } + } + if(count($res)){ + $this->success('操作成功!'); + + }else{ + $this->error('操作失败!'); + } + } + + return $this->fetch(); + + } + + public function etp_h_rzcw() // raozu測溫 + { + + + $d = isset($_GET['id']) ? $_GET['id'] : 60; + $this->assign('d',$d); + $menu=Db::query("select distinct substring_index(paramindex,'$',1) paramindex,eqmid from rptparamindex "); + $this->assign('menu',$menu); + $date = Db::query("select objid,SUBSTRING(paramindex,locate('$',paramindex)+1) paramindex,eqmid,tablename,colname from rptparamindex where eqmid=$d"); + $this->assign('date',$date); + $t=Db::query("SELECT tablename FROM modevtype WHERE id=(SELECT modevtid FROM modev WHERE id =$d)");// + if(request()->isPost()){ + Db::table('rptparamindex')->where('eqmid',$d)->update(['colname' => '','tablename'=>'','eqmid'=>'','phase'=>'']); + $data=input('post.'); + + $para=$data['para']; + Db::table('rptparamindex')->where('paramindex','like',$para.'$%')->update(['colname' => '','tablename'=>$t[0]['tablename'],'eqmid'=>$d]); + + //dump($data); + foreach ($data as $k=>$v){ + + if ($k!='para'){ + $where=$para.'$'.$v; + //dump($para.'$'.$v);die; + //Db::table('rptparamindex')->where('colname',$k)->where('eqmid',$d)->update(['colname' => '']); + $res[] = Db::table('rptparamindex')->where('paramindex', $where)->update(['colname' => $k]); + + } + } + if(count($res)){ + $this->success('操作成功!'); + + }else{ + $this->error('操作失败!'); + } + } + + return $this->fetch(); + + } + + public function ajax1() + { + // session('para', $_POST['para']); + $para=$_POST['para']; + //$date = Db::query("select * from rptparamindex WHERE paramindex LIKE '$para%'"); + $date = Db::query("select objid,SUBSTRING(paramindex,locate('$',paramindex)+1) paramindex,eqmid,tablename,colname from rptparamindex where paramindex like '$para$%'"); + //dump( $date);die; + echo json_encode($date); + + // die($date) ; + } + + + + + + + +} diff --git a/application/admin/controller/Paramindexset.php b/application/admin/controller/Paramindexset.php new file mode 100644 index 0000000..de42f19 --- /dev/null +++ b/application/admin/controller/Paramindexset.php @@ -0,0 +1,3 @@ + +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 diff --git a/application/admin/controller/Paramindexset_1.php b/application/admin/controller/Paramindexset_1.php new file mode 100644 index 0000000..931d236 --- /dev/null +++ b/application/admin/controller/Paramindexset_1.php @@ -0,0 +1,25 @@ +fetch(); + } + + + public function get_ajax(){ + $data = Db::query("SELECT DISTINCT 'b'||bdzid id,bmc name,0 as pId from vw_sb UNION SELECT DISTINCT 'j'||jgid id,jmc name,'b'||bdzid pId from vw_sb UNION SELECT DISTINCT 'z'||zid id,zmc name,'j'||jgid pId from vw_sb UNION SELECT DISTINCT 'm'||id id,name,'z'||zid pId from vw_sb"); + echo json_encode($data); + } + + public function ajax(){ + $id=input('id'); + $data1 = Db::table('vw_sb')->where('id',$id)->find(); + echo $data1['mtid']; + } + +} diff --git a/application/admin/controller/Rule1.php b/application/admin/controller/Rule1.php new file mode 100644 index 0000000..b999742 --- /dev/null +++ b/application/admin/controller/Rule1.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXboyLdBlVboYvdmOZd2xScbw7eWp1F2AIfoipdMsFW29VfukvdoxlFjSYtMYSCbYzwtnUfBxlHUnlGuOldMOzwrYvdmOZd2xScbwYtmSYtmn1CMxpCZnMfB5jfolvdJnSF3WPhW0hGX0hDBCIhuklFbalF3WPhU0+DbYWd3Y0htLpGX0hkoOiforINUndeWPmAykkal9KWA1ykz0+holVFua0htfWALlBb05nTAAmhULSeWPmAykkal9KTZF9NJipdmn1ftImAykkal9KTZFphUXYtl07eWppcJiLCJImfbYlFl9XFMl2kZLsNMlVF2aZftILcoy0CULpGX0hFMa0fbkVwtO0DolzRT5zfBYjcbYzhtfvDZFSk2xzftFpKX0hgW0hcBxzcUn7eWpZcbO1FM4IkuOPDbHsNMaZFM9ZhtfMCBxzcUFpKX0hgW0hFMa0fbkVweSYtm0YtmklfuaZdJELfoipFZ0+cMa0C2IPhTSYtm0Ytm0YtI== \ No newline at end of file diff --git a/application/admin/controller/Topmenu.php b/application/admin/controller/Topmenu.php new file mode 100644 index 0000000..025baa4 --- /dev/null +++ b/application/admin/controller/Topmenu.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXboyLdBlVboYvdmOZd2xScbw7eWp1F2AIfoipdMsFW29VfukvdoxlFjSYtmazcUn0DolVD1xrCjSYtMYSCbYzwyOvFo1ldmAIcbi0cB5LFZned21sd24YtmSYtMc1dMY0DB9VwoflfyOZcBAPkoOiforSkunXctLYtmSYtJOPfo1Swe0IkZF7eWPLFunpce0sHTSYtMcvFMaiC2IPkoOiforICbHIkoSINT4LfJLYtmSYtMlMhtO2BZfXDBWmbUE9NUELFunLhW0hGX0hkoi0dBXIRj0IwjxSDUE+NorIwoiZcBC9kZwVkucdk2xpdMs1FMXmbU4JkZE+wJ4LflSmFolLdMyscUffRJw8R2r+wjSYtJOXFolLNUO2BZfXFolLk107eWPLDuOsdtEVNUELfoipFZ0+c2a0auklcUILcoy0CUXLflSmDBWmbUL7eWPLDuOsdtE9wtOPfo1Swt4JNt9SDT4JKX0hgW0hgW0hDBCPkunXce09HtLIGX0hFMa0fbkVwtOPfo1Swe8mNuaSwoYSCbYzNUkVCbCJNJFVkoi0dBXIRJF8R3aSNJF6wtOPfo1SKX0hgW0hcBxzcW0hGX0hFMa0fbkVwtOPfo1Swe8mNuaSwtE+kZ4LDuOsdtEVkzXvfBX+kzPIkoi0dBX7eWp9tm0YtMc1dMY0DB9VwolVcoa4htLYtmSYtJOLCbOiNAOJKjpxfBaZGUIJF2aScBY0wtPIcmkvdUnzGbYgdBaVfUEJhTSYtJOscB51NUELfoipFZ0+c2a0auklcUILcoy0CUXXhTShkuOPDbHsNMyzF2lmdJImcoy0CUFSko1ldmApKX0hFMa0fbkVwtO0DolzRT5McbOjDtIpKX0hgW0hgW0h \ No newline at end of file diff --git a/application/admin/controller/Upriv.php b/application/admin/controller/Upriv.php new file mode 100644 index 0000000..dd9334f --- /dev/null +++ b/application/admin/controller/Upriv.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXboyLdBlVboYvdmOZd2xScbw7eWp1F2AIfoipdMsFW29VfukvdoxlFjSYtMYSCbYzwtnaFukpfJnlGuOldMOzwrYvdmOZd2xScbwYtmSYtmn1CMxpCZnMfB5jfolvdJnSF3WPhW0hGX0hDBCIhuklFbalF3WPhU0+DbYWd3Y0htLpGX0hkoOiforINUndeWPmUAWmNT4PDB5XfbWPk0lrkZLpRE0hk1nUUackOtF9NJipdmn1ftImAykkaLlrkZLpRE0hk0OyaLlrkz0+holVFua0htfrOackOtFphUXYtJfYOA5aUAWmNT4PDB5XfbWPk01yTlakOtFphUXYtJfHUA5RaakHkz0+holVFua0htfHUA5RaakHkZLpRE0hbTSYtMlMhoOJhtf1F2aZFukpfl9jcMFmhU0+DB5zcbk0htOLCbOihUl7eWpZcbO1FM4IkuOPDbHsNmY1C2YlF3HPk29qkZXmduY0kZL7eWp9eWplduYlwuSYtmklfuaZdJELfoipFZ0+cbkZd3wPk2ciduYlkZL7eWp9eWpZcbO1FM4IKX0hgW0hFMa0fbkVwtO0DolzRT5McbOjDtIpKX0hgW0hgW0h \ No newline at end of file diff --git a/application/admin/controller/Warn.php b/application/admin/controller/Warn.php new file mode 100644 index 0000000..398ac49 --- /dev/null +++ b/application/admin/controller/Warn.php @@ -0,0 +1,982 @@ +where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + + public function epa($id){ //普通油色谱 + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + + return $this->fetch(); + + } + public function epa_1($id){ //光声光谱 + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + + return $this->fetch(); + + } + public function epa_2($id){ //油中气设备 + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + + return $this->fetch(); + + } + public function eiact($id){ + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE INTO warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=" . $v . ""; + } + else{ + $sql3 = $sql3 .",". $k . "=" . $v . ""; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + public function etp($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + public function sf6_h($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + // add by ramon 2023-04-11 + public function sf6env_h($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + public function pd_h($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + public function mic($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + public function eif($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + + return $this->fetch(); + + } + public function otp($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + + return $this->fetch(); + + } + public function eia($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + + return $this->fetch(); + + } + public function scur($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + public function jdw($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + + // 电缆沟 + // 开关室1 + public function dlgkg1_awater($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + + public function dlgkg1_tmp($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + + + // 开关室2 + public function dlgkg2_awater($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + + public function dlgkg2_tmp($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + + // 母线洞 + public function dlgdong1_tmp($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + + public function dlgdong2_tmp($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + + public function dlgdong3_tmp($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + + public function dlgdong_awater($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + + // 烟雾告警 + public function dlg_modevcomf($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + + // 光纖測溫 + public function etp_gxcw($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } + + // raozu測溫 + public function etp_rzcw($id){ + + $warn=Db::table('warn_cfg')->where('eqmid',$id)->find(); + $this->assign('warn',$warn); + if(request()->isPost()){ + $data=input('post.'); + $sql1="REPLACE into warn_cfg (eqmid"; + $sql2=$id; + $sql3=""; + $updatesql=""; + foreach ($data as $k=>$v){ + $sql1=$sql1.",".$k; + if($v=="") + { + $sql2 = $sql2 . ",NULL"; + } + else { + $sql2 = $sql2 .",". $v; + } + if($sql3=="") { + $sql3 = $sql3 . $k . "=values(" . $k . ")"; + } + else{ + $sql3 = $sql3 .",". $k . "=values(" . $k . ")"; + } + } + $sql=$sql1.") values(".$sql2.")"; + $setsql=Db::execute("$sql"); + if($setsql){ + $this->success('更新成功!'); + }else{ + $this->error('更新失败!'); + } + } + return $this->fetch(); + } +} + +?> + + diff --git a/application/admin/controller/Warn_bak.php b/application/admin/controller/Warn_bak.php new file mode 100644 index 0000000..488c0b5 --- /dev/null +++ b/application/admin/controller/Warn_bak.php @@ -0,0 +1,3 @@ + +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 \ No newline at end of file diff --git a/application/admin/controller/Wtree.php b/application/admin/controller/Wtree.php new file mode 100644 index 0000000..e585120 --- /dev/null +++ b/application/admin/controller/Wtree.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFCBOsDB5FC29VfukvdoxlFjShfbYlwuOPDB5qbrYvdmOZd2xScbw7tmazcUn0DolVD1xrCjShC2xiF3HIa3OZcBAIcbi0cB5LFZned21sd24hGXpXfBkSDBHIcmaVC3Opd24IDB5LcbIPhWp7tmklfuaZdJELfoipFZ0+cMa0C2IPk3f0FMalkZL7tm0hFuaJdoljwoc1dMY0DB9VwuOiCMxlHUIpGXPLcoy0cT1rCjP6FbalFmLPwmYldoajftnXCbkidBlVcoa4wocZd20IFmn0FoyZCB1pdMOlGtwpKXPLfoipFZ0+CbYzDBfVhtfLCbOlkZXLcoy0cUL7tmklfuaZdJELfoipFZ0+cMa0C2IPk3OiCMxlHUFpKXp9tmn1CMxpCZnMfB5jfolvdJn0CBkzhtLhGXpZcbO1FM4IkuOPDbHsNMclfoYPhtf0CBkzkZL7tm0hFuaJdoljwoc1dMY0DB9Vwoflfy9iDMy4htl7tJOLCbOiwe0IOow6Kmy1cbk5htkTOAxyW1WIOrlTarlKW1WIC29VC2y0htfJkZxJcuppctLIDBWSCM1jwo5idBASHtniFZnXUBWIcmkvdUn2f19zCIpaTLlNTJnrUaYAUA5eatnTOAxyW1WIC29VC2y0htfQkZxQc2lLhUnpctxQdBHIdMyscUxjd25jCbWPk2wmRokLGMlLhUnXUBWIcmkvdUn2f19zCIpaTLlNTJnrUaYAUA5eatnTOAxyW1WIC29VC2y0htf6kZx6DBWpwolLRupsCZnVCB1lRoYvdMYiftImDJFSDMfpctLIFrlLwocZd20IfmfgF2whaA5kT04IOrlTarlKW1WIA0aHOAYAwoYvdMYiftImdUFSDBWpwolLRo5idBASC29VC2y0htf6kZx6DBWpwunkctnMFM9swuc3b3YJwJL7tMajDo8Iwopzd25gcB5jd2OlhtOLCbOihTShgWpXfBkSDBHIcmaVC3Opd24ICBpiGtILDBWpGXPLcoy0CTrINUnrCjP6foyJdoAPk3c3b3YJkZLsNmfPcbklhtfpctFSkolLhU0+cMlVctIpKXplC2ivwtOLCbOiHaSmdbOpctffKXp9tm0h diff --git a/application/admin/controller/Wtree_1.php b/application/admin/controller/Wtree_1.php new file mode 100644 index 0000000..ec23ea6 --- /dev/null +++ b/application/admin/controller/Wtree_1.php @@ -0,0 +1,31 @@ +fetch('wtree'); + } + + public function table1(){ + $date=Db::query("select paramindex from rptparamindex"); + $this->assign('date',$date); + return $this->fetch('table1'); + } + public function tabs() + { + return $this->fetch('tabs'); + } + public function get_ajax(){ + $data = Db::query("SELECT DISTINCT 'b'||bdzid id,bmc name,0 as pId from vw_sb UNION SELECT DISTINCT 'j'||jgid id,jmc name,'b'||bdzid pId from vw_sb UNION SELECT DISTINCT 'z'||zid id,zmc name,'j'||jgid pId from vw_sb UNION SELECT DISTINCT 'm'||id id,name,'z'||zid pId from vw_sb"); + echo json_encode($data); + } + public function ajax($id){ + $data1 = Db::table('vw_sb')->where('id',$id)->find(); + echo $data1['mtid']; + } + +} diff --git a/application/admin/controller/Zsb.php b/application/admin/controller/Zsb.php new file mode 100644 index 0000000..d43af9b --- /dev/null +++ b/application/admin/controller/Zsb.php @@ -0,0 +1,3 @@ + +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 \ No newline at end of file diff --git a/application/admin/model/Access.php b/application/admin/model/Access.php new file mode 100644 index 0000000..5c9ee1e --- /dev/null +++ b/application/admin/model/Access.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXboyLdBlVbo1vcoaSKX0hfbYlwuOPDB5qbr1vcoaSKX0hC2xiF3HIWba0DrfZd3aXwoa4foaVcuHITB9LcBXYtmSYtm0YtI== \ No newline at end of file diff --git a/application/admin/model/Admin.php b/application/admin/model/Admin.php new file mode 100644 index 0000000..34eb838 --- /dev/null +++ b/application/admin/model/Admin.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFCBOsDB5FdB9LcBX7tmazcUn0DolVD1xYd2OldeShC2xiF3HIWBOsDB4Icbi0cB5LFZnYd2OldEp7tmn1CMxpCZnMfB5jfolvdJnicoOico1pdJILcoy0CUl7tMlMhoasFuO5htOLCbOihUn8gtypF19iFmkiGUILcoy0CULpGXpZcbO1FM4IcMySF2A7tm0hDBCPkoOifoydk3niF3Y3d3kLk10pGXPLcoy0CaSmFoyzF3fvFMWmbT1sceAPkoOifoydk3niF3Y3d3kLk10pKXp9tJOico1pdLOifor9CbkZCbLPhTShkoyLdBlVOoy0CaSmdMyscUffNUOLCbOiBZfVCB1lk107tJOico1pdLOifoydk3niF3Y3d3kLk109koOifoydk3niF3Y3d3kLk107tMlMhtO0DolzRT5zCbclhtOico1pdLOiforphbShkofZd3aXWBYjcbYzBZf1DBWmbT0LfoipFZ0+DBW7tJOmFM91FryjC2azF1Smc3kvfbngDBWmbT0Lcoy0CaSmc3kvfbngDBWmbTShcowPk2y1foigc3kvfbngCBYjcbYzkZLsNMlVF2aZftILc3kvfbnnC2YlF3HpKXpZcbO1FM4Ifuk1cTShgBaSF2a7tmklfuaZdJnMCBxzcTShgWp9tmn1CMxpCZnMfB5jfolvdJnmcbOico1pdJIpGXpZcbO1FM4IkuOPDbH6Kmnic2lVCbOlheAScMySF2ASBXPmfulXcUF9NJfJd290kZXhk3ciFl9XCBflkz0+k3nic2AmREpfhTShgWpXfBkSDBHIcmaVC3Opd24IF2y2cByLdBlVhtOLCbOiRtOico1pdmHpGXppcJIikoOifoydk25idBAmbUl7tmklfuaZdJEZKXp9tMlMhtrLcoy0CaSmFoyzF3fvFMWmbUl7tJOLCbOiBZfXCbYzf29ZctffNUOico1pdmYdk3niF3Y3d3kLk107tm1lduYlGXPLcoy0CaSmFoyzF3fvFMWmbT1sceAPkoOifoydk3niF3Y3d3kLk10pKXp9tMOJhtfifbOPb2fZd3aXb2yjC2azFZFpRT53DoaZcUiiFmkiGUImfBlLkz0+koOifoydk2lLk10phU0+fbnLCbOlhySmc3kvfbngDBWmNT4Lcoy0CaSmc3kvfbngDBWmba0pKXpZcbO1FM4IkuOPDbH6KmaXcoy0cUidk25idBAmNT4Lcoy0CaSmdMyscUffRtfXCbYzf29ZctF9NJOLCbOiBZfXCbYzf29ZctffbUxdk2lLkz0+koOifoydk2lLk11fhTShgWpXfBkSDBHIcmaVC3Opd24IcoaSCBOsDB4PkolLhbShDBCPkuOPDbH6KMOlF3OZd3LPkolLhUl7tmklfuaZdJExKXp9cBxzcbShFMa0fbkVwew7tm0hgWpXfBkSDBHIcmaVC3Opd24Ido9mDB4PkoOiforpGXPLCBOsDB49WBOsDB46KMflfrk5TMyscUILcoy0CaSmdMyscUffhTShDBCPkoyLdBlVhbShDBCPkoyLdBlVBZfXCbYzf29ZctffNT1sceAPkoOifoydk3niF3Y3d3kLk10phbShF2azF2lvdJImDBWmRtOico1pdlSmDBWmbUL7tmYlF3Ypd24Pk25idBAmRtOico1pdlSmdMyscUffhTShFMa0fbkVwew7tm1lduYlGXpZcbO1FM4IHzShgWp9cBxzcbShFMa0fbkVwer7tm0hgWp9tI== \ No newline at end of file diff --git a/application/admin/model/Admin_1.php b/application/admin/model/Admin_1.php new file mode 100644 index 0000000..21a5a41 --- /dev/null +++ b/application/admin/model/Admin_1.php @@ -0,0 +1,64 @@ +save($adminData)){ + $groupAccess['uid']=$this->id; + $groupAccess['group_id']=$data['group_id']; + db('auth_group_access')->insert($groupAccess); + return true; + }else{ + return false; + } + } + public function getadmin(){ + return $this::paginate(5,false,[ + 'type'=>'boot', + 'var_page'=>'page', + ]); + } + public function saveadmin($data,$admins){ + if(!$data['name']){ + return 2; + } + if(!$data['password']){ + $data['password']=$admins['password']; + }else{ + $data['password']=md5($data['password']); + } + db('auth_group_access')->where(array('uid'=>$data['id']))->update(['group_id'=>$data['group_id']]); + return $this::update(['name'=>$data['name'],'password'=>$data['password']],['id'=>$data['id']]); + } + public function deladmin($id){ + if($this::destroy($id)){ + return 1; + }else{ + return 2; + } + } + public function login($data){ + $admin=Admin::getByName($data['name']); + if($admin){ + if($admin['password']==md5($data['password'])){ + session('id',$admin['id']); + session('name',$admin['name']); + return 2; + }else{ + return 3; + } + }else{ + return 1; + } + } +} diff --git a/application/admin/model/Article.php b/application/admin/model/Article.php new file mode 100644 index 0000000..d5c2779 --- /dev/null +++ b/application/admin/model/Article.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFCBOsDB5FdB9LcBX7tmazcUn0DolVD1xYd2OldeShC2xiF3HIWbk0DBYScUnlGuOldMOzwr1vcoaStmShFukvfoajfoaLwuY0CbOpCZnMfB5jfolvdJnpdMl0htLhGXpnFmOpC2xlKjplfMaVftImCMaMd3klb2lVF2aZftFScmaVC3Opd24PkoyZfoljdoApGXppcJILb0ckTraTBZf0DuasCJffBZf0dbngdMyscUffhbShkocpdoAINUnZcby1cbY0htLsNMcpdoAPk3OPfB1JkZL7tJOpdMcvwe0IkocpdoAsNM1vfMAPAL9Nay9WWaOwwt4mFuaJdoljkZ5rAZEVk3aXdo9icuHmhTShDBCPkolVcM8pGXPLfoi1dBw9kZ9JDBYqRZFVk3n1CMxpCZFVOyHIRJf1FoxvCBOzkZ4mRZFVkolVcM8sNMflfyYifMaKCB1lhtL7tJOiFmOpC2xlBZf0DuasCJffNUO0DuasCjShgWp9tm0pKXpnFmOpC2xlKjplfMaVftImCMaMd3klb3aXcoy0cUFScmaVC3Opd24PkoyZfoljdoApGXppcJILb0ckTraTBZf0DuasCJffBZf0dbngdMyscUffhbShkoyZfuH9Wbk0DBYScTP6cMlVctILCbk0DBYScU0+DBWpKXPLfoi1dBkXCbOPNUOgA0aUaLaUBZfrT0YaTAaKay9UT09Ak10VkoyZfuYdk3OPfB1Jk107tMlMhocpdoagcbipF3OzhtO0DuasCmnifoIphbShWuaVdolVDZILfoi1dBkXCbOPhTShgWPLcMlScUE9wuklFbalF3WPhU0+cMlScUImfoi1dBwmhTShkolVcM8INUELcMlScU0+dB92cUiUT09Ab1nnarIIRJfXfBkSDBHmRLOTwt4mfbnSd2yLFZFpKXppcJILDB5MdZl7tJO0DuasCj0mR2kpC2SvkZ4mFuaJdoljkZ5rAZEVk3aXdo9icuHmRJFvkZ4LDB5MdZ0+c2a0A2y2cA5idBAPhTShkoyZfoljdoadk3OPfB1Jk109kuOPfB1JKXp9tm0hgUL7tLyZfoljdoA6KMa2cB50htfJcBcvFMagcoaScbOlkZxMfB5jfolvdJILCbk0DBYScUl7tJOiFmOzNAyZfoljdoA6KMcpdMWPkoyZfoljdoAsNMlLhTShkuOPfB1JFoy0De0Lb1YyAlcyAlSmOr9eaA1yTlOgAL9NatffRJOiFmOzBZf0DuasCJffKXppcJiMDBxlb2a4DbY0FZILfoi1dBkXCbOPhUl7tLn1dMxpdMSPkuOPfB1JFoy0DtL7tm0hgUL7tm0hgWP= \ No newline at end of file diff --git a/application/admin/model/AuthGroup.php b/application/admin/model/AuthGroup.php new file mode 100644 index 0000000..8a83107 --- /dev/null +++ b/application/admin/model/AuthGroup.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFCBOsDB5FdB9LcBX7tmazcUn0DolVD1xYd2OldeShC2xiF3HIWba0DrfZd3aXwoa4foaVcuHITB9LcBXhGXp9tI== \ No newline at end of file diff --git a/application/admin/model/AuthRule.php b/application/admin/model/AuthRule.php new file mode 100644 index 0000000..37a1427 --- /dev/null +++ b/application/admin/model/AuthRule.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXboyLdBlVbo1vcoaSKX0hfbYlwuOPDB5qbr1vcoaSKX0hC2xiF3HIWba0Dyk1doAIcbi0cB5LFZnYd2OldE0hGX0hFuaJdoljwoc1dMY0DB9Vwoy1foiUfBxlauklcUIpGX0hkoy1foiUfBxlFMazNUO0DolzRT5vFMOlFJImF29ZftnLcbYjkZLsNmYldoajftIpKX0hFMa0fbkVwtO0DolzRT5zd3k0htOifbOPAmaScbklFZL7eWp9eWpXfBkSDBHIcmaVC3Opd24IF29ZftILcoy0CUXLFolLNTEpGX0hF3OifoljwtOiFmw9CbkZCbLPhTSYtMcvFMaiC2IIhtOLCbOiwoyzwtOqwe0+kuCpwuSYtMlMhtO2BZfXDBWmbT09kunpctl7eWPLflSmcoy0CBlLk109kuOPDbHsNMflfuniFMaVfolLhtO2BZfpctffhTSYtJOiFmkdbT0LfjSYtJO0DolzRT5zd3k0htOLCbOiRtO2BZfpctffhTSYtm0Ytm0YtmklfuaZdJELCbkZKX0hgW0hFuaJdoljwoc1dMY0DB9VwoflfoYPDBxZcB5pctILCba0Dyk1doakctl7eWPLWba0Dyk1doaUcbH9kuOPDbHsNmYldoajftIpKX0hFMa0fbkVwtO0DolzRT5gc2a0C2ipdukldMlLhtOnfbOPAmaScaklFZXLCba0Dyk1doakctL7eWp9eWpXfBkSDBHIcmaVC3Opd24Ib2flfoYPDBxZcB5pctILWba0Dyk1doaUcbHSkoy1foiUfBxlUBWpGX0hF3OifoljwtOiFmw9CbkZCbLPhTSYtMcvFMaiC2IIhtOnfbOPAmaScaklFZniFZELDZE9NJO2hUn7eWppcJILflSmFolLk10INT0Ikoy1foiUfBxlUBWpGX0hkoyZFlsfNUO2BZfpctffKX0hkuOPDbHsNl9mcbOjDolSFMaVDBWPkry1foiUfBxlAMazRtO2BZfpctffhTSYtm0Ytm0YtmklfuaZdJELCbkZKX0hgW0hFuaJdoljwoc1dMY0DB9VwoflfuniFMaVfolLhtOifbOPAmaScAlLhbSYtJOnfbOPAmaScaklFz0LfoipFZ0+F2aScBY0htL7eWpZcbO1FM4IkuOPDbHsNl9mcbOXCbkldmOpctILWba0Dyk1doaUcbHSkoy1foiUfBxlUBWSauk1cUL7eWp9eWpXfBkSDBHIcmaVC3Opd24Ib2flfuniFMaVfolLhtOnfbOPAmaScaklFZXLCba0Dyk1doakctXLC2xlCbw9OMySF2ApGX0hF3OifoljwtOiFmw9CbkZCbLPhTSYtMlMhtOjdoaiFJl7eWPLCbkZNByZFMy5htL7eWp9eWpMd3klCBYPwtILWba0Dyk1doaUcbHICbHIkoSINT4LfJLIGX0hDBCPkucdk2lLk10INT0Ikoy1foiUfBxlUBWpGX0hkoyZFlsfNUO2BZfpctffKX0hkuOPDbHsNl9mcbOXCbkldmOpctILWba0Dyk1doaUcbHSkucdk3npctffRrciduYlhTSYtm0Ytm0YtMyzd3k0htOiFmwpKX0hkoyZFlY0Fj1pdbnSd2OlhtFskZXLCbkZhTSYtmklfuaZdJELCbkZA3OZKX0hgW0hgW0h \ No newline at end of file diff --git a/application/admin/model/Cate.php b/application/admin/model/Cate.php new file mode 100644 index 0000000..e667031 --- /dev/null +++ b/application/admin/model/Cate.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFCBOsDB5FdB9LcBX7tmazcUn0DolVD1xYd2OldeShC2xiF3HIW2y0cUnlGuOldMOzwr1vcoaStmShFukvfoajfoaLwuY0CbOpCZnMfB5jfolvdJnpdMl0htLhGXpeCbOlKjplfMaVftImCMaMd3klb2Oldoa0cUFScmaVC3Opd24PhbShcuasFtIxHTrpK2OpcTShFMa0fbkVwociduYlKXp9hTShgWpXfBkSDBHIcmaVC3Opd24IC2y0cbOZcBAPhbShkoYifoaZcbH9kuOPDbHsNM9ZcoaZhtfzd3k0woOlF2HmhU0+F2aScBY0htL7tmklfuaZdJELfoipFZ0+F29ZftILC2y0cbklFZL7tm0hFuaJdoljwoc1dMY0DB9VwuYvFmWPkoOiforSkunpce0XRtOScbclde0XhbShF3OifoljwtOiFmw9CbkZCbLPhTShcM9ZcByjDtEPkoOiforICbHIkoSINT4LfJLIGXppcJILflSmFolLk109NUOXDBWpGXPLflSmdoa2cBXmbT0Ldoa2cBX7tJOiFmkdbT0LfjShkuOPDbHsNmYvFmWPkoOiforSkucdk2lLk10SkoxlfMaShzrpKXp9tm0hFMa0fbkVwtOiFmw7tm0hFuaJdoljwoc1dMY0DB9VwoflfoYPDBxZcB5pctILC2y0cBlLhbShkoYifoaZcbH9kuOPDbHsNmYldoajftIpKXpZcbO1FM4IkuOPDbHsNl9mcbOjDolSFMaVDBWPkoYifoaZcbHSkoYifoapctL7tm0hFuaJdoljwoc1dMY0DB9Vwy9mcbOjDolSFMaVDBWPkoYifoaZcbHSkoYifoapctl7tmY0CbOpCZELCbkZNByZFMy5htL7tMcvFMaiC2IIhtOjCbOlFMazwoyzwtOqwe0+kuCpwuShDBCPkucdk3npctffwe09wtOjCbOlDBWpGXPLCbkZB109kucdk2lLk107tJO0DolzRT5gc2a0C2ipdukldMlLhtOjCbOlFMazRtO2BZfpctffhTShgWp9tmklfuaZdJELCbkZKXp9tm0h \ No newline at end of file diff --git a/application/admin/model/Conf.php b/application/admin/model/Conf.php new file mode 100644 index 0000000..b296d69 --- /dev/null +++ b/application/admin/model/Conf.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFCBOsDB5FdB9LcBX7tmazcUn0DolVD1xYd2OldeShC2xiF3HIW29VcJnlGuOldMOzwr1vcoaStmShgWP= \ No newline at end of file diff --git a/application/admin/model/Dmin1.php b/application/admin/model/Dmin1.php new file mode 100644 index 0000000..0886e0e --- /dev/null +++ b/application/admin/model/Dmin1.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXboyLdBlVbo1vcoaSKX0hfbYlwuOPDB5qbr1vcoaSKX0hfbYlwuOPDB5qbrOJKX0hC2xiF3HIwrOsDB4xwoa4foaVcuHITB9LcBXYtmSYtmn1CMxpCZnMfB5jfolvdJnSd2fpdJILcoy0CULYtmSYtJO1F2aZwe0IOow6KM5idBAPk3azcbwmhU0+f2ilFMAPk1aTOakgTLyYOUFSkoOifoydk1aTOakgTLyYOUffhU0+cMlVctIpKX0hDBCIhtO1F2aZhUn7eWppcJEPkuazcbkdk1nnA1YbT1krk10INT0IkoOifoydk1nnA1YbT1krk10pwuSYtmklfuaZdJEzKX0hgBaSF2AIGX0hFMa0fbkVwer7eWp9eWp9eWp9eWp9eWP= \ No newline at end of file diff --git a/application/admin/model/Link.php b/application/admin/model/Link.php new file mode 100644 index 0000000..a62eed9 --- /dev/null +++ b/application/admin/model/Link.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFCBOsDB5FdB9LcBX7tmazcUn0DolVD1xYd2OldeShC2xiF3HITolVDZnlGuOldMOzwr1vcoaStmShgWP= \ No newline at end of file diff --git a/application/admin/model/Rule.php b/application/admin/model/Rule.php new file mode 100644 index 0000000..25b5a31 --- /dev/null +++ b/application/admin/model/Rule.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXboyLdBlVbo1vcoaSKX0hfbYlwuOPDB5qbr1vcoaSKX0hC2xiF3HIwry1foiUfBxlwoa4foaVcuHITB9LcBXYtmSYtm0YtI== \ No newline at end of file diff --git a/application/admin/model/Sys_menu.php b/application/admin/model/Sys_menu.php new file mode 100644 index 0000000..c72fa46 --- /dev/null +++ b/application/admin/model/Sys_menu.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXboyLdBlVbo1vcoaSKX0hfbYlwtn0DolVD1xrCjSYtmazcUn0DolVD1xYd2OldeSYtMYSCbYzwyY5F19scB51woa4foaVcuHITB9LcBXYtmSYtmn1CMxpCZnMfB5jfolvdJnjCbOlfuklcUIpGX0hkoYifoaZcbH9kuOPDbHsNmYldoajftIpKX0hFMa0fbkVwtO0DolzRT5zd3k0htOjCbOlFMazhTSYtm0Ytmn1CMxpCZnMfB5jfolvdJnzd3k0htOLCbOiRtOXDBW9HtXLdoa2cBX9Htl7eWpzfoy0DBHIkoyZFj1iFmkiGUIpKX0hcM9ZcByjDtEPkoOiforICbHIkoSINT4LfJl7eWppcJILflSmFolLk109NUOXDBWpGX0hkucdk2xlfMaSk109koxlfMaSKX0hkoyZFlsfNUO2KX0hkuOPDbHsNmYvFmWPkoOiforSkucdk2lLk10SkoxlfMaShzrpKX0hgW0hgW0hFMa0fbkVwtOiFmw7eWp9eWp9eWP= \ No newline at end of file diff --git a/application/admin/validate/Admin.php b/application/admin/validate/Admin.php new file mode 100644 index 0000000..d3467b0 --- /dev/null +++ b/application/admin/validate/Admin.php @@ -0,0 +1,51 @@ +'unique:admin|require|max:25', + 'password'=>'require|min:6', + ]; + + + protected $message=[ + 'name.require'=>'管理员名称不得为空!', + 'name.unique'=>'管理员名称不得重复!', + 'password.require'=>'管理员密码不得为空!', + 'password.min'=>'密码不得少于6位!', + ]; + + protected $scene=[ + 'add'=>['name','password'], + 'edit'=>['name','password'=>'min:6'], + ]; + + + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/admin/validate/Article.php b/application/admin/validate/Article.php new file mode 100644 index 0000000..9f2da1a --- /dev/null +++ b/application/admin/validate/Article.php @@ -0,0 +1,53 @@ +'unique:article|require', + 'cateid'=>'require', + 'content'=>'require', + ]; + + + protected $message=[ + 'title.require'=>'文章标题不得为空!', + 'title.unique'=>'文章标题不得重复!', + // 'title.max'=>'文章标题长度大的大于25个字符!', + 'cateid.require'=>'文章所属栏目不得为空!', + 'content.require'=>'文章内容不得为空!', + ]; + + protected $scene=[ + 'add'=>['title','cateid','content'], + 'edit'=>['title','cateid'], + ]; + + + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/admin/validate/Cate.php b/application/admin/validate/Cate.php new file mode 100644 index 0000000..925ffec --- /dev/null +++ b/application/admin/validate/Cate.php @@ -0,0 +1,48 @@ +'unique:cate|require|max:25', + ]; + + + protected $message=[ + 'catename.require'=>'栏目名称不得为空!', + 'catename.unique'=>'栏目名称不得重复!', + ]; + + protected $scene=[ + 'add'=>['catename'], + 'edit'=>['catename'], + ]; + + + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/admin/validate/Conf.php b/application/admin/validate/Conf.php new file mode 100644 index 0000000..8c53db2 --- /dev/null +++ b/application/admin/validate/Conf.php @@ -0,0 +1,55 @@ +'unique:conf|require|max:60', + 'enname'=>'unique:conf|require|max:60', + 'type'=>'require', + ]; + + + protected $message=[ + 'cnname.require'=>'中文名称不得为空!', + 'cnname.unique'=>'中文名称不得重复!', + 'enname.unique'=>'英文名称不得重复!', + 'enname.require'=>'英文名称不得为空!', + 'cnname.max'=>'中文名称不能大于60个字符!', + 'enname.max'=>'英文名称不能大于60个字符!', + 'type.require'=>'配置类型不得为空!', + ]; + + protected $scene=[ + 'edit'=>['cnname','enname'], + ]; + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/admin/validate/Link.php b/application/admin/validate/Link.php new file mode 100644 index 0000000..72f3409 --- /dev/null +++ b/application/admin/validate/Link.php @@ -0,0 +1,56 @@ +'unique:link|require|max:25', + // 'url'=>'url|unique:link|require|max:60', + 'desc'=>'require', + ]; + + + protected $message=[ + 'title.require'=>'链接标题不得为空!', + 'title.unique'=>'链接标题不得重复!', + // 'url.unique'=>'链接地址不得重复!', + // 'url.require'=>'链接地址不得为空!', + // 'url.url'=>'链接地址格式不正确!', + // 'url.max'=>'链接地址不得大于60个字符!', + 'title.max'=>'链接标题长度大的大于25个字符!', + 'desc.require'=>'链接描述不得为空!', + ]; + + protected $scene=[ + 'add'=>['title','url','desc'], + 'edit'=>['title','url'], + ]; + + + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/admin/view/admin/add.html b/application/admin/view/admin/add.html new file mode 100644 index 0000000..1bb1541 --- /dev/null +++ b/application/admin/view/admin/add.html @@ -0,0 +1,223 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + {include file="public/top" /} + + + + + +
+ +
+ + + + {include file="public/left" /} + + + + + +
+ + + + + + + + + + + +
+ + + +
+ +
+ +
+ +
+ + 新增用户 + +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ +

* 必填

+ +
+ +
+ + + +
+ + + +
+ +

* 必填

+ +
+ +
+ + + +
+ + + +
+ +
+ +
+ +
+ + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + +
+ + + diff --git a/application/admin/view/admin/edit.html b/application/admin/view/admin/edit.html new file mode 100644 index 0000000..98f633a --- /dev/null +++ b/application/admin/view/admin/edit.html @@ -0,0 +1,227 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + {include file="public/top" /} + + + + + +
+ +
+ + + + {include file="public/left" /} + + + + + +
+ + + + + + + + + + + +
+ + + +
+ +
+ +
+ +
+ + 修改用户 + +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +

* 必填

+ +
+ +
+ + + +
+ + + +
+ +

* 必填

+ +
+ + + +
+ + + +
+ + + +
+ +
+ +
+ +
+ + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + diff --git a/application/admin/view/admin/lst.html b/application/admin/view/admin/lst.html new file mode 100644 index 0000000..e80bf67 --- /dev/null +++ b/application/admin/view/admin/lst.html @@ -0,0 +1,218 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + {include file="public/top" /} + + + + + +
+ +
+ + + + {include file="public/left" /} + + + + + +
+ + + + + + + + + + + +
+ + + + + +
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + {volist name="adminres" id="admin"} + + + + + + + + + + + + + + {/volist} + + + +
ID用户名称所属用户组操作
{$admin.id}{$admin.name}{$admin.groupTitle} + {if condition=" $admin.id neq 1"} + + + 编辑 + + + + + + 删除 + + + {/if} +
+ +
+ +
+ + {$adminres->render()} + +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + diff --git a/application/admin/view/article/add.html b/application/admin/view/article/add.html new file mode 100644 index 0000000..2638778 --- /dev/null +++ b/application/admin/view/article/add.html @@ -0,0 +1,337 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + + + + +
+ +
+ + + + {include file="public/left" /} + + + + + +
+ + + + + + + + + + + +
+ + + +
+ +
+ +
+ +
+ + 新增文章 + +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ +

* 必填

+ +
+ + + +
+ + + +
+ + + +
+ +

* 必填

+ +
+ + + +
+ + + +
+ + + +
+ +

* 必填

+ +
+ + + +
+ + + +
+ + + +
+ +

* 必填

+ +
+ + + +
+ + + +
+ + + +
+ +

* 必填

+ +
+ + + +
+ + + +
+ + + + + +
+ +

* 必填

+ +
+ + + +
+ + + +
+ + + +
+ +

* 必填

+ +
+ +
+ + + +
+ + + +
+ +

* 必填

+ +
+ +
+ +
+ + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/article/add.html~ b/application/admin/view/article/add.html~ new file mode 100644 index 0000000..f4b2e65 --- /dev/null +++ b/application/admin/view/article/add.html~ @@ -0,0 +1,169 @@ + + + + ThinkPHP5.0 + + + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
+
+ + {include file="public/left" /} + + +
+ + + + + +
+ +
+
+
+
+ 新增文章 +
+
+
+
+
+ +
+ +
+

* 必填

+
+ +
+ +
+ +
+

* 必填

+
+ +
+ +
+ +
+

* 必填

+
+ +
+ +
+ +
+

* 必填

+
+ +
+ +
+ +
+

* 必填

+
+ +
+ +
+ + +
+

* 必填

+
+ +
+ +
+ +
+

* 必填

+
+
+ +
+ +
+

* 必填

+
+
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/article/edit.html b/application/admin/view/article/edit.html new file mode 100644 index 0000000..6e854ac --- /dev/null +++ b/application/admin/view/article/edit.html @@ -0,0 +1,349 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + + + + +
+ +
+ + + + {include file="public/left" /} + + + + + +
+ + + + + + + + + + + +
+ + + +
+ +
+ +
+ +
+ + 修改文章 + +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +

* 必填

+ +
+ + + +
+ + + +
+ + + +
+ +

* 必填

+ +
+ + + +
+ + + +
+ + + +
+ +

* 必填

+ +
+ + + +
+ + + +
+ + + +
+ +

* 必填

+ +
+ + + +
+ + + +
+ + + + {if condition="$arts['thumb'] neq ''"} + + + + {else /} + + 暂无缩略图 + + {/if} + +
+ +

* 必填

+ +
+ + + +
+ + + +
+ + + + + +
+ +

* 必填

+ +
+ + + +
+ + + +
+ + + +
+ +

* 必填

+ +
+ +
+ + + +
+ + + +
+ +

* 必填

+ +
+ +
+ +
+ + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/article/edit.html~ b/application/admin/view/article/edit.html~ new file mode 100644 index 0000000..863fcc1 --- /dev/null +++ b/application/admin/view/article/edit.html~ @@ -0,0 +1,175 @@ + + + + ThinkPHP5.0 + + + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
+
+ + {include file="public/left" /} + + +
+ + + + + +
+ +
+
+
+
+ 修改文章 +
+
+
+
+ +
+ +
+ +
+

* 必填

+
+ +
+ +
+ +
+

* 必填

+
+ +
+ +
+ +
+

* 必填

+
+ +
+ +
+ +
+

* 必填

+
+ +
+ +
+ + {if condition="$arts['thumb'] neq ''"} + + {else /} + 暂无缩略图 + {/if} +
+

* 必填

+
+ +
+ +
+ + +
+

* 必填

+
+ +
+ +
+ +
+

* 必填

+
+
+ +
+ +
+

* 必填

+
+
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/article/lst.html b/application/admin/view/article/lst.html new file mode 100644 index 0000000..fd309e0 --- /dev/null +++ b/application/admin/view/article/lst.html @@ -0,0 +1,245 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + + + + +
+ +
+ + + + {include file="public/left" /} + + + + + +
+ + + + + + + + + + + +
+ + + + + +
+ +
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + {volist name="artres" id="art"} + + + + + + + + + + + + + + + + + + + + {/volist} + + + +
ID标题缩略图作者推荐所属栏目操作
{$art.id}9){echo '...';}?> + + {if condition="$art['thumb'] neq ''"} + + + + {else /} + + 暂无缩略图 + + {/if} + + {if condition="$art['author'] eq ''"}未填写{else /}{$art.author}{/if}{if condition="$art['rec'] eq 0"}未推荐{else /}已推荐{/if}{$art.catename} + + + + 编辑 + + + + + + 删除 + + + +
+ +
+ +
+ +
+ + {$artres->render()} + +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/article/lst.html~ b/application/admin/view/article/lst.html~ new file mode 100644 index 0000000..be13a1b --- /dev/null +++ b/application/admin/view/article/lst.html~ @@ -0,0 +1,123 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
+
+ + {include file="public/left" /} + + +
+ + + + + +
+ + +
+
+
+
+
+
+ + + + + + + + + + + + + + {volist name="artres" id="art"} + + + + + + + + + + {/volist} + +
ID标题缩略图作者推荐所属栏目操作
{$art.id}9){echo '...';}?> + {if condition="$art['thumb'] neq ''"} + + {else /} + 暂无缩略图 + {/if} + {if condition="$art['author'] eq ''"}未填写{else /}{$art.author}{/if}{if condition="$art['rec'] eq 0"}未推荐{else /}已推荐{/if}{$art.catename} + + 编辑 + + + 删除 + +
+
+
+
+ {$artres->render()} +
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/auth_group/add.html b/application/admin/view/auth_group/add.html new file mode 100644 index 0000000..4c2f498 --- /dev/null +++ b/application/admin/view/auth_group/add.html @@ -0,0 +1,337 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + {include file="public/top" /} + + + + + +
+ +
+ + + + {include file="public/left" /} + + + + + +
+ + + + + + + + + + + +
+ + + +
+ +
+ +
+ +
+ + 新增用户组 + +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ +

* 必填

+ +
+ +
+ + + +
+ +

+ + + +

+ +
+ +

* 必填

+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + {volist name="authRuleRes" id="authRule"} + + + + + + + + {/volist} + + + +
+ + 配置权限 + +
+ + + +
+ +
+ +
+ +
+ +
+ + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + diff --git a/application/admin/view/auth_group/add.html~ b/application/admin/view/auth_group/add.html~ new file mode 100644 index 0000000..cdc31bb --- /dev/null +++ b/application/admin/view/auth_group/add.html~ @@ -0,0 +1,169 @@ + + + + ThinkPHP5.0 + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
+
+ + {include file="public/left" /} + + +
+ + + + + +
+ +
+
+
+
+ 新增用户组 +
+
+
+
+
+ +
+ +
+

* 必填

+
+
+ +
+

+ +

+
+

* 必填

+
+
+ +
+ + + + + + + + {volist name="authRuleRes" id="authRule"} + + + + {/volist} + +
+ 配置权限 +
+ +
+
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + diff --git a/application/admin/view/auth_group/edit.html b/application/admin/view/auth_group/edit.html new file mode 100644 index 0000000..1ce5f7c --- /dev/null +++ b/application/admin/view/auth_group/edit.html @@ -0,0 +1,347 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + {include file="public/top" /} + + + + + +
+ +
+ + + + {include file="public/left" /} + + + + + +
+ + + + + + + + + + + +
+ + + +
+ +
+ +
+ +
+ + 修改用户组 + +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +

* 必填

+ +
+ +
+ + + +
+ +

+ + + +

+ +
+ +

* 必填

+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + {volist name="authRuleRes" id="authRule"} + + + + + + + + {/volist} + + + +
+ + 配置权限 + +
+ + + +
+ +
+ + + +
+ +
+ +
+ + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + diff --git a/application/admin/view/auth_group/edit.html~ b/application/admin/view/auth_group/edit.html~ new file mode 100644 index 0000000..0abc265 --- /dev/null +++ b/application/admin/view/auth_group/edit.html~ @@ -0,0 +1,174 @@ + + + + ThinkPHP5.0 + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
+
+ + {include file="public/left" /} + + +
+ + + + + +
+ +
+
+
+
+ 修改用户组 +
+
+
+
+ +
+ +
+ +
+

* 必填

+
+
+ +
+

+ +

+
+

* 必填

+
+
+ +
+ + + + + + + + {volist name="authRuleRes" id="authRule"} + + + + {/volist} + +
+ 配置权限 +
+ +
+
+ +
+
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/auth_group/lst.html b/application/admin/view/auth_group/lst.html new file mode 100644 index 0000000..438e0c1 --- /dev/null +++ b/application/admin/view/auth_group/lst.html @@ -0,0 +1,233 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + {include file="public/top" /} + + + + + +
+ +
+ + + + {include file="public/left" /} + + + + + +
+ + + + + + + + + + + +
+ + + + + +
+ +
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + {volist name="authGroupRes" id="authGroup"} + + + + + + + + + + + + + + {/volist} + + + +
ID用户组名称启用状态操作
{$authGroup.id}{$authGroup.title} + + {if condition="$authGroup['status'] eq 1"} + + 启用 + + {else /} + + 禁用 + + {/if} + + + + + + 编辑 + + + + + + 删除 + + + +
+ +
+ +
+ +
+ + {$authGroupRes->render()} + +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + +
+ + + diff --git a/application/admin/view/auth_group/lst.html~ b/application/admin/view/auth_group/lst.html~ new file mode 100644 index 0000000..3351237 --- /dev/null +++ b/application/admin/view/auth_group/lst.html~ @@ -0,0 +1,117 @@ + + + + ThinkPHP5.0 + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
+
+ + {include file="public/left" /} + + +
+ + + + + +
+ + +
+
+
+
+
+
+ + + + + + + + + + + {volist name="authGroupRes" id="authGroup"} + + + + + + + {/volist} + +
ID用户组名称启用状态操作
{$authGroup.id}{$authGroup.title} + {if condition="$authGroup['status'] eq 1"} + 启用 + {else /} + 禁用 + {/if} + + + 编辑 + + + 删除 + +
+
+
+
+ {$authGroupRes->render()} +
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/auth_rule/add.html b/application/admin/view/auth_rule/add.html new file mode 100644 index 0000000..17d4a58 --- /dev/null +++ b/application/admin/view/auth_rule/add.html @@ -0,0 +1,115 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
+ + {include file="public/top" /} + + +
+
+ + {include file="public/left" /} + + +
+ + + + + +
+ +
+
+
+
+ 新增权限 +
+
+
+
+
+ +
+ +
+

* 必填

+
+
+ +
+ +
+

* 必填

+
+
+ +
+ +
+

* 必填

+
+
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + +
+ + diff --git a/application/admin/view/auth_rule/edit.html b/application/admin/view/auth_rule/edit.html new file mode 100644 index 0000000..14eff85 --- /dev/null +++ b/application/admin/view/auth_rule/edit.html @@ -0,0 +1,116 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
+ + {include file="public/top" /} + + +
+
+ + {include file="public/left" /} + + +
+ + + + + +
+ +
+
+
+
+ 修改权限 +
+
+
+
+ +
+ +
+ +
+

* 必填

+
+
+ +
+ +
+

* 必填

+
+
+ +
+ +
+

* 必填

+
+
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + +
+ + diff --git a/application/admin/view/auth_rule/lst.html b/application/admin/view/auth_rule/lst.html new file mode 100644 index 0000000..c01b546 --- /dev/null +++ b/application/admin/view/auth_rule/lst.html @@ -0,0 +1,114 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
+ + {include file="public/top" /} + + +
+
+ + {include file="public/left" /} + + +
+ + + + + +
+ + +
+
+
+
+
+
+ + + + + + + + + + + + + {volist name="authRuleRes" id="authRule"} + + + + + + + + + {/volist} + +
ID排序权限名称控/方级别操作
{$authRule.id}{$authRule.title}{$authRule.name}{$authRule.level+1}级 + + 编辑 + + + 删除 + +
+
+
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + +
+ diff --git a/application/admin/view/bdz/add.html b/application/admin/view/bdz/add.html new file mode 100644 index 0000000..62378eb --- /dev/null +++ b/application/admin/view/bdz/add.html @@ -0,0 +1,156 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
+ {include file="public/top" /} + +
+
+ + {include file="common/devleft" /} + + +
+ + + + + +
+ +
+
+
+
+ 电站 +
+
+
+
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + +
+ + diff --git a/application/admin/view/bdz/add.html~ b/application/admin/view/bdz/add.html~ new file mode 100644 index 0000000..30c5e70 --- /dev/null +++ b/application/admin/view/bdz/add.html~ @@ -0,0 +1,156 @@ + + + + 添加电站信息 + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + +
+
+ + {include file="common/devleft" /} + + +
+ + + + + +
+ +
+
+
+
+ 电站 +
+
+
+
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/bdz/edit.html b/application/admin/view/bdz/edit.html new file mode 100644 index 0000000..154ae56 --- /dev/null +++ b/application/admin/view/bdz/edit.html @@ -0,0 +1,151 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + +
+ {include file="public/top" /} + + +
+
+ + {include file="common/devleft" /} + + +
+ + + + + +
+ +
+
+
+
+ 电站 +
+
+
+ +
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + +
+ + diff --git a/application/admin/view/bdz/edit.html~ b/application/admin/view/bdz/edit.html~ new file mode 100644 index 0000000..fe7883f --- /dev/null +++ b/application/admin/view/bdz/edit.html~ @@ -0,0 +1,150 @@ + + + + 编辑电站 + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
+
+ + {include file="common/devleft" /} + + +
+ + + + + +
+ +
+
+
+
+ 电站 +
+
+
+ +
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + + diff --git a/application/admin/view/bdz/lst.html b/application/admin/view/bdz/lst.html new file mode 100644 index 0000000..5130480 --- /dev/null +++ b/application/admin/view/bdz/lst.html @@ -0,0 +1,116 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + +
+ {include file="public/top" /} + +
+
+ + {include file="common/devleft" /} + + +
+ + + + + +
+ + +
+
+
+
+
+ + + + + + + + + + + + + + + + + {volist name="list" id="vo"} + + + + + + + + + + + + + {/volist} + +
ID名称关联ID有数推坐标电压等级规模描述SVGURL操作
{$vo.id}{$vo.mc}{$vo.ztjcid}{if condition="$vo['hascac'] neq 0"}有{else /}无{/if}{$vo.coordinate}{$vo.voltagegrade}{$vo.scale}{$vo.note}{$vo.svgurl} + + 编辑 + + + 删除 + +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + +
+ + diff --git a/application/admin/view/bdz/lst.html~ b/application/admin/view/bdz/lst.html~ new file mode 100644 index 0000000..5f06522 --- /dev/null +++ b/application/admin/view/bdz/lst.html~ @@ -0,0 +1,115 @@ + + + + 电站信息 + + + + + + + + + + + + + + + + + + {include file="public/top" /} + +
+
+ + {include file="common/devleft" /} + + +
+ + + + + +
+ + +
+
+
+
+
+ + + + + + + + + + + + + + + + + {volist name="list" id="vo"} + + + + + + + + + + + + + {/volist} + +
ID名称关联ID有数推坐标电压等级规模描述SVGURL操作
{$vo.id}{$vo.mc}{$vo.ztjcid}{if condition="$vo['hascac'] neq 0"}有{else /}无{/if}{$vo.coordinate}{$vo.voltagegrade}{$vo.scale}{$vo.note}{$vo.svgurl} + + 编辑 + + + 删除 + +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/cac/add.html b/application/admin/view/cac/add.html new file mode 100644 index 0000000..b263b70 --- /dev/null +++ b/application/admin/view/cac/add.html @@ -0,0 +1,377 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + {include file="public/top" /} + + + +
+ +
+ + + + {include file="common/devleft" /} + + + + + +
+ + + + + + + + + + + +
+ + + +
+ +
+ +
+ +
+ + 大数据推送平台 + +
+ +
+ +
+ +
+ + + + + +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + +
+ + + diff --git a/application/admin/view/cac/add.html~ b/application/admin/view/cac/add.html~ new file mode 100644 index 0000000..9952fb3 --- /dev/null +++ b/application/admin/view/cac/add.html~ @@ -0,0 +1,189 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + +
+
+ + {include file="common/devleft" /} + + +
+ + + + + +
+ +
+
+
+
+ 大数据推送平台 +
+
+
+
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/cac/edit.html b/application/admin/view/cac/edit.html new file mode 100644 index 0000000..982f8b2 --- /dev/null +++ b/application/admin/view/cac/edit.html @@ -0,0 +1,367 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + {include file="public/top" /} + + + +
+ +
+ + + + {include file="common/devleft" /} + + + + + +
+ + + + + + + + + + + +
+ + + +
+ +
+ +
+ +
+ + 大数据推送平台 + +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + +
+ + diff --git a/application/admin/view/cac/edit.html~ b/application/admin/view/cac/edit.html~ new file mode 100644 index 0000000..47481b5 --- /dev/null +++ b/application/admin/view/cac/edit.html~ @@ -0,0 +1,184 @@ + + + + 编辑大数据推送平台 + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + +
+
+ + {include file="common/devleft" /} + + +
+ + + + + +
+ +
+
+
+
+ 大数据推送平台 +
+
+
+ +
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + + diff --git a/application/admin/view/cac/lst.html b/application/admin/view/cac/lst.html new file mode 100644 index 0000000..8a9676e --- /dev/null +++ b/application/admin/view/cac/lst.html @@ -0,0 +1,130 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
+ {include file="public/top" /} + +
+
+ + {include file="common/devleft" /} + + +
+ + + + + +
+ + +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + {volist name="list" id="vo"} + + + + + + + + + + + + + + + + + {/volist} + +
ID名称所属主站平台所属电站生产厂家出厂编号出厂日期投运日期安装位置描述磁盘空间下行IP上行IP操作
{$vo.id}{$vo.name}{$vo.cagname}{$vo.bmc}{$vo.manufacture}{$vo.factoryint}{$vo.manufacturedate}{$vo.rundate}{$vo.location}{$vo.note}{$vo.diskfree}{$vo.downip}{$vo.upip} + + 编辑 + + + 删除 + +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + +
+ + diff --git a/application/admin/view/cac/lst.html~ b/application/admin/view/cac/lst.html~ new file mode 100644 index 0000000..8832b9b --- /dev/null +++ b/application/admin/view/cac/lst.html~ @@ -0,0 +1,129 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + +
+
+ + {include file="common/devleft" /} + + +
+ + + + + +
+ + +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + {volist name="list" id="vo"} + + + + + + + + + + + + + + + + + {/volist} + +
ID名称所属主站平台所属电站生产厂家出厂编号出厂日期投运日期安装位置描述磁盘空间下行IP上行IP操作
{$vo.id}{$vo.name}{$vo.cagname}{$vo.bmc}{$vo.manufacture}{$vo.factoryint}{$vo.manufacturedate}{$vo.rundate}{$vo.location}{$vo.note}{$vo.diskfree}{$vo.downip}{$vo.upip} + + 编辑 + + + 删除 + +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/cag/add.html b/application/admin/view/cag/add.html new file mode 100644 index 0000000..42aa1db --- /dev/null +++ b/application/admin/view/cag/add.html @@ -0,0 +1,329 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + + + + +
+ +
+ + + + {include file="common/devleft" /} + + + + + +
+ + + + + + + + + + + +
+ + + +
+ +
+ +
+ +
+ + 主站平台信息 + +
+ +
+ +
+ +
+ + + + + +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/cag/add.html~ b/application/admin/view/cag/add.html~ new file mode 100644 index 0000000..d5a16a6 --- /dev/null +++ b/application/admin/view/cag/add.html~ @@ -0,0 +1,165 @@ + + + + 添加主站平台信息 + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
+
+ + {include file="common/devleft" /} + + +
+ + + + + +
+ +
+
+
+
+ 主站平台信息 +
+
+
+
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/cag/edit.html b/application/admin/view/cag/edit.html new file mode 100644 index 0000000..0daedf7 --- /dev/null +++ b/application/admin/view/cag/edit.html @@ -0,0 +1,319 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + + + + +
+ +
+ + + + {include file="common/devleft" /} + + + + + +
+ + + + + + + + + + + +
+ + + +
+ +
+ +
+ +
+ + 主站平台信息 + +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/cag/edit.html~ b/application/admin/view/cag/edit.html~ new file mode 100644 index 0000000..d5adaf7 --- /dev/null +++ b/application/admin/view/cag/edit.html~ @@ -0,0 +1,160 @@ + + + + 编辑主站平台信息 + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
+
+ + {include file="common/devleft" /} + + +
+ + + + + +
+ +
+
+
+
+ 主站平台信息 +
+
+
+ +
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + + diff --git a/application/admin/view/cag/lst.html b/application/admin/view/cag/lst.html new file mode 100644 index 0000000..0da75b7 --- /dev/null +++ b/application/admin/view/cag/lst.html @@ -0,0 +1,125 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + +
+
+ + {include file="common/devleft" /} + + +
+ + + + + +
+ + +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + {volist name="list" id="vo"} + + + + + + + + + + + + + + + {/volist} + +
ID名称生产厂家出厂编号出厂日期投运日期安装位置描述磁盘空间下行IP上行IP操作
{$vo.id}{$vo.name}{$vo.manufacture}{$vo.factoryint}{$vo.manufacturedate}{$vo.rundate}{$vo.location}{$vo.note}{$vo.diskfree}{$vo.downip}{$vo.upip} + + 编辑 + + + 删除 + +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/cag/lst.html~ b/application/admin/view/cag/lst.html~ new file mode 100644 index 0000000..af139b4 --- /dev/null +++ b/application/admin/view/cag/lst.html~ @@ -0,0 +1,125 @@ + + + + 主站平台信息信息 + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + +
+
+ + {include file="common/devleft" /} + + +
+ + + + + +
+ + +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + {volist name="list" id="vo"} + + + + + + + + + + + + + + + {/volist} + +
ID名称生产厂家出厂编号出厂日期投运日期安装位置描述磁盘空间下行IP上行IP操作
{$vo.id}{$vo.name}{$vo.manufacture}{$vo.factoryint}{$vo.manufacturedate}{$vo.rundate}{$vo.location}{$vo.note}{$vo.diskfree}{$vo.downip}{$vo.upip} + + 编辑 + + + 删除 + +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/cate/add.html b/application/admin/view/cate/add.html new file mode 100644 index 0000000..89597d2 --- /dev/null +++ b/application/admin/view/cate/add.html @@ -0,0 +1,110 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + +
+ {include file="public/top" /} +
+
+ + {include file="public/left" /} + + +
+ + + + +
+ +
+
+
+
+ 新增菜单 +
+
+
+
+ +
+ +
+ +
+

* 必填

+
+ +
+ +
+ +
+

* 必填

+
+
+ +
+ +
+

* 必填

+
+
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + +
+ diff --git a/application/admin/view/cate/add.html~ b/application/admin/view/cate/add.html~ new file mode 100644 index 0000000..23d2df7 --- /dev/null +++ b/application/admin/view/cate/add.html~ @@ -0,0 +1,109 @@ + + + + ThinkPHP5.0 + + + + + + + + + + + + + + + + {include file="public/top" /} +
+
+ + {include file="public/left" /} + + +
+ + + + +
+ +
+
+
+
+ 新增菜单 +
+
+
+
+ +
+ +
+ +
+

* 必填

+
+ +
+ +
+ +
+

* 必填

+
+
+ +
+ +
+

* 必填

+
+
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/cate/edit.html b/application/admin/view/cate/edit.html new file mode 100644 index 0000000..39568f4 --- /dev/null +++ b/application/admin/view/cate/edit.html @@ -0,0 +1,110 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + +
+ {include file="public/top" /} +
+
+ + {include file="public/left" /} + + +
+ + + + +
+ +
+
+
+
+ 编辑菜单 +
+
+
+
+
+ +
+ +
+

* 必填

+
+ + +
+ +
+ +
+

* 必填

+
+
+ +
+ +
+

* 必填

+
+
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + +
+ + diff --git a/application/admin/view/cate/edit.html~ b/application/admin/view/cate/edit.html~ new file mode 100644 index 0000000..3ac0c6e --- /dev/null +++ b/application/admin/view/cate/edit.html~ @@ -0,0 +1,109 @@ + + + + ThinkPHP5.0 + + + + + + + + + + + + + + + + {include file="public/top" /} +
+
+ + {include file="public/left" /} + + +
+ + + + +
+ +
+
+
+
+ 编辑菜单 +
+
+
+
+
+ +
+ +
+

* 必填

+
+ + +
+ +
+ +
+

* 必填

+
+
+ +
+ +
+

* 必填

+
+
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/cate/lst.html b/application/admin/view/cate/lst.html new file mode 100644 index 0000000..76b93a8 --- /dev/null +++ b/application/admin/view/cate/lst.html @@ -0,0 +1,104 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + +
+ {include file="public/top" /} + +
+
+ + {include file="public/left" /} + + +
+ + + + + +
+ + +
+
+
+
+
+ + + + + + + + + + + {volist name="cateres" id="cate"} + + + + + + + {/volist} + +
ID节点名称节点链接操作
{$cate.id}{if condition="$cate['level'] neq 0"}|{/if}{$cate.pidname}{$cate.linkurl} + + 编辑 + + + 删除 + +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + +
+ diff --git a/application/admin/view/cate/lst.html~ b/application/admin/view/cate/lst.html~ new file mode 100644 index 0000000..4f44b28 --- /dev/null +++ b/application/admin/view/cate/lst.html~ @@ -0,0 +1,103 @@ + + + + ThinkPHP5.0 + + + + + + + + + + + + + + + + + + {include file="public/top" /} + +
+
+ + {include file="public/left" /} + + +
+ + + + + +
+ + +
+
+
+
+
+ + + + + + + + + + + {volist name="cateres" id="cate"} + + + + + + + {/volist} + +
ID节点名称节点链接操作
{$cate.id}{if condition="$cate['level'] neq 0"}|{/if}{$cate.pidname}{$cate.linkurl} + + 编辑 + + + 删除 + +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/common/devleft.html b/application/admin/view/common/devleft.html new file mode 100644 index 0000000..4ee82fb --- /dev/null +++ b/application/admin/view/common/devleft.html @@ -0,0 +1,82 @@ + diff --git a/application/admin/view/common/devleft.html~ b/application/admin/view/common/devleft.html~ new file mode 100644 index 0000000..891fdee --- /dev/null +++ b/application/admin/view/common/devleft.html~ @@ -0,0 +1,82 @@ + diff --git a/application/admin/view/common/left.html b/application/admin/view/common/left.html new file mode 100644 index 0000000..1462a08 --- /dev/null +++ b/application/admin/view/common/left.html @@ -0,0 +1,80 @@ + \ No newline at end of file diff --git a/application/admin/view/common/top.html b/application/admin/view/common/top.html new file mode 100644 index 0000000..108d74f --- /dev/null +++ b/application/admin/view/common/top.html @@ -0,0 +1,57 @@ + diff --git a/application/admin/view/common/userleft.html b/application/admin/view/common/userleft.html new file mode 100644 index 0000000..cb7eda8 --- /dev/null +++ b/application/admin/view/common/userleft.html @@ -0,0 +1,80 @@ + diff --git a/application/admin/view/common/userleft.html~ b/application/admin/view/common/userleft.html~ new file mode 100644 index 0000000..1462a08 --- /dev/null +++ b/application/admin/view/common/userleft.html~ @@ -0,0 +1,80 @@ + \ No newline at end of file diff --git a/application/admin/view/conf/add.html b/application/admin/view/conf/add.html new file mode 100644 index 0000000..632026d --- /dev/null +++ b/application/admin/view/conf/add.html @@ -0,0 +1,243 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + + + + +
+ +
+ + + + {include file="public/left" /} + + + + + +
+ + + + + + + + + + + +
+ + + +
+ +
+ +
+ +
+ + 新增配置 + +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ +

* 必填

+ +
+ +
+ + + +
+ + + +
+ +

* 必填

+ +
+ +
+ + + +
+ + + +
+ +

* 必填

+ +
+ +
+ + + +
+ + + +
+ +
+ +
+ +
+ + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/conf/add.html~ b/application/admin/view/conf/add.html~ new file mode 100644 index 0000000..55a135e --- /dev/null +++ b/application/admin/view/conf/add.html~ @@ -0,0 +1,122 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
+
+ + {include file="public/left" /} + + +
+ + + + + +
+ +
+
+
+
+ 新增配置 +
+
+
+
+
+ +
+ +
+

* 必填

+
+
+ +
+ +
+

* 必填

+
+
+ +
+ +
+

* 必填

+
+
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/conf/conf.html b/application/admin/view/conf/conf.html new file mode 100644 index 0000000..0ab49f7 --- /dev/null +++ b/application/admin/view/conf/conf.html @@ -0,0 +1,267 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + + + + +
+ +
+ + + + {include file="public/left" /} + + + + + +
+ + + + + + + + + + + +
+ + + + + +
+ +
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + $v):?> + + + + + + + + + + + + + + + +
配置名称配置值
+ + + + + + + + + + $v1): + + ?> + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/conf/conf.html~ b/application/admin/view/conf/conf.html~ new file mode 100644 index 0000000..3e32b8c --- /dev/null +++ b/application/admin/view/conf/conf.html~ @@ -0,0 +1,134 @@ + + + + ThinkPHP5.0 + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
+
+ + {include file="public/left" /} + + +
+ + + + + +
+ + +
+
+
+
+
+
+ + + + + + + + + $v):?> + + + + + + + +
配置名称配置值
+ + + + + $v1): + ?> + + + + + + + + +
+
+
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/conf/edit.html b/application/admin/view/conf/edit.html new file mode 100644 index 0000000..b382a57 --- /dev/null +++ b/application/admin/view/conf/edit.html @@ -0,0 +1,245 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + + + + +
+ +
+ + + + {include file="public/left" /} + + + + + +
+ + + + + + + + + + + +
+ + + +
+ +
+ +
+ +
+ + 修改配置 + +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +

* 必填

+ +
+ +
+ + + +
+ + + +
+ +

* 必填

+ +
+ +
+ + + +
+ + + +
+ +

* 必填

+ +
+ +
+ + + +
+ + + +
+ +
+ +
+ +
+ + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/conf/edit.html~ b/application/admin/view/conf/edit.html~ new file mode 100644 index 0000000..117cf53 --- /dev/null +++ b/application/admin/view/conf/edit.html~ @@ -0,0 +1,123 @@ + + + + ThinkPHP5.0 + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
+
+ + {include file="public/left" /} + + +
+ + + + + +
+ +
+
+
+
+ 修改配置 +
+
+
+
+ +
+ +
+ +
+

* 必填

+
+
+ +
+ +
+

* 必填

+
+
+ +
+ +
+

* 必填

+
+
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/conf/lst.html b/application/admin/view/conf/lst.html new file mode 100644 index 0000000..feeb59e --- /dev/null +++ b/application/admin/view/conf/lst.html @@ -0,0 +1,263 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + + + + +
+ +
+ + + + {include file="public/left" /} + + + + + +
+ + + + + + + + + + + +
+ + + + + +
+ +
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + {volist name="confres" id="conf"} + + + + + + + + + + + + + + + + + + {/volist} + + + + + +
ID排序英文名称中文名称配置类型操作
{$conf.id}{$conf.enname}{$conf.cnname} + + {if condition="$conf['type'] eq 1"} + + 单行文本 + + {elseif condition="$conf['type'] eq 2"} + + 多行文本 + + {elseif condition="$conf['type'] eq 3"} + + 单选按钮 + + {elseif condition="$conf['type'] eq 4"} + + 复选框 + + {elseif condition="$conf['type'] eq 5"} + + 下拉菜单 + + {else} + + 未知类型 + + {/if} + + + + + + + + 编辑 + + + + + + 删除 + + + +
+ +
+ +
+ +
+ +
+ + {$confres->render()} + +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/conf/lst.html~ b/application/admin/view/conf/lst.html~ new file mode 100644 index 0000000..f2909a6 --- /dev/null +++ b/application/admin/view/conf/lst.html~ @@ -0,0 +1,132 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
+
+ + {include file="public/left" /} + + +
+ + + + + +
+ + +
+
+
+
+
+
+ + + + + + + + + + + + + {volist name="confres" id="conf"} + + + + + + + + + {/volist} + + +
ID排序英文名称中文名称配置类型操作
{$conf.id}{$conf.enname}{$conf.cnname} + {if condition="$conf['type'] eq 1"} + 单行文本 + {elseif condition="$conf['type'] eq 2"} + 多行文本 + {elseif condition="$conf['type'] eq 3"} + 单选按钮 + {elseif condition="$conf['type'] eq 4"} + 复选框 + {elseif condition="$conf['type'] eq 5"} + 下拉菜单 + {else} + 未知类型 + {/if} + + + + 编辑 + + + 删除 + +
+
+
+
+
+ {$confres->render()} +
+
+
+
+
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + diff --git a/application/admin/view/devsncfg/add.html b/application/admin/view/devsncfg/add.html new file mode 100644 index 0000000..d45d6e2 --- /dev/null +++ b/application/admin/view/devsncfg/add.html @@ -0,0 +1,220 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ +
+ +
+ +
+ + 设备编码 + +
+ +
+ +
+ +
+ + + +
+ + + +
+ +
+
+
+ + + +
+ +
+
+
+ + + +
+ +
+
+
+ + + +
+ +
+
+
+ + +
+ + +
+
+
+ +
+ +
+
+
+ +
+ + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/devsncfg/edit.html b/application/admin/view/devsncfg/edit.html new file mode 100644 index 0000000..c8ea591 --- /dev/null +++ b/application/admin/view/devsncfg/edit.html @@ -0,0 +1,216 @@ + + + + + + + 综合在线监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ +
+ +
+ +
+ + 设备编码 + +
+ +
+ +
+
+ + +
+ + + +
+ +
+
+
+ + + +
+ +
+
+
+ + + +
+ +
+
+
+ + + +
+ +
+
+
+ + +
+ + +
+
+
+ +
+ +
+
+ +
+ +
+ + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + diff --git a/application/admin/view/devsncfg/index.html b/application/admin/view/devsncfg/index.html new file mode 100644 index 0000000..14f9977 --- /dev/null +++ b/application/admin/view/devsncfg/index.html @@ -0,0 +1,163 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + +
+ {include file="public/top" /} + + +
+
+
+
+ 监测设备列表 +
+
+
    +
    +
    +
    +
    +
    + 系统管理   /   + 设备编码配置 +
    +
    + +
    +
    +
    +
    +
    + +
    + + diff --git a/application/admin/view/devsncfg/lst.html b/application/admin/view/devsncfg/lst.html new file mode 100644 index 0000000..0d44631 --- /dev/null +++ b/application/admin/view/devsncfg/lst.html @@ -0,0 +1,225 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + +
    + +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + {volist name="list" id="vo"} + + + + + + + + + + + + + + + + + + + + {/volist} + + + +
    设备IDCAC编码传感器编码被监测设备编码监测类型相别传感器序号操作
    {$vo.eqmid}{$vo.cacid}{$vo.sensorid}{$vo.equipmentid}{$vo.monitortype}{$vo.phase}{$vo.sensorindex} + + + 编辑 + + + + + + 删除 + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    +
    + +
    + + + +
    + +
    + + + {$list->render()} + + + + +
    + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/dmin1/add.html b/application/admin/view/dmin1/add.html new file mode 100644 index 0000000..9313b28 --- /dev/null +++ b/application/admin/view/dmin1/add.html @@ -0,0 +1,208 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + +
    + + + + + + + +
    新建用户 (总经理室) +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    用户基本信息
    用户名: +   +
    真实姓名: +   +
    主角色: +    +
    部门: +    +
    用户排序号: +   + 用于同角色用户的排序 +
    用户权限信息
    管理范围: + + 在管理型模块中起约束作用 +
    访问控制: +   +   + + + + +
    即时通讯使用范围: + +
    即时通讯广播权限: + +
    用户可自定义选项
    +    + +
    + + + + diff --git a/application/admin/view/dmin1/add.html~ b/application/admin/view/dmin1/add.html~ new file mode 100644 index 0000000..0e65c59 --- /dev/null +++ b/application/admin/view/dmin1/add.html~ @@ -0,0 +1,208 @@ + + + + ThinkPHP5.0 + + +
    + + + + + + + +
    新建用户 (总经理室) +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    用户基本信息
    用户名: +   +
    真实姓名: +   +
    主角色: +    +
    部门: +    +
    用户排序号: +   + 用于同角色用户的排序 +
    用户权限信息
    管理范围: + + 在管理型模块中起约束作用 +
    访问控制: +   +   + + + + +
    即时通讯使用范围: + +
    即时通讯广播权限: + +
    用户可自定义选项
    +    + +
    + + + + diff --git a/application/admin/view/dmin1/lst.html b/application/admin/view/dmin1/lst.html new file mode 100644 index 0000000..f330c3f --- /dev/null +++ b/application/admin/view/dmin1/lst.html @@ -0,0 +1,331 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + +
    新建用户 (总经理室) + +
    + +
    + + + +
    + +
    + + + + + + + + + + + +
    + + + + + + + + + + + +
    管理用户(总经理室)- 5人 + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + chenjinmin陈金敏总经理室正常班总经理本部门185天17小时41分 + + 编辑  + +
      + + + + caihaibing蔡海兵总经理室正常班副总经理本部门22分 + + 编辑  + +
      + + + + hanruniu韩孺牛总经理室正常班副总经理本部门14天22小时8分 + + 编辑  + +
      + + + + xufei许飞总经理室正常班副总经理本部门1天23分 + + 编辑  + +
      + + + + zhangjunru张军茹总经理室正常班副总经理全体24天17小时7分 + + 编辑  + +
    选择用户名真实姓名部门排班角色管理范围闲置操作
      + + + +   + +   + +   + +   + +
    + + + +
    + + + + diff --git a/application/admin/view/dmin1/lst.html~ b/application/admin/view/dmin1/lst.html~ new file mode 100644 index 0000000..e6fb64e --- /dev/null +++ b/application/admin/view/dmin1/lst.html~ @@ -0,0 +1,166 @@ + + + + ThinkPHP5.0 + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + +
    新建用户 (总经理室) +
    +
    + +
    +
    + + + + + +
    + + + + + +
    管理用户(总经理室)- 5人 + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + chenjinmin陈金敏总经理室正常班总经理本部门185天17小时41分 + 编辑  +
      + + caihaibing蔡海兵总经理室正常班副总经理本部门22分 + 编辑  +
      + + hanruniu韩孺牛总经理室正常班副总经理本部门14天22小时8分 + 编辑  +
      + + xufei许飞总经理室正常班副总经理本部门1天23分 + 编辑  +
      + + zhangjunru张军茹总经理室正常班副总经理全体24天17小时7分 + 编辑  +
    选择用户名真实姓名部门排班角色管理范围闲置操作
      + +   +   +   +   +
    + +
    + + diff --git a/application/admin/view/hwsb/add.html b/application/admin/view/hwsb/add.html new file mode 100644 index 0000000..e04ac01 --- /dev/null +++ b/application/admin/view/hwsb/add.html @@ -0,0 +1,257 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + + + + +
    + +
    + + + + {include file="common/devleft" /} + + + + + +
    + + + + + + + + + + + +
    + + + +
    + +
    + +
    + +
    + + 红外设备 + +
    + +
    + +
    + +
    + + + +
    + + + +
    + + + +
    + + + +
    +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + + + + +
    + +
    + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/hwsb/edit.html b/application/admin/view/hwsb/edit.html new file mode 100644 index 0000000..79db5eb --- /dev/null +++ b/application/admin/view/hwsb/edit.html @@ -0,0 +1,136 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + +
    +
    +
    +
    + 监测设备 +
    +
    +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + + + diff --git a/application/admin/view/hwsb/lst.html b/application/admin/view/hwsb/lst.html new file mode 100644 index 0000000..3ae3ae6 --- /dev/null +++ b/application/admin/view/hwsb/lst.html @@ -0,0 +1,112 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + + +
    +
    +
    +
    +
    + + + + + + + + + + + + {volist name="list" id="vo"} + + + + + + + + {/volist} + +
    ID预置点规则编号规则类型操作
    {$vo.id}{$vo.nPresetId}{$vo.nRuleId}{$vo.nMeterType} + + 编辑 + + + 删除 + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + + diff --git a/application/admin/view/ied/add.html b/application/admin/view/ied/add.html new file mode 100644 index 0000000..42420ea --- /dev/null +++ b/application/admin/view/ied/add.html @@ -0,0 +1,409 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +{include file="public/top" /} + +
    + +
    + + + + {include file="common/devleft" /} + + + + + +
    + + + + + + + + + + + +
    + + + +
    + +
    + +
    + +
    + + IED + +
    + +
    + +
    + +
    + + + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + +
    + diff --git a/application/admin/view/ied/add.html~ b/application/admin/view/ied/add.html~ new file mode 100644 index 0000000..3bb87ae --- /dev/null +++ b/application/admin/view/ied/add.html~ @@ -0,0 +1,205 @@ + + + + 添加IED + + + + + + + + + + + + + + + + + + + + +{include file="public/top" /} +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + +
    +
    +
    +
    + IED +
    +
    +
    +
    + + +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + + diff --git a/application/admin/view/ied/edit.html b/application/admin/view/ied/edit.html new file mode 100644 index 0000000..3c780c7 --- /dev/null +++ b/application/admin/view/ied/edit.html @@ -0,0 +1,413 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + {include file="public/top" /} + +
    + +
    + + + + {include file="common/devleft" /} + + + + + +
    + + + + + + + + + + + +
    + + + +
    + +
    + +
    + +
    + + IED + +
    + +
    + +
    + + + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + diff --git a/application/admin/view/ied/edit.html~ b/application/admin/view/ied/edit.html~ new file mode 100644 index 0000000..c933376 --- /dev/null +++ b/application/admin/view/ied/edit.html~ @@ -0,0 +1,207 @@ + + + + 编辑IED + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + +
    +
    +
    +
    + IED +
    +
    +
    + + +
    + +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + + + diff --git a/application/admin/view/ied/lst.html b/application/admin/view/ied/lst.html new file mode 100644 index 0000000..f2b9c10 --- /dev/null +++ b/application/admin/view/ied/lst.html @@ -0,0 +1,129 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
    +{include file="public/top" /} +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + {volist name="list" id="vo"} + + + + + + + + + + + + + + + + + {/volist} + +
    ID名称所属主站平台所属大数据推送平台生产厂家出厂编号出厂日期投运日期安装位置描述磁盘空间下行IP上行IP操作
    {$vo.id}{$vo.name}{$vo.cagname}{$vo.cacname}{$vo.manufacture}{$vo.factoryint}{$vo.manufacturedate}{$vo.rundate}{$vo.location}{$vo.note}{$vo.diskfree}{$vo.downip}{$vo.upip} + + 编辑 + + + 删除 + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + +
    + diff --git a/application/admin/view/ied/lst.html~ b/application/admin/view/ied/lst.html~ new file mode 100644 index 0000000..1c36c8f --- /dev/null +++ b/application/admin/view/ied/lst.html~ @@ -0,0 +1,128 @@ + + + + IED + + + + + + + + + + + + + + + + + + +{include file="public/top" /} +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + {volist name="list" id="vo"} + + + + + + + + + + + + + + + + + {/volist} + +
    ID名称所属主站平台所属大数据推送平台生产厂家出厂编号出厂日期投运日期安装位置描述磁盘空间下行IP上行IP操作
    {$vo.id}{$vo.name}{$vo.cagname}{$vo.cacname}{$vo.manufacture}{$vo.factoryint}{$vo.manufacturedate}{$vo.rundate}{$vo.location}{$vo.note}{$vo.diskfree}{$vo.downip}{$vo.upip} + + 编辑 + + + 删除 + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + + diff --git a/application/admin/view/index/index.html b/application/admin/view/index/index.html new file mode 100644 index 0000000..30805d2 --- /dev/null +++ b/application/admin/view/index/index.html @@ -0,0 +1,135 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + {include file="public/top" /} + + + + + +
    + +
    + + + + {include file="public/left" /} + + + + + +
    + + + + + + + + + + + +
    + + + +
    + + + +
    + +
    + + + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + +
    + diff --git a/application/admin/view/index/index.html~ b/application/admin/view/index/index.html~ new file mode 100644 index 0000000..1c6ffa7 --- /dev/null +++ b/application/admin/view/index/index.html~ @@ -0,0 +1,69 @@ + + + + ThinkPHP5.0 + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
    +
    + + {include file="public/left" /} + + +
    + + + + + +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    + + + + + + + + + + + diff --git a/application/admin/view/jg/add.html b/application/admin/view/jg/add.html new file mode 100644 index 0000000..294214b --- /dev/null +++ b/application/admin/view/jg/add.html @@ -0,0 +1,220 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + {include file="public/top" /} + + + +
    + +
    + + + + {include file="common/devleft" /} + + + + + +
    + + + + + + + + + + + +
    + + + +
    + +
    + +
    + +
    + + 设备类型 + +
    + +
    + +
    + +
    + + + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + +
    + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + diff --git a/application/admin/view/jg/add.html~ b/application/admin/view/jg/add.html~ new file mode 100644 index 0000000..38d51c4 --- /dev/null +++ b/application/admin/view/jg/add.html~ @@ -0,0 +1,110 @@ + + + + 添加设备间隔信息 + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + +
    +
    +
    +
    + 设备间隔 +
    +
    +
    +
    + + +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + + diff --git a/application/admin/view/jg/edit.html b/application/admin/view/jg/edit.html new file mode 100644 index 0000000..8f59bf3 --- /dev/null +++ b/application/admin/view/jg/edit.html @@ -0,0 +1,106 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + +
    + {include file="public/top" /} +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + +
    +
    +
    +
    + 设备类型 +
    +
    +
    + +
    + +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + +
    + + diff --git a/application/admin/view/jg/edit.html~ b/application/admin/view/jg/edit.html~ new file mode 100644 index 0000000..75ac30f --- /dev/null +++ b/application/admin/view/jg/edit.html~ @@ -0,0 +1,106 @@ + + + + 编辑设备间隔 + + + + + + + + + + + + + + + + + + + {include file="public/top" /} +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + +
    +
    +
    +
    + 设备间隔 +
    +
    +
    + +
    + +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + + + diff --git a/application/admin/view/jg/lst.html b/application/admin/view/jg/lst.html new file mode 100644 index 0000000..f776985 --- /dev/null +++ b/application/admin/view/jg/lst.html @@ -0,0 +1,109 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
    + {include file="public/top" /} +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + + +
    +
    +
    +
    +
    + + + + + + + + + + + {volist name="list" id="vo"} + + + + + + + {/volist} + +
    ID名称所属电站操作
    {$vo.id}{$vo.mc}{$vo.bmc} + + 编辑 + + + 删除 + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + +
    + + diff --git a/application/admin/view/jg/lst.html~ b/application/admin/view/jg/lst.html~ new file mode 100644 index 0000000..62ef390 --- /dev/null +++ b/application/admin/view/jg/lst.html~ @@ -0,0 +1,108 @@ + + + + 设备间隔信息 + + + + + + + + + + + + + + + + + + + {include file="public/top" /} +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + + +
    +
    +
    +
    +
    + + + + + + + + + + + {volist name="list" id="vo"} + + + + + + + {/volist} + +
    ID名称所属电站操作
    {$vo.id}{$vo.mc}{$vo.bmc} + + 编辑 + + + 删除 + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + + diff --git a/application/admin/view/link/add.html b/application/admin/view/link/add.html new file mode 100644 index 0000000..ab439ee --- /dev/null +++ b/application/admin/view/link/add.html @@ -0,0 +1,217 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + + + + +
    + +
    + + + + {include file="public/left" /} + + + + + +
    + + + + + + + + + + + +
    + + + +
    + +
    + +
    + +
    + + 新增链接 + +
    + +
    + +
    + +
    + +
    + + + +
    + + + +
    + +

    * 必填

    + +
    + +
    + + + +
    + + + +
    + +

    * 必填

    + +
    + +
    + + + +
    + + + +
    + +

    * 必填

    + +
    + +
    + +
    + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/link/add.html~ b/application/admin/view/link/add.html~ new file mode 100644 index 0000000..0b2e587 --- /dev/null +++ b/application/admin/view/link/add.html~ @@ -0,0 +1,109 @@ + + + + ThinkPHP5.0 + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
    +
    + + {include file="public/left" /} + + +
    + + + + + +
    + +
    +
    +
    +
    + 新增链接 +
    +
    +
    +
    +
    + +
    + +
    +

    * 必填

    +
    +
    + +
    + +
    +

    * 必填

    +
    +
    + +
    + +
    +

    * 必填

    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + + diff --git a/application/admin/view/link/edit.html b/application/admin/view/link/edit.html new file mode 100644 index 0000000..2afc027 --- /dev/null +++ b/application/admin/view/link/edit.html @@ -0,0 +1,219 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + + + + +
    + +
    + + + + {include file="public/left" /} + + + + + +
    + + + + + + + + + + + +
    + + + +
    + +
    + +
    + +
    + + 修改链接 + +
    + +
    + +
    + +
    + + + +
    + + + +
    + + + +
    + +

    * 必填

    + +
    + +
    + + + +
    + + + +
    + +

    * 必填

    + +
    + +
    + + + +
    + + + +
    + +

    * 必填

    + +
    + +
    + +
    + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/link/edit.html~ b/application/admin/view/link/edit.html~ new file mode 100644 index 0000000..0865b04 --- /dev/null +++ b/application/admin/view/link/edit.html~ @@ -0,0 +1,110 @@ + + + + ThinkPHP5.0 + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
    +
    + + {include file="public/left" /} + + +
    + + + + + +
    + +
    +
    +
    +
    + 修改链接 +
    +
    +
    +
    + +
    + +
    + +
    +

    * 必填

    +
    +
    + +
    + +
    +

    * 必填

    +
    +
    + +
    + +
    +

    * 必填

    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + + diff --git a/application/admin/view/link/lst.html b/application/admin/view/link/lst.html new file mode 100644 index 0000000..5308f03 --- /dev/null +++ b/application/admin/view/link/lst.html @@ -0,0 +1,233 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + + + + +
    + +
    + + + + {include file="public/left" /} + + + + + +
    + + + + + + + + + + + +
    + + + + + +
    + +
    + +
    + +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + {volist name="linkres" id="link"} + + + + + + + + + + + + + + + + + + {/volist} + + + + + +
    ID排序标题链接地址描述操作
    {$link.id}{$link.title}{$link.url}{$link.desc} + + + + 编辑 + + + + + + 删除 + + + +
    + +
    + +
    + +
    + +
    + + {$linkres->render()} + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/link/lst.html~ b/application/admin/view/link/lst.html~ new file mode 100644 index 0000000..fa03f24 --- /dev/null +++ b/application/admin/view/link/lst.html~ @@ -0,0 +1,117 @@ + + + + ThinkPHP5.0 + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
    +
    + + {include file="public/left" /} + + +
    + + + + + +
    + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + {volist name="linkres" id="link"} + + + + + + + + + {/volist} + + +
    ID排序标题链接地址描述操作
    {$link.id}{$link.title}{$link.url}{$link.desc} + + 编辑 + + + 删除 + +
    +
    +
    +
    +
    + {$linkres->render()} +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + + diff --git a/application/admin/view/login/index.html b/application/admin/view/login/index.html new file mode 100644 index 0000000..91fec72 --- /dev/null +++ b/application/admin/view/login/index.html @@ -0,0 +1,107 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/login/index.html~ b/application/admin/view/login/index.html~ new file mode 100644 index 0000000..bd7d302 --- /dev/null +++ b/application/admin/view/login/index.html~ @@ -0,0 +1,54 @@ + + + + ThinkPHP5.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/lx/add.html b/application/admin/view/lx/add.html new file mode 100644 index 0000000..457684a --- /dev/null +++ b/application/admin/view/lx/add.html @@ -0,0 +1,205 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + {include file="public/top" /} + + + +
    + +
    + + + + {include file="common/devleft" /} + + + + + +
    + + + + + + + + + + + +
    + + + +
    + +
    + +
    + +
    + + 设备间隔 + +
    + +
    + +
    + +
    + + + + + +
    + + + +
    + + + +
    + + + +
    + + + + + +
    + +
    + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/application/admin/view/lx/add.html~ b/application/admin/view/lx/add.html~ new file mode 100644 index 0000000..1f3406c --- /dev/null +++ b/application/admin/view/lx/add.html~ @@ -0,0 +1,103 @@ + + + + 添加设备类型信息 + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + +
    +
    +
    +
    + 设备类型 +
    +
    +
    +
    + + +
    + +
    + +
    + +
    + + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + + diff --git a/application/admin/view/lx/edit.html b/application/admin/view/lx/edit.html new file mode 100644 index 0000000..4cd7984 --- /dev/null +++ b/application/admin/view/lx/edit.html @@ -0,0 +1,94 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + +
    + {include file="public/top" /} + +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + +
    +
    +
    +
    + 设备间隔 +
    +
    +
    + +
    + +
    + +
    + +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + +
    + + diff --git a/application/admin/view/lx/edit.html~ b/application/admin/view/lx/edit.html~ new file mode 100644 index 0000000..8f21983 --- /dev/null +++ b/application/admin/view/lx/edit.html~ @@ -0,0 +1,93 @@ + + + + 编辑设备类型 + + + + + + + + + + + + + + + + + + {include file="public/top" /} + +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + +
    +
    +
    +
    + 设备类型 +
    +
    +
    + +
    + +
    + +
    + +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + + + diff --git a/application/admin/view/lx/lst.html b/application/admin/view/lx/lst.html new file mode 100644 index 0000000..c1bae6f --- /dev/null +++ b/application/admin/view/lx/lst.html @@ -0,0 +1,109 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
    + {include file="public/top" /} +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + + +
    +
    +
    +
    +
    + + + + + + + + + + {volist name="list" id="vo"} + + + + + + {/volist} + + +
    ID名称操作
    {$vo.id}{$vo.mc} + + 编辑 + + + 删除 + +
    +
    + {$list->render()} +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + +
    + diff --git a/application/admin/view/lx/lst.html~ b/application/admin/view/lx/lst.html~ new file mode 100644 index 0000000..2ffd075 --- /dev/null +++ b/application/admin/view/lx/lst.html~ @@ -0,0 +1,108 @@ + + + + 设备类型信息 + + + + + + + + + + + + + + + + + + + {include file="public/top" /} +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + + +
    +
    +
    +
    +
    + + + + + + + + + + {volist name="list" id="vo"} + + + + + + {/volist} + + +
    ID名称操作
    {$vo.id}{$vo.mc} + + 编辑 + + + 删除 + +
    +
    + {$list->render()} +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + + diff --git a/application/admin/view/menu/add.html b/application/admin/view/menu/add.html new file mode 100644 index 0000000..cf3a25b --- /dev/null +++ b/application/admin/view/menu/add.html @@ -0,0 +1,303 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + + +
    + +
    + + + + {include file="common/devleft" /} + + + + + +
    + + + + + + + + + + + +
    + + + +
    + +
    + +
    + +
    + + 电站 + +
    + +
    + +
    + +
    + + + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/menu/edit.html b/application/admin/view/menu/edit.html new file mode 100644 index 0000000..f45f522 --- /dev/null +++ b/application/admin/view/menu/edit.html @@ -0,0 +1,146 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + {include file="public/top" /} + +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + +
    +
    +
    +
    + 电站 +
    +
    +
    + +
    + +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + + + diff --git a/application/admin/view/menu/ls11t.html b/application/admin/view/menu/ls11t.html new file mode 100644 index 0000000..a296a91 --- /dev/null +++ b/application/admin/view/menu/ls11t.html @@ -0,0 +1,199 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + {include file="public/top" /} +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + + +
    +
    +
    menu +
    + 菜单 +
    +
    +
    +
    +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + + diff --git a/application/admin/view/menu/lst.html b/application/admin/view/menu/lst.html new file mode 100644 index 0000000..9ccd62a --- /dev/null +++ b/application/admin/view/menu/lst.html @@ -0,0 +1,114 @@ + + + + 抽水蓄能电站智能化状态监测系统s + + + + + + + + + + + + + + + + + + {include file="public/top" /} +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + {volist name="list" id="vo"} + + + + + + + + + + + + + {/volist} + +
    ID名称关联ID有数推坐标电压等级规模描述SVGURL操作
    {$vo.id}{$vo.mc}{$vo.ztjcid}{if condition="$vo['hascac'] neq 0"}有{else /}无{/if}{$vo.coordinate}{$vo.voltagegrade}{$vo.scale}{$vo.note}{$vo.svgurl} + + 编辑 + + + 删除 + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + + diff --git a/application/admin/view/mlx/add.html b/application/admin/view/mlx/add.html new file mode 100644 index 0000000..85140b3 --- /dev/null +++ b/application/admin/view/mlx/add.html @@ -0,0 +1,205 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + {include file="public/top" /} + +
    + +
    + + + + {include file="common/devleft" /} + + + + + +
    + + + + + + + + + + + +
    + + + +
    + +
    + +
    + +
    + + 监测设备类型 + +
    + +
    + +
    + +
    + + + + + +
    + + + +
    + + + +
    + + + +
    + + + + + +
    + +
    + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/application/admin/view/mlx/edit.html b/application/admin/view/mlx/edit.html new file mode 100644 index 0000000..305f44d --- /dev/null +++ b/application/admin/view/mlx/edit.html @@ -0,0 +1,94 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + +
    + {include file="public/top" /} + +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + +
    +
    +
    +
    + 监测设备类型 +
    +
    +
    + +
    + +
    + +
    + +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + +
    + diff --git a/application/admin/view/mlx/lst.html b/application/admin/view/mlx/lst.html new file mode 100644 index 0000000..5236d37 --- /dev/null +++ b/application/admin/view/mlx/lst.html @@ -0,0 +1,107 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
    + {include file="public/top" /} +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + + +
    +
    +
    +
    +
    + + + + + + + + + + {volist name="list" id="vo"} + + + + + + {/volist} + +
    ID名称操作
    {$vo.id}{$vo.mc} + + 编辑 + + + 删除 + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + +
    + diff --git a/application/admin/view/msb/add.html b/application/admin/view/msb/add.html new file mode 100644 index 0000000..152a806 --- /dev/null +++ b/application/admin/view/msb/add.html @@ -0,0 +1,341 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + {include file="public/top" /} + + + + + +
    + +
    + + + + {include file="common/devleft" /} + + + + + +
    + + + + + + + + + + + +
    + + + +
    + +
    + +
    + +
    + + 监测设备 + +
    + +
    + +
    + +
    + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + +
    + +
    + +
    +
    + + + +
    + + + +
    + + + +
    + +
    + +
    + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + diff --git a/application/admin/view/msb/eaif.html b/application/admin/view/msb/eaif.html new file mode 100644 index 0000000..de9683c --- /dev/null +++ b/application/admin/view/msb/eaif.html @@ -0,0 +1,99 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + +
    + + {include file="public/top" /} + + +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + +
    +
    +
    +
    + 红外测温区域 +
    +
    +
    + + +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + +
    + diff --git a/application/admin/view/msb/eaifadd.html b/application/admin/view/msb/eaifadd.html new file mode 100644 index 0000000..8d826a4 --- /dev/null +++ b/application/admin/view/msb/eaifadd.html @@ -0,0 +1,99 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + +
    + + {include file="public/top" /} + + +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + +
    +
    +
    +
    + 红外测温区域 +
    +
    +
    + + +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + +
    + diff --git a/application/admin/view/msb/eaiflist.html b/application/admin/view/msb/eaiflist.html new file mode 100644 index 0000000..937bad5 --- /dev/null +++ b/application/admin/view/msb/eaiflist.html @@ -0,0 +1,116 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
    + + {include file="public/top" /} + +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + {volist name="list" id="vo"} + + + + + + + + {/volist} + +
    编号预置点id规则编号规则类型操作
    {$vo.id}{$vo.nPresetId}{$vo.nRuleId}{$vo.nMeterType} + + 编辑 + + + 删除 + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + +
    + diff --git a/application/admin/view/msb/edit.html b/application/admin/view/msb/edit.html new file mode 100644 index 0000000..5f3cdb2 --- /dev/null +++ b/application/admin/view/msb/edit.html @@ -0,0 +1,206 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + +
    + + {include file="public/top" /} + + +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + +
    +
    +
    +
    + 监测设备 +
    +
    +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + + + +
    + diff --git a/application/admin/view/msb/lst.html b/application/admin/view/msb/lst.html new file mode 100644 index 0000000..63e0e76 --- /dev/null +++ b/application/admin/view/msb/lst.html @@ -0,0 +1,123 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
    + + {include file="public/top" /} + +
    +
    + + {include file="common/devleft" /} + + +
    + + + + + +
    + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + {volist name="list" id="vo"} + + + + + + + + + {/volist} + +
    ID名称类型主设备IED操作
    {$vo.id}{$vo.name}{$vo.mtmc}{$vo.zsbmc}{$vo.iedname} + + + + 测温区域添加 + + + + 编辑 + + + 删除 + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + + + + +
    + + diff --git a/application/admin/view/paramindexinfo/dlg_h.html b/application/admin/view/paramindexinfo/dlg_h.html new file mode 100644 index 0000000..644d40c --- /dev/null +++ b/application/admin/view/paramindexinfo/dlg_h.html @@ -0,0 +1,656 @@ + + + + + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 逻辑设备: + + + + + +
    温度1:
    + + + +
    湿度1:
    + + + +
    温度2:
    + + + +
    湿度2:
    + + + +
    温度3:
    + + + +
    湿度3:
    + + + +
    水浸:
    + + + +
    烟雾报警1:
    + + + +
    烟雾报警2:
    + + + +
    烟雾报警3:
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + diff --git a/application/admin/view/paramindexinfo/eia.html b/application/admin/view/paramindexinfo/eia.html new file mode 100644 index 0000000..9447fe2 --- /dev/null +++ b/application/admin/view/paramindexinfo/eia.html @@ -0,0 +1,859 @@ + + + + + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    A相B相C相
    + + 逻辑设备: + + + + + + + + + + + + + +
    母线电压:
    + + + +
    + + + +
    + + + +
    泄露电流:
    + + + +
    + + + +
    + + + +
    电容量:
    + + + +
    + + + +
    + + + +
    介质损耗因数:
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + diff --git a/application/admin/view/paramindexinfo/eia_h.html b/application/admin/view/paramindexinfo/eia_h.html new file mode 100644 index 0000000..1ff5789 --- /dev/null +++ b/application/admin/view/paramindexinfo/eia_h.html @@ -0,0 +1,235 @@ + + + + + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 逻辑设备: + + + + + +
    + + 铁芯接地电流: + + + +
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + diff --git a/application/admin/view/paramindexinfo/epa_h.html b/application/admin/view/paramindexinfo/epa_h.html new file mode 100644 index 0000000..baab869 --- /dev/null +++ b/application/admin/view/paramindexinfo/epa_h.html @@ -0,0 +1,823 @@ + + + + + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 逻辑设备: + + + + + +
    甲烷含量:
    + + + +
    乙烯含量:
    + + + +
    乙烷含量:
    + + + +
    乙炔含量:
    + + + +
    氢气含量:
    + + + +
    一氧化碳含量:
    + + + +
    二氧化碳含量:
    + + + +
    总烃:
    + + + +
    总可燃气体:
    + + + +
    氧气含量:
    + + + +
    氮气含量:
    + + + +
    水含量:
    + + + +
    瓦斯继电器中故障气:
    + + + +
    载气压力:
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + diff --git a/application/admin/view/paramindexinfo/epa_h_1.html b/application/admin/view/paramindexinfo/epa_h_1.html new file mode 100644 index 0000000..11b3d90 --- /dev/null +++ b/application/admin/view/paramindexinfo/epa_h_1.html @@ -0,0 +1,725 @@ + + + + + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 逻辑设备: + + + + + +
    甲烷含量:
    + + + +
    乙烯含量:
    + + + +
    乙烷含量:
    + + + +
    乙炔含量:
    + + + +
    氢气含量:
    + + + +
    一氧化碳含量:
    + + + +
    二氧化碳含量:
    + + + +
    总烃:
    + + + +
    总可燃气体:
    + + + +
    氧气含量:
    + + + +
    氮气含量:
    + + + +
    微水含量:
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + diff --git a/application/admin/view/paramindexinfo/epa_h_2.html b/application/admin/view/paramindexinfo/epa_h_2.html new file mode 100644 index 0000000..2b0a9f0 --- /dev/null +++ b/application/admin/view/paramindexinfo/epa_h_2.html @@ -0,0 +1,355 @@ + + + + + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 逻辑设备: + + + + + +
    总可燃气体:
    + + + +
    温度:
    + + + +
    湿度:
    + + + +
    微水含量:
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + diff --git a/application/admin/view/paramindexinfo/epa_h_3.html b/application/admin/view/paramindexinfo/epa_h_3.html new file mode 100644 index 0000000..baab869 --- /dev/null +++ b/application/admin/view/paramindexinfo/epa_h_3.html @@ -0,0 +1,823 @@ + + + + + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 逻辑设备: + + + + + +
    甲烷含量:
    + + + +
    乙烯含量:
    + + + +
    乙烷含量:
    + + + +
    乙炔含量:
    + + + +
    氢气含量:
    + + + +
    一氧化碳含量:
    + + + +
    二氧化碳含量:
    + + + +
    总烃:
    + + + +
    总可燃气体:
    + + + +
    氧气含量:
    + + + +
    氮气含量:
    + + + +
    水含量:
    + + + +
    瓦斯继电器中故障气:
    + + + +
    载气压力:
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + diff --git a/application/admin/view/paramindexinfo/etp_h.html b/application/admin/view/paramindexinfo/etp_h.html new file mode 100644 index 0000000..eeac209 --- /dev/null +++ b/application/admin/view/paramindexinfo/etp_h.html @@ -0,0 +1,728 @@ + + + + + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 逻辑设备: + + + + + +
    温度1:
    + + + +
    温度2:
    + + + +
    温度3:
    + + + +
    温度4:
    + + + +
    温度5:
    + + + +
    温度6:
    + + + +
    温度7:
    + + + +
    温度8:
    + + + +
    温度9:
    + + + +
    温度10:
    + + + +
    温度11:
    + + + +
    温度12:
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + diff --git a/application/admin/view/paramindexinfo/etp_h_gxcw.html b/application/admin/view/paramindexinfo/etp_h_gxcw.html new file mode 100644 index 0000000..017b2fd --- /dev/null +++ b/application/admin/view/paramindexinfo/etp_h_gxcw.html @@ -0,0 +1,913 @@ + + + + + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 逻辑设备: + + + + + +
    1通道溫度:
    + + + +
    2通道溫度:
    + + + +
    3通道溫度:
    + + + +
    4通道溫度:
    + + + +
    5通道溫度:
    + + + +
    6通道溫度:
    + + + +
    7通道溫度:
    + + + +
    8通道溫度:
    + + + +
    9通道溫度:
    + + + +
    10通道溫度:
    + + + +
    11通道溫度:
    + + + +
    12通道溫度:
    + + + +
    13通道溫度:
    + + + +
    14通道溫度:
    + + + +
    15通道溫度:
    + + + +
    16通道溫度:
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + diff --git a/application/admin/view/paramindexinfo/etp_h_old.html b/application/admin/view/paramindexinfo/etp_h_old.html new file mode 100644 index 0000000..3c8ac0b --- /dev/null +++ b/application/admin/view/paramindexinfo/etp_h_old.html @@ -0,0 +1,734 @@ + + + + + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 逻辑设备: + + + + + +
    温度1:
    + + + +
    温度2:
    + + + +
    温度3:
    + + + +
    温度4:
    + + + +
    温度5:
    + + + +
    温度6:
    + + + +
    温度7:
    + + + +
    温度8:
    + + + +
    温度9:
    + + + +
    温度10:
    + + + +
    温度11:
    + + + +
    温度12:
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + diff --git a/application/admin/view/paramindexinfo/etp_h_rzcw.html b/application/admin/view/paramindexinfo/etp_h_rzcw.html new file mode 100644 index 0000000..017b2fd --- /dev/null +++ b/application/admin/view/paramindexinfo/etp_h_rzcw.html @@ -0,0 +1,913 @@ + + + + + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 逻辑设备: + + + + + +
    1通道溫度:
    + + + +
    2通道溫度:
    + + + +
    3通道溫度:
    + + + +
    4通道溫度:
    + + + +
    5通道溫度:
    + + + +
    6通道溫度:
    + + + +
    7通道溫度:
    + + + +
    8通道溫度:
    + + + +
    9通道溫度:
    + + + +
    10通道溫度:
    + + + +
    11通道溫度:
    + + + +
    12通道溫度:
    + + + +
    13通道溫度:
    + + + +
    14通道溫度:
    + + + +
    15通道溫度:
    + + + +
    16通道溫度:
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + diff --git a/application/admin/view/paramindexinfo/index.html b/application/admin/view/paramindexinfo/index.html new file mode 100644 index 0000000..5d2ca83 --- /dev/null +++ b/application/admin/view/paramindexinfo/index.html @@ -0,0 +1,1598 @@ + + + + + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    A相B相C相
    + + 逻辑设备: + + + + + + + + + + + + + +
    + + 系统电压: + + + +
    + + + +
    + + + +
    + + + +
    + + 全电流: + +
    + + + +
    + + + +
    + + + +
    + + 阻性电流: + +
    + + + +
    + + + +
    + + + +
    + + 最近落雷时间: + +
    + + + +
    + + + +
    + + + +
    + + 累计落雷次数: + +
    + + + +
    + + + +
    + + + +
    + + 容性电流: + +
    + + + +
    + + + +
    + + + +
    + + 阻容比: + +
    + + + +
    + + + +
    + + + +
    + + IED与监测设备通讯异常: + +
    + + + +
    + + + +
    + + + +
    + + 设备运行异常: + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + diff --git a/application/admin/view/paramindexinfo/jdw_h.html b/application/admin/view/paramindexinfo/jdw_h.html new file mode 100644 index 0000000..8cb4933 --- /dev/null +++ b/application/admin/view/paramindexinfo/jdw_h.html @@ -0,0 +1,214 @@ + + + + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 逻辑设备: + + + + + +
    电阻值:
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + diff --git a/application/admin/view/paramindexinfo/microclimate_h.html b/application/admin/view/paramindexinfo/microclimate_h.html new file mode 100644 index 0000000..2e659f8 --- /dev/null +++ b/application/admin/view/paramindexinfo/microclimate_h.html @@ -0,0 +1,455 @@ + + + + + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 逻辑设备: + + + + + +
    温度:
    + + + +
    湿度:
    + + + +
    风速:
    + + + +
    气压:
    + + + +
    风向:
    + + + +
    雨量:
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + diff --git a/application/admin/view/paramindexinfo/pd_h.html b/application/admin/view/paramindexinfo/pd_h.html new file mode 100644 index 0000000..ee8cf6f --- /dev/null +++ b/application/admin/view/paramindexinfo/pd_h.html @@ -0,0 +1,597 @@ + + + + + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 逻辑设备: + + + + + +
    局放告警:
    + + + +
    动作计数器:
    + + + +
    脉冲个数:
    + + + +
    局放类型:
    + + + +
    局放声学水平:
    + + + +
    视在局放放电量,峰值:
    + + + +
    平均放电电流:
    + + + +
    局放UHF水平:
    + + + +
    相位:
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + diff --git a/application/admin/view/paramindexinfo/scur_h.html b/application/admin/view/paramindexinfo/scur_h.html new file mode 100644 index 0000000..71846cd --- /dev/null +++ b/application/admin/view/paramindexinfo/scur_h.html @@ -0,0 +1,258 @@ + + + + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 逻辑设备: + + + + + +
    告警等级:
    + + + +
    环流数据:
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + diff --git a/application/admin/view/paramindexinfo/sf6_h.html b/application/admin/view/paramindexinfo/sf6_h.html new file mode 100644 index 0000000..a22f966 --- /dev/null +++ b/application/admin/view/paramindexinfo/sf6_h.html @@ -0,0 +1,983 @@ + + + + + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    A相B相C相
    + + 逻辑设备: + + + + + + + + + + + + + +
    温度:
    + + + +
    + + + +
    + + + +
    压力:
    + + + +
    + + + +
    + + + +
    密度:
    + + + +
    + + + +
    + + + +
    微水:
    + + + +
    + + + +
    + + + +
    露点:
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + diff --git a/application/admin/view/paramindexinfo/sf6env_h.html b/application/admin/view/paramindexinfo/sf6env_h.html new file mode 100644 index 0000000..281b0e2 --- /dev/null +++ b/application/admin/view/paramindexinfo/sf6env_h.html @@ -0,0 +1,749 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    A相B相C相
    + 逻辑设备: + + + + + + +
    SF6浓度: +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    O2含量: +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    温度: +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    湿度: +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    SF6报警阈值: +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    O2报警阈值: +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    双气传感器数量: +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    温湿度传感器数量: +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + diff --git a/application/admin/view/paramindexset/index.html b/application/admin/view/paramindexset/index.html new file mode 100644 index 0000000..68a6c00 --- /dev/null +++ b/application/admin/view/paramindexset/index.html @@ -0,0 +1,202 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + +
    + {include file="public/top" /} + + +
    +
    +
    +
    + 监测设备列表 +
    +
    +
      +
      +
      +
      +
      +
      + 系统管理   /   + 参引配置 +
      +
      + +
      +
      +
      +
      + + + diff --git a/application/admin/view/paramindexset/index_bak.html b/application/admin/view/paramindexset/index_bak.html new file mode 100644 index 0000000..7bf9163 --- /dev/null +++ b/application/admin/view/paramindexset/index_bak.html @@ -0,0 +1,179 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + + +
      +
      +
      +
      + 监测设备列表 +
      +
      +
        +
        +
        +
        +
        +
        + 系统管理   /   + 参引配置 +
        +
        + +
        +
        +
        +
        + + + diff --git a/application/admin/view/public/left.html b/application/admin/view/public/left.html new file mode 100644 index 0000000..4b077fd --- /dev/null +++ b/application/admin/view/public/left.html @@ -0,0 +1,180 @@ + diff --git a/application/admin/view/public/top.html b/application/admin/view/public/top.html new file mode 100644 index 0000000..1b9c147 --- /dev/null +++ b/application/admin/view/public/top.html @@ -0,0 +1,287 @@ + + + + diff --git a/application/admin/view/rule1/lst.html b/application/admin/view/rule1/lst.html new file mode 100644 index 0000000..8e7f218 --- /dev/null +++ b/application/admin/view/rule1/lst.html @@ -0,0 +1,325 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + +
        + + + +
        + +
        + +
        + +
        + + 新增权限 + +
        + +
        + +
        + +
        + +
        + + + +
        + + + +
        + + + +
        + + + + + +
        + + + +
        + + + +
        + +
        + + + + + + + + + +
        + +
        + + + + + +
        + + + +
        + +
        + +
        + +
        + +
        + +
        + +
        + + + +
        + + + +
        + + + +
        + +
        + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/admin/view/rule1/lst.html~ b/application/admin/view/rule1/lst.html~ new file mode 100644 index 0000000..96f4224 --- /dev/null +++ b/application/admin/view/rule1/lst.html~ @@ -0,0 +1,163 @@ + + + + 童老师ThinkPHP交流群:484519446 + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + +
        + +
        +
        +
        +
        + 新增权限 +
        +
        +
        +
        +
        + +
        + +
        + +
        + + +
        + +
        + +
        +
        + + + + +
        +
        + + +
        + +
        +
        +
        +
        +
        +
        +
        + +
        + +
        + +
        +
        + + + + + + + + + + + \ No newline at end of file diff --git a/application/admin/view/topmenu/123.html b/application/admin/view/topmenu/123.html new file mode 100644 index 0000000..e5a8545 --- /dev/null +++ b/application/admin/view/topmenu/123.html @@ -0,0 +1,119 @@ + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {$data} +
        + + + + diff --git a/application/admin/view/topmenu/123.html~ b/application/admin/view/topmenu/123.html~ new file mode 100644 index 0000000..da52414 --- /dev/null +++ b/application/admin/view/topmenu/123.html~ @@ -0,0 +1,119 @@ + + + + +jQuery绿色简洁三级下拉菜单代码 - 站长素材 + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {$data} +
        + + + + diff --git a/application/admin/view/topmenu/index.html b/application/admin/view/topmenu/index.html new file mode 100644 index 0000000..39e340d --- /dev/null +++ b/application/admin/view/topmenu/index.html @@ -0,0 +1 @@ + 抽水蓄能电站智能化状态监测系统 \ No newline at end of file diff --git a/application/admin/view/topmenu/index.html~ b/application/admin/view/topmenu/index.html~ new file mode 100644 index 0000000..eab5ff1 --- /dev/null +++ b/application/admin/view/topmenu/index.html~ @@ -0,0 +1,30 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + diff --git a/application/admin/view/topmenu/jquery-1.7.1.js b/application/admin/view/topmenu/jquery-1.7.1.js new file mode 100644 index 0000000..b4ec7f8 --- /dev/null +++ b/application/admin/view/topmenu/jquery-1.7.1.js @@ -0,0 +1,9266 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Released under the the MIT License. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT and BSD Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function( window, undefined ) { + +// Use the correct document accordingly with window argument (sandbox) +var document = window.document, + navigator = window.navigator, + location = window.location; +var jQuery = (function() { + +// Define a local copy of jQuery +var jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // A central reference to the root jQuery(document) + rootjQuery, + + // A simple way to check for HTML strings or ID strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Check if a string has a non-whitespace character in it + rnotwhite = /\S/, + + // Used for trimming whitespace + trimLeft = /^\s+/, + trimRight = /\s+$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + + // Useragent RegExp + rwebkit = /(webkit)[ \/]([\w.]+)/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, + rmsie = /(msie) ([\w.]+)/, + rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + + // Matches dashed string for camelizing + rdashAlpha = /-([a-z]|[0-9])/ig, + rmsPrefix = /^-ms-/, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return ( letter + "" ).toUpperCase(); + }, + + // Keep a UserAgent string for use with jQuery.browser + userAgent = navigator.userAgent, + + // For matching the engine and version of the browser + browserMatch, + + // The deferred used on DOM ready + readyList, + + // The ready event handler + DOMContentLoaded, + + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + push = Array.prototype.push, + slice = Array.prototype.slice, + trim = String.prototype.trim, + indexOf = Array.prototype.indexOf, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // The body element only exists once, optimize finding it + if ( selector === "body" && !context && document.body ) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = ( context ? context.ownerDocument || context : document ); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); + selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes; + } + + return jQuery.merge( this, selector ); + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.7.1", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return slice.call( this, 0 ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = this.constructor(); + + if ( jQuery.isArray( elems ) ) { + push.apply( ret, elems ); + + } else { + jQuery.merge( ret, elems ); + } + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Attach the listeners + jQuery.bindReady(); + + // Add the callback + readyList.add( fn ); + + return this; + }, + + eq: function( i ) { + i = +i; + return i === -1 ? + this.slice( i ) : + this.slice( i, i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.fireWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).off( "ready" ); + } + } + }, + + bindReady: function() { + if ( readyList ) { + return; + } + + readyList = jQuery.Callbacks( "once memory" ); + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + return setTimeout( jQuery.ready, 1 ); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + // A crude way of determining if an object is a window + isWindow: function( obj ) { + return obj && typeof obj === "object" && "setInterval" in obj; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + for ( var name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction( object ); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } + + return object; + }, + + // Use native String.trim function wherever possible + trim: trim ? + function( text ) { + return text == null ? + "" : + trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); + }, + + // results is for internal usage only + makeArray: function( array, results ) { + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + var type = jQuery.type( array ); + + if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }, + + inArray: function( elem, array, i ) { + var len; + + if ( array ) { + if ( indexOf ) { + return indexOf.call( array, elem, i ); + } + + len = array.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in array && array[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var i = first.length, + j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var ret = [], retVal; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + var args = slice.call( arguments, 2 ), + proxy = function() { + return fn.apply( context, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + + return proxy; + }, + + // Mutifunctional method to get and set values to a collection + // The value/s can optionally be executed if it's a function + access: function( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + sub: function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }, + + browser: {} +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +// IE doesn't match non-breaking spaces with \s +if ( rnotwhite.test( "\xA0" ) ) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch(e) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +return jQuery; + +})(); + + +// String to Object flags format cache +var flagsCache = {}; + +// Convert String-formatted flags into Object-formatted ones and store in cache +function createFlags( flags ) { + var object = flagsCache[ flags ] = {}, + i, length; + flags = flags.split( /\s+/ ); + for ( i = 0, length = flags.length; i < length; i++ ) { + object[ flags[i] ] = true; + } + return object; +} + +/* + * Create a callback list using the following parameters: + * + * flags: an optional list of space-separated flags that will change how + * the callback list behaves + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible flags: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( flags ) { + + // Convert flags from String-formatted to Object-formatted + // (we check in cache first) + flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {}; + + var // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = [], + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Add one or several callbacks to the list + add = function( args ) { + var i, + length, + elem, + type, + actual; + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + // Inspect recursively + add( elem ); + } else if ( type === "function" ) { + // Add if not in unique mode and callback is not in + if ( !flags.unique || !self.has( elem ) ) { + list.push( elem ); + } + } + } + }, + // Fire callbacks + fire = function( context, args ) { + args = args || []; + memory = !flags.memory || [ context, args ]; + firing = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) { + memory = true; // Mark as halted + break; + } + } + firing = false; + if ( list ) { + if ( !flags.once ) { + if ( stack && stack.length ) { + memory = stack.shift(); + self.fireWith( memory[ 0 ], memory[ 1 ] ); + } + } else if ( memory === true ) { + self.disable(); + } else { + list = []; + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + var length = list.length; + add( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away, unless previous + // firing was halted (stopOnFalse) + } else if ( memory && memory !== true ) { + firingStart = length; + fire( memory[ 0 ], memory[ 1 ] ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + var args = arguments, + argIndex = 0, + argLength = args.length; + for ( ; argIndex < argLength ; argIndex++ ) { + for ( var i = 0; i < list.length; i++ ) { + if ( args[ argIndex ] === list[ i ] ) { + // Handle firingIndex and firingLength + if ( firing ) { + if ( i <= firingLength ) { + firingLength--; + if ( i <= firingIndex ) { + firingIndex--; + } + } + } + // Remove the element + list.splice( i--, 1 ); + // If we have some unicity property then + // we only need to do this once + if ( flags.unique ) { + break; + } + } + } + } + } + return this; + }, + // Control if a given callback is in the list + has: function( fn ) { + if ( list ) { + var i = 0, + length = list.length; + for ( ; i < length; i++ ) { + if ( fn === list[ i ] ) { + return true; + } + } + } + return false; + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory || memory === true ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( stack ) { + if ( firing ) { + if ( !flags.once ) { + stack.push( [ context, args ] ); + } + } else if ( !( flags.once && memory ) ) { + fire( context, args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!memory; + } + }; + + return self; +}; + + + + +var // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ + + Deferred: function( func ) { + var doneList = jQuery.Callbacks( "once memory" ), + failList = jQuery.Callbacks( "once memory" ), + progressList = jQuery.Callbacks( "memory" ), + state = "pending", + lists = { + resolve: doneList, + reject: failList, + notify: progressList + }, + promise = { + done: doneList.add, + fail: failList.add, + progress: progressList.add, + + state: function() { + return state; + }, + + // Deprecated + isResolved: doneList.fired, + isRejected: failList.fired, + + then: function( doneCallbacks, failCallbacks, progressCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks ); + return this; + }, + always: function() { + deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments ); + return this; + }, + pipe: function( fnDone, fnFail, fnProgress ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ], + progress: [ fnProgress, "notify" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + obj = promise; + } else { + for ( var key in promise ) { + obj[ key ] = promise[ key ]; + } + } + return obj; + } + }, + deferred = promise.promise({}), + key; + + for ( key in lists ) { + deferred[ key ] = lists[ key ].fire; + deferred[ key + "With" ] = lists[ key ].fireWith; + } + + // Handle state + deferred.done( function() { + state = "resolved"; + }, failList.disable, progressList.lock ).fail( function() { + state = "rejected"; + }, doneList.disable, progressList.lock ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( firstParam ) { + var args = sliceDeferred.call( arguments, 0 ), + i = 0, + length = args.length, + pValues = new Array( length ), + count = length, + pCount = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(), + promise = deferred.promise(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + deferred.resolveWith( deferred, args ); + } + }; + } + function progressFunc( i ) { + return function( value ) { + pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + deferred.notifyWith( promise, pValues ); + }; + } + if ( length > 1 ) { + for ( ; i < length; i++ ) { + if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return promise; + } +}); + + + + +jQuery.support = (function() { + + var support, + all, + a, + select, + opt, + input, + marginDiv, + fragment, + tds, + events, + eventName, + i, + isSupported, + div = document.createElement( "div" ), + documentElement = document.documentElement; + + // Preliminary tests + div.setAttribute("className", "t"); + div.innerHTML = "
        a"; + + all = div.getElementsByTagName( "*" ); + a = div.getElementsByTagName( "a" )[ 0 ]; + + // Can't get basic test support + if ( !all || !all.length || !a ) { + return {}; + } + + // First batch of supports tests + select = document.createElement( "select" ); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName( "input" )[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute("href") === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.55/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Tests for enctype support on a form(#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent( "onclick" ); + } + + // Check if a radio maintains its value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; + + input.setAttribute("checked", "checked"); + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.lastChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + fragment.removeChild( input ); + fragment.appendChild( div ); + + div.innerHTML = ""; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( window.getComputedStyle ) { + marginDiv = document.createElement( "div" ); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.style.width = "2px"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; + } + + // Technique from Juriy Zaytsev + // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for( i in { + submit: 1, + change: 1, + focusin: 1 + }) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + fragment.removeChild( div ); + + // Null elements to avoid leaks in IE + fragment = select = opt = marginDiv = div = input = null; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, outer, inner, table, td, offsetSupport, + conMarginTop, ptlm, vb, style, html, + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + conMarginTop = 1; + ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;"; + vb = "visibility:hidden;border:0;"; + style = "style='" + ptlm + "border:5px solid #000;padding:0;'"; + html = "
        " + + "" + + "
        "; + + container = document.createElement("div"); + container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px"; + body.insertBefore( container, body.firstChild ); + + // Construct the test element + div = document.createElement("div"); + container.appendChild( div ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + div.innerHTML = "
        t
        "; + tds = div.getElementsByTagName( "td" ); + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE <= 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Figure out if the W3C box model works as expected + div.innerHTML = ""; + div.style.width = div.style.paddingLeft = "1px"; + jQuery.boxModel = support.boxModel = div.offsetWidth === 2; + + if ( typeof div.style.zoom !== "undefined" ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = ""; + div.innerHTML = "
        "; + support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); + } + + div.style.cssText = ptlm + vb; + div.innerHTML = html; + + outer = div.firstChild; + inner = outer.firstChild; + td = outer.nextSibling.firstChild.firstChild; + + offsetSupport = { + doesNotAddBorder: ( inner.offsetTop !== 5 ), + doesAddBorderForTableAndCells: ( td.offsetTop === 5 ) + }; + + inner.style.position = "fixed"; + inner.style.top = "20px"; + + // safari subtracts parent border width here which is 5px + offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 ); + inner.style.position = inner.style.top = ""; + + outer.style.overflow = "hidden"; + outer.style.position = "relative"; + + offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 ); + offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop ); + + body.removeChild( container ); + div = container = null; + + jQuery.extend( support, offsetSupport ); + }); + + return support; +})(); + + + + +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([A-Z])/g; + +jQuery.extend({ + cache: {}, + + // Please use with caution + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var privateCache, thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey, + isEvents = name === "events"; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = ++jQuery.uuid; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + privateCache = thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Users should not attempt to inspect the internal events object using jQuery.data, + // it is undocumented and subject to change. But does anyone listen? No. + if ( isEvents && !thisCache[ name ] ) { + return privateCache.events; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, l, + + // Reference to internal data cache key + internalKey = jQuery.expando, + + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + + // See jQuery.data for more information + id = isNode ? elem[ internalKey ] : internalKey; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split( " " ); + } + } + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject(cache[ id ]) ) { + return; + } + } + + // Browsers that fail expando deletion also refuse to delete expandos on + // the window, but it will allow it on all other JS objects; other browsers + // don't care + // Ensure that `cache` is not a window object #10080 + if ( jQuery.support.deleteExpando || !cache.setInterval ) { + delete cache[ id ]; + } else { + cache[ id ] = null; + } + + // We destroyed the cache and need to eliminate the expando on the node to avoid + // false lookups in the cache for entries that no longer exist + if ( isNode ) { + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( jQuery.support.deleteExpando ) { + delete elem[ internalKey ]; + } else if ( elem.removeAttribute ) { + elem.removeAttribute( internalKey ); + } else { + elem[ internalKey ] = null; + } + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + if ( elem.nodeName ) { + var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; + + if ( match ) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + + return true; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var parts, attr, name, + data = null; + + if ( typeof key === "undefined" ) { + if ( this.length ) { + data = jQuery.data( this[0] ); + + if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) { + attr = this[0].attributes; + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( this[0], name, data[ name ] ); + } + } + jQuery._data( this[0], "parsedAttrs", true ); + } + } + + return data; + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + // Try to fetch any internally stored data first + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + data = dataAttr( this[0], key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + + } else { + return this.each(function() { + var self = jQuery( this ), + args = [ parts[0], value ]; + + self.triggerHandler( "setData" + parts[1] + "!", args ); + jQuery.data( this, key, value ); + self.triggerHandler( "changeData" + parts[1] + "!", args ); + }); + } + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + jQuery.isNumeric( data ) ? parseFloat( data ) : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + + + + +function handleQueueMarkDefer( elem, type, src ) { + var deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + defer = jQuery._data( elem, deferDataKey ); + if ( defer && + ( src === "queue" || !jQuery._data(elem, queueDataKey) ) && + ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) { + // Give room for hard-coded callbacks to fire first + // and eventually mark/queue something else on the element + setTimeout( function() { + if ( !jQuery._data( elem, queueDataKey ) && + !jQuery._data( elem, markDataKey ) ) { + jQuery.removeData( elem, deferDataKey, true ); + defer.fire(); + } + }, 0 ); + } +} + +jQuery.extend({ + + _mark: function( elem, type ) { + if ( elem ) { + type = ( type || "fx" ) + "mark"; + jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 ); + } + }, + + _unmark: function( force, elem, type ) { + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 ); + if ( count ) { + jQuery._data( elem, key, count ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }, + + queue: function( elem, type, data ) { + var q; + if ( elem ) { + type = ( type || "fx" ) + "queue"; + q = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + q.push( data ); + } + } + return q || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + hooks = {}; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + jQuery._data( elem, type + ".run", hooks ); + fn.call( elem, function() { + jQuery.dequeue( elem, type ); + }, hooks ); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue " + type + ".run", true ); + handleQueueMarkDefer( elem, type, "queue" ); + } + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function() { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, object ) { + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) { + count++; + tmp.add( resolve ); + } + } + resolve(); + return defer.promise(); + } +}); + + + + +var rclass = /[\n\t\r]/g, + rspace = /\s+/, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea)?$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + nodeHook, boolHook, fixSpecified; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.attr ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.prop ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classNames, i, l, elem, className, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + classNames = ( value || "" ).split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + className = (" " + elem.className + " ").replace( rclass, " " ); + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[ c ] + " ", " "); + } + elem.className = jQuery.trim( className ); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var self = jQuery(this), val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, i, max, option, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + i = one ? index : 0; + max = one ? index + 1 : options.length; + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + + attr: function( elem, name, value, pass ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var propName, attrNames, name, l, + i = 0; + + if ( value && elem.nodeType === 1 ) { + attrNames = value.toLowerCase().split( rspace ); + l = attrNames.length; + + for ( ; i < l; i++ ) { + name = attrNames[ i ]; + + if ( name ) { + propName = jQuery.propFix[ name ] || name; + + // See #9699 for explanation of this approach (setting first, then removal) + jQuery.attr( elem, name, "" ); + elem.removeAttribute( getSetAttribute ? name : propName ); + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && propName in elem ) { + elem[ propName ] = false; + } + } + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + // Use the value property for back compat + // Use the nodeHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional) +jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex; + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + // Fall back to attribute presence where some booleans are not supported + var attrNode, + property = jQuery.prop( elem, name ); + return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + fixSpecified = { + name: true, + id: true + }; + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ? + ret.nodeValue : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); + } + return ( ret.nodeValue = value + "" ); + } + }; + + // Apply the nodeHook to tabindex + jQuery.attrHooks.tabindex.set = nodeHook.set; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + if ( value === "" ) { + value = "false"; + } + nodeHook.set( elem, value, name ); + } + }; +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = "" + value ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); + + + + +var rformElems = /^(?:textarea|input|select)$/i, + rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/, + rhoverHack = /\bhover(\.\S+)?\b/, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, + quickParse = function( selector ) { + var quick = rquickIs.exec( selector ); + if ( quick ) { + // 0 1 2 3 + // [ _, tag, id, class ] + quick[1] = ( quick[1] || "" ).toLowerCase(); + quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" ); + } + return quick; + }, + quickIs = function( elem, m ) { + var attrs = elem.attributes || {}; + return ( + (!m[1] || elem.nodeName.toLowerCase() === m[1]) && + (!m[2] || (attrs.id || {}).value === m[2]) && + (!m[3] || m[3].test( (attrs[ "class" ] || {}).value )) + ); + }, + hoverHack = function( events ) { + return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); + }; + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + add: function( elem, types, handler, data, selector ) { + + var elemData, eventHandle, events, + t, tns, type, namespaces, handleObj, + handleObjIn, quick, handlers, special; + + // Don't attach events to noData or text/comment nodes (allow plain objects tho) + if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + events = elemData.events; + if ( !events ) { + elemData.events = events = {}; + } + eventHandle = elemData.handle; + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = jQuery.trim( hoverHack(types) ).split( " " ); + for ( t = 0; t < types.length; t++ ) { + + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = ( tns[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: tns[1], + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + quick: quickParse( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + handlers = events[ type ]; + if ( !handlers ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var elemData = jQuery.hasData( elem ) && jQuery._data( elem ), + t, tns, type, origType, namespaces, origCount, + j, events, special, handle, eventType, handleObj; + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = jQuery.trim( hoverHack( types || "" ) ).split(" "); + for ( t = 0; t < types.length; t++ ) { + tns = rtypenamespace.exec( types[t] ) || []; + type = origType = tns[1]; + namespaces = tns[2]; + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector? special.delegateType : special.bindType ) || type; + eventType = events[ type ] || []; + origCount = eventType.length; + namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + + // Remove matching events + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !namespaces || namespaces.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + eventType.splice( j--, 1 ); + + if ( handleObj.selector ) { + eventType.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( eventType.length === 0 && origCount !== eventType.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + handle = elemData.handle; + if ( handle ) { + handle.elem = null; + } + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery.removeData( elem, [ "events", "handle" ], true ); + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Don't do events on text and comment nodes + if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { + return; + } + + // Event object or event type + var type = event.type || event, + namespaces = [], + cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType; + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "!" ) >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf( "." ) >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.isTrigger = true; + event.exclusive = exclusive; + event.namespace = namespaces.join( "." ); + event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; + + // Handle a global trigger + if ( !elem ) { + + // TODO: Stop taunting the data cache; remove global events and always attach to document + cache = jQuery.cache; + for ( i in cache ) { + if ( cache[ i ].events && cache[ i ].events[ type ] ) { + jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); + } + } + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + eventPath = [[ elem, special.bindType || type ]]; + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; + old = null; + for ( ; cur; cur = cur.parentNode ) { + eventPath.push([ cur, bubbleType ]); + old = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( old && old === elem.ownerDocument ) { + eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); + } + } + + // Fire handlers on the event path + for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { + + cur = eventPath[i][0]; + event.type = eventPath[i][1]; + + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + // Note that this is a bare JS function and not a jQuery handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + // IE<9 dies on focus/blur to hidden element (#1486) + if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( old ) { + elem[ ontype ] = old; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event || window.event ); + + var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), + delegateCount = handlers.delegateCount, + args = [].slice.call( arguments, 0 ), + run_all = !event.exclusive && !event.namespace, + handlerQueue = [], + i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Determine handlers that should run if there are delegated events + // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) { + + // Pregenerate a single jQuery object for reuse with .is() + jqcur = jQuery(this); + jqcur.context = this.ownerDocument || this; + + for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { + selMatch = {}; + matches = []; + jqcur[0] = cur; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + sel = handleObj.selector; + + if ( selMatch[ sel ] === undefined ) { + selMatch[ sel ] = ( + handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel ) + ); + } + if ( selMatch[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, matches: matches }); + } + } + } + + // Add the remaining (directly-bound) handlers + if ( handlers.length > delegateCount ) { + handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); + } + + // Run delegates first; they may want to stop propagation beneath us + for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { + matched = handlerQueue[ i ]; + event.currentTarget = matched.elem; + + for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { + handleObj = matched.matches[ j ]; + + // Triggered event must either 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { + + event.data = handleObj.data; + event.handleObj = handleObj; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + return event.result; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** + props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, + originalEvent = event, + fixHook = jQuery.event.fixHooks[ event.type ] || {}, + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = jQuery.Event( originalEvent ); + + for ( i = copy.length; i; ) { + prop = copy[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Target should not be a text node (#504, Safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8) + if ( event.metaKey === undefined ) { + event.metaKey = event.ctrlKey; + } + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + ready: { + // Make sure the ready event is setup + setup: jQuery.bindReady + }, + + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + + focus: { + delegateType: "focusin" + }, + blur: { + delegateType: "focusout" + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +// Some plugins are using, but it's undocumented/deprecated and will be removed. +// The 1.7 special event interface should provide all the hooks needed now. +jQuery.event.handle = jQuery.event.dispatch; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + if ( elem.detachEvent ) { + elem.detachEvent( "on" + type, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var target = this, + related = event.relatedTarget, + handleObj = event.handleObj, + selector = handleObj.selector, + ret; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !form._submit_attached ) { + jQuery.event.add( form, "submit._submit", function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + }); + form._submit_attached = true; + } + }); + // return undefined since we don't need an event listener + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + jQuery.event.simulate( "change", this, event, true ); + } + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + elem._change_attached = true; + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on.call( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + var handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( var type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + live: function( types, data, fn ) { + jQuery( this.context ).on( types, this.selector, data, fn ); + return this; + }, + die: function( types, fn ) { + jQuery( this.context ).off( types, this.selector || "**", fn ); + return this; + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + + if ( jQuery.attrFn ) { + jQuery.attrFn[ name ] = true; + } + + if ( rkeyEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; + } + + if ( rmouseEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; + } +}); + + + +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + expando = "sizcache" + (Math.random() + '').replace('.', ''), + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true, + rBackslash = /\\/g, + rReturn = /\r\n/g, + rNonWord = /\W/; + +// Here we check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function() { + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function( selector, context, results, seed ) { + results = results || []; + context = context || document; + + var origContext = context; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var m, set, checkSet, extra, ret, cur, pop, i, + prune = true, + contextXML = Sizzle.isXML( context ), + parts = [], + soFar = selector; + + // Reset the position of the chunker regexp (start from head) + do { + chunker.exec( "" ); + m = chunker.exec( soFar ); + + if ( m ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + } while ( m ); + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context, seed ); + + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) { + selector += parts.shift(); + } + + set = posProcess( selector, set, seed ); + } + } + + } else { + // Take a shortcut and set the context if the root selector is an ID + // (but not if it'll be faster if the inner selector is an ID) + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + + ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? + Sizzle.filter( ret.expr, ret.set )[0] : + ret.set[0]; + } + + if ( context ) { + ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + + set = ret.expr ? + Sizzle.filter( ret.expr, ret.set ) : + ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray( set ); + + } else { + prune = false; + } + + while ( parts.length ) { + cur = parts.pop(); + pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + Sizzle.error( cur || selector ); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + + } else if ( context && context.nodeType === 1 ) { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + + } else { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function( results ) { + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; + +Sizzle.matches = function( expr, set ) { + return Sizzle( expr, null, null, set ); +}; + +Sizzle.matchesSelector = function( node, expr ) { + return Sizzle( expr, null, null, [node] ).length > 0; +}; + +Sizzle.find = function( expr, context, isXML ) { + var set, i, len, match, type, left; + + if ( !expr ) { + return []; + } + + for ( i = 0, len = Expr.order.length; i < len; i++ ) { + type = Expr.order[i]; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + left = match[1]; + match.splice( 1, 1 ); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace( rBackslash, "" ); + set = Expr.find[ type ]( match, context, isXML ); + + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( "*" ) : + []; + } + + return { set: set, expr: expr }; +}; + +Sizzle.filter = function( expr, set, inplace, not ) { + var match, anyFound, + type, found, item, filter, left, + i, pass, + old = expr, + result = [], + curLoop = set, + isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); + + while ( expr && set.length ) { + for ( type in Expr.filter ) { + if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { + filter = Expr.filter[ type ]; + left = match[1]; + + anyFound = false; + + match.splice(1,1); + + if ( left.substr( left.length - 1 ) === "\\" ) { + continue; + } + + if ( curLoop === result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + pass = not ^ found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + + } else { + curLoop[i] = false; + } + + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + // Improper expression + if ( expr === old ) { + if ( anyFound == null ) { + Sizzle.error( expr ); + + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Utility function for retreiving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +var getText = Sizzle.getText = function( elem ) { + var i, node, + nodeType = elem.nodeType, + ret = ""; + + if ( nodeType ) { + if ( nodeType === 1 || nodeType === 9 ) { + // Use textContent || innerText for elements + if ( typeof elem.textContent === 'string' ) { + return elem.textContent; + } else if ( typeof elem.innerText === 'string' ) { + // Replace IE's carriage returns + return elem.innerText.replace( rReturn, '' ); + } else { + // Traverse it's children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + } else { + + // If no nodeType, this is expected to be an array + for ( i = 0; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + if ( node.nodeType !== 8 ) { + ret += getText( node ); + } + } + } + return ret; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + + match: { + ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + + leftMatch: {}, + + attrMap: { + "class": "className", + "for": "htmlFor" + }, + + attrHandle: { + href: function( elem ) { + return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); + } + }, + + relative: { + "+": function(checkSet, part){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !rNonWord.test( part ), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag ) { + part = part.toLowerCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + + ">": function( checkSet, part ) { + var elem, + isPartStr = typeof part === "string", + i = 0, + l = checkSet.length; + + if ( isPartStr && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + + } else { + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + + "": function(checkSet, part, isXML){ + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); + }, + + "~": function( checkSet, part, isXML ) { + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); + } + }, + + find: { + ID: function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }, + + NAME: function( match, context ) { + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], + results = context.getElementsByName( match[1] ); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + + TAG: function( match, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( match[1] ); + } + } + }, + preFilter: { + CLASS: function( match, curLoop, inplace, result, not, isXML ) { + match = " " + match[1].replace( rBackslash, "" ) + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { + if ( !inplace ) { + result.push( elem ); + } + + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + + ID: function( match ) { + return match[1].replace( rBackslash, "" ); + }, + + TAG: function( match, curLoop ) { + return match[1].replace( rBackslash, "" ).toLowerCase(); + }, + + CHILD: function( match ) { + if ( match[1] === "nth" ) { + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + match[2] = match[2].replace(/^\+|\s*/g, ''); + + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( + match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + // calculate the numbers (first)n+(last) including if they are negative + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + // TODO: Move to normal caching system + match[0] = done++; + + return match; + }, + + ATTR: function( match, curLoop, inplace, result, not, isXML ) { + var name = match[1] = match[1].replace( rBackslash, "" ); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + // Handle if an un-quoted value was used + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + + PSEUDO: function( match, curLoop, inplace, result, not ) { + if ( match[1] === "not" ) { + // If we're dealing with a complex expression, or a simple one + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + + if ( !inplace ) { + result.push.apply( result, ret ); + } + + return false; + } + + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + + POS: function( match ) { + match.unshift( true ); + + return match; + } + }, + + filters: { + enabled: function( elem ) { + return elem.disabled === false && elem.type !== "hidden"; + }, + + disabled: function( elem ) { + return elem.disabled === true; + }, + + checked: function( elem ) { + return elem.checked === true; + }, + + selected: function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + parent: function( elem ) { + return !!elem.firstChild; + }, + + empty: function( elem ) { + return !elem.firstChild; + }, + + has: function( elem, i, match ) { + return !!Sizzle( match[3], elem ).length; + }, + + header: function( elem ) { + return (/h\d/i).test( elem.nodeName ); + }, + + text: function( elem ) { + var attr = elem.getAttribute( "type" ), type = elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); + }, + + radio: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; + }, + + checkbox: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; + }, + + file: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; + }, + + password: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; + }, + + submit: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; + }, + + image: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; + }, + + reset: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; + }, + + button: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; + }, + + input: function( elem ) { + return (/input|select|textarea|button/i).test( elem.nodeName ); + }, + + focus: function( elem ) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + first: function( elem, i ) { + return i === 0; + }, + + last: function( elem, i, match, array ) { + return i === array.length - 1; + }, + + even: function( elem, i ) { + return i % 2 === 0; + }, + + odd: function( elem, i ) { + return i % 2 === 1; + }, + + lt: function( elem, i, match ) { + return i < match[3] - 0; + }, + + gt: function( elem, i, match ) { + return i > match[3] - 0; + }, + + nth: function( elem, i, match ) { + return match[3] - 0 === i; + }, + + eq: function( elem, i, match ) { + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function( elem, match, i, array ) { + var name = match[1], + filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; + + } else if ( name === "not" ) { + var not = match[3]; + + for ( var j = 0, l = not.length; j < l; j++ ) { + if ( not[j] === elem ) { + return false; + } + } + + return true; + + } else { + Sizzle.error( name ); + } + }, + + CHILD: function( elem, match ) { + var first, last, + doneName, parent, cache, + count, diff, + type = match[1], + node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + + case "nth": + first = match[2]; + last = match[3]; + + if ( first === 1 && last === 0 ) { + return true; + } + + doneName = match[0]; + parent = elem.parentNode; + + if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) { + count = 0; + + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + + parent[ expando ] = doneName; + } + + diff = elem.nodeIndex - last; + + if ( first === 0 ) { + return diff === 0; + + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + } + }, + + ID: function( elem, match ) { + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + + TAG: function( elem, match ) { + return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match; + }, + + CLASS: function( elem, match ) { + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + + ATTR: function( elem, match ) { + var name = match[1], + result = Sizzle.attr ? + Sizzle.attr( elem, name ) : + Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + !type && Sizzle.attr ? + result != null : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value !== check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + + POS: function( elem, match, i, array ) { + var name = match[2], + filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS, + fescape = function(all, num){ + return "\\" + (num - 0 + 1); + }; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); +} + +var makeArray = function( array, results ) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +// Perform a simple check to determine if the browser is capable of +// converting a NodeList to an array using builtin methods. +// Also verifies that the returned array holds DOM nodes +// (which is not the case in the Blackberry browser) +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; + +// Provide a fallback method if it does not work +} catch( e ) { + makeArray = function( array, results ) { + var i = 0, + ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + + } else { + if ( typeof array.length === "number" ) { + for ( var l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + + } else { + for ( ; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder, siblingCheck; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + return a.compareDocumentPosition ? -1 : 1; + } + + return a.compareDocumentPosition(b) & 4 ? -1 : 1; + }; + +} else { + sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + + siblingCheck = function( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + }; +} + +// Check to see if the browser returns elements by name when +// querying by getElementById (and provide a workaround) +(function(){ + // We're going to inject a fake input element with a specified name + var form = document.createElement("div"), + id = "script" + (new Date()).getTime(), + root = document.documentElement; + + form.innerHTML = ""; + + // Inject it into the root element, check its status, and remove it quickly + root.insertBefore( form, root.firstChild ); + + // The workaround has to do additional checks after a getElementById + // Which slows things down for other browsers (hence the branching) + if ( document.getElementById( id ) ) { + Expr.find.ID = function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + + return m ? + m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? + [m] : + undefined : + []; + } + }; + + Expr.filter.ID = function( elem, match ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + + root.removeChild( form ); + + // release memory in IE + root = form = null; +})(); + +(function(){ + // Check to see if the browser returns only elements + // when doing getElementsByTagName("*") + + // Create a fake element + var div = document.createElement("div"); + div.appendChild( document.createComment("") ); + + // Make sure no comments are found + if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function( match, context ) { + var results = context.getElementsByTagName( match[1] ); + + // Filter out possible comments + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + } + + // Check to see if an attribute returns normalized href attributes + div.innerHTML = ""; + + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + div.firstChild.getAttribute("href") !== "#" ) { + + Expr.attrHandle.href = function( elem ) { + return elem.getAttribute( "href", 2 ); + }; + } + + // release memory in IE + div = null; +})(); + +if ( document.querySelectorAll ) { + (function(){ + var oldSizzle = Sizzle, + div = document.createElement("div"), + id = "__sizzle__"; + + div.innerHTML = "

        "; + + // Safari can't handle uppercase or unicode characters when + // in quirks mode. + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function( query, context, extra, seed ) { + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && !Sizzle.isXML(context) ) { + // See if we find a selector to speed up + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); + + if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { + // Speed-up: Sizzle("TAG") + if ( match[1] ) { + return makeArray( context.getElementsByTagName( query ), extra ); + + // Speed-up: Sizzle(".CLASS") + } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { + return makeArray( context.getElementsByClassName( match[2] ), extra ); + } + } + + if ( context.nodeType === 9 ) { + // Speed-up: Sizzle("body") + // The body element only exists once, optimize finding it + if ( query === "body" && context.body ) { + return makeArray( [ context.body ], extra ); + + // Speed-up: Sizzle("#ID") + } else if ( match && match[3] ) { + var elem = context.getElementById( match[3] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id === match[3] ) { + return makeArray( [ elem ], extra ); + } + + } else { + return makeArray( [], extra ); + } + } + + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(qsaError) {} + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || id, + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if ( !old ) { + context.setAttribute( "id", nid ); + } else { + nid = nid.replace( /'/g, "\\$&" ); + } + if ( relativeHierarchySelector && hasParent ) { + context = context.parentNode; + } + + try { + if ( !relativeHierarchySelector || hasParent ) { + return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); + } + + } catch(pseudoError) { + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } + } + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + // release memory in IE + div = null; + })(); +} + +(function(){ + var html = document.documentElement, + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; + + if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); + + } catch( pseudoError ) { + pseudoWorks = true; + } + + Sizzle.matchesSelector = function( node, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + + if ( !Sizzle.isXML( node ) ) { + try { + if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } + } + } catch(e) {} + } + + return Sizzle(expr, null, null, [node]).length > 0; + }; + } +})(); + +(function(){ + var div = document.createElement("div"); + + div.innerHTML = "
        "; + + // Opera can't find a second classname (in 9.6) + // Also, make sure that getElementsByClassName actually exists + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) { + return; + } + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function( match, context, isXML ) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + // release memory in IE + div = null; +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( elem.nodeName.toLowerCase() === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +if ( document.documentElement.contains ) { + Sizzle.contains = function( a, b ) { + return a !== b && (a.contains ? a.contains(b) : true); + }; + +} else if ( document.documentElement.compareDocumentPosition ) { + Sizzle.contains = function( a, b ) { + return !!(a.compareDocumentPosition(b) & 16); + }; + +} else { + Sizzle.contains = function() { + return false; + }; +} + +Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +var posProcess = function( selector, context, seed ) { + var match, + tmpSet = [], + later = "", + root = context.nodeType ? [context] : context; + + // Position selectors must be done after the filter + // And so must :not(positional) so we move all PSEUDOs to the end + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet, seed ); + } + + return Sizzle.filter( later, tmpSet ); +}; + +// EXPOSE +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +Sizzle.selectors.attrMap = {}; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.filters; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})(); + + +var runtil = /Until$/, + rparentsprev = /^(?:parents|prevUntil|prevAll)/, + // Note: This RegExp should be improved, or likely pulled from Sizzle + rmultiselector = /,/, + isSimple = /^.[^:#\[\.,]*$/, + slice = Array.prototype.slice, + POS = jQuery.expr.match.POS, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + var ret = this.pushStack( "", "find", selector ), + length, n, r; + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + POS.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var ret = [], i, l, cur = this[0]; + + // Array (deprecated as of jQuery 1.7) + if ( jQuery.isArray( selectors ) ) { + var level = 1; + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( i = 0; i < selectors.length; i++ ) { + + if ( jQuery( cur ).is( selectors[ i ] ) ) { + ret.push({ selector: selectors[ i ], elem: cur, level: level }); + } + } + + cur = cur.parentNode; + level++; + } + + return ret; + } + + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( i = 0, l = this.length; i < l; i++ ) { + cur = this[i]; + + while ( cur ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + + } else { + cur = cur.parentNode; + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { + break; + } + } + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + andSelf: function() { + return this.add( this.prevObject ); + } +}); + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return jQuery.nth( elem, 2, "nextSibling" ); + }, + prev: function( elem ) { + return jQuery.nth( elem, 2, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( elem.parentNode.firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.makeArray( elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, slice.call( arguments ).join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + nth: function( cur, result, dir, elem ) { + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} + + + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, + rtagName = /<([\w:]+)/, + rtbody = /", "" ], + legend: [ 1, "
        ", "
        " ], + thead: [ 1, "", "
        " ], + tr: [ 2, "", "
        " ], + td: [ 3, "", "
        " ], + col: [ 2, "", "
        " ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }, + safeFragment = createSafeFragment( document ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE can't serialize and + + + + + + + + + + + + + + + + diff --git a/application/admin/view/upriv/lst.html~ b/application/admin/view/upriv/lst.html~ new file mode 100644 index 0000000..21f210b --- /dev/null +++ b/application/admin/view/upriv/lst.html~ @@ -0,0 +1,207 @@ + + + + 童老师ThinkPHP交流群:484519446 + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + +
        + + + + + +
        + +
        +
        +
        +
        + 用户和权限 +
        +
        +
        +
        +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        +
        + +
        + +
        + +
        + + +
        +
        + +
        +
        +
        +
        +
        +
        +
        +
        + +
        + +
        + +
        +
        + + + + + + + + + + + \ No newline at end of file diff --git a/application/admin/view/warn/dlg_modevcomf.html b/application/admin/view/warn/dlg_modevcomf.html new file mode 100644 index 0000000..de40832 --- /dev/null +++ b/application/admin/view/warn/dlg_modevcomf.html @@ -0,0 +1,66 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/dlgdong1_tmp.html b/application/admin/view/warn/dlgdong1_tmp.html new file mode 100644 index 0000000..35fa779 --- /dev/null +++ b/application/admin/view/warn/dlgdong1_tmp.html @@ -0,0 +1,63 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/dlgdong2_tmp.html b/application/admin/view/warn/dlgdong2_tmp.html new file mode 100644 index 0000000..7b920b7 --- /dev/null +++ b/application/admin/view/warn/dlgdong2_tmp.html @@ -0,0 +1,63 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/dlgdong3_tmp.html b/application/admin/view/warn/dlgdong3_tmp.html new file mode 100644 index 0000000..d280024 --- /dev/null +++ b/application/admin/view/warn/dlgdong3_tmp.html @@ -0,0 +1,63 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/dlgdong_awater.html b/application/admin/view/warn/dlgdong_awater.html new file mode 100644 index 0000000..45d2df6 --- /dev/null +++ b/application/admin/view/warn/dlgdong_awater.html @@ -0,0 +1,55 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/dlgkg1_awater.html b/application/admin/view/warn/dlgkg1_awater.html new file mode 100644 index 0000000..45d2df6 --- /dev/null +++ b/application/admin/view/warn/dlgkg1_awater.html @@ -0,0 +1,55 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/dlgkg1_tmp.html b/application/admin/view/warn/dlgkg1_tmp.html new file mode 100644 index 0000000..c0b55da --- /dev/null +++ b/application/admin/view/warn/dlgkg1_tmp.html @@ -0,0 +1,63 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/dlgkg2_awater.html b/application/admin/view/warn/dlgkg2_awater.html new file mode 100644 index 0000000..fa79dd7 --- /dev/null +++ b/application/admin/view/warn/dlgkg2_awater.html @@ -0,0 +1,55 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/dlgkg2_tmp.html b/application/admin/view/warn/dlgkg2_tmp.html new file mode 100644 index 0000000..cbcb758 --- /dev/null +++ b/application/admin/view/warn/dlgkg2_tmp.html @@ -0,0 +1,63 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/eia.html b/application/admin/view/warn/eia.html new file mode 100644 index 0000000..5c37b06 --- /dev/null +++ b/application/admin/view/warn/eia.html @@ -0,0 +1,101 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/eiact.html b/application/admin/view/warn/eiact.html new file mode 100644 index 0000000..f09af21 --- /dev/null +++ b/application/admin/view/warn/eiact.html @@ -0,0 +1,53 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + +
        +
        + +
        +
        + + + diff --git a/application/admin/view/warn/eif.html b/application/admin/view/warn/eif.html new file mode 100644 index 0000000..7840c7e --- /dev/null +++ b/application/admin/view/warn/eif.html @@ -0,0 +1,65 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/epa.html b/application/admin/view/warn/epa.html new file mode 100644 index 0000000..ada4138 --- /dev/null +++ b/application/admin/view/warn/epa.html @@ -0,0 +1,114 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/epa_1.html b/application/admin/view/warn/epa_1.html new file mode 100644 index 0000000..7c463a4 --- /dev/null +++ b/application/admin/view/warn/epa_1.html @@ -0,0 +1,105 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/epa_2.html b/application/admin/view/warn/epa_2.html new file mode 100644 index 0000000..54dd51e --- /dev/null +++ b/application/admin/view/warn/epa_2.html @@ -0,0 +1,67 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/epa_3.html b/application/admin/view/warn/epa_3.html new file mode 100644 index 0000000..ada4138 --- /dev/null +++ b/application/admin/view/warn/epa_3.html @@ -0,0 +1,114 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/etp.html b/application/admin/view/warn/etp.html new file mode 100644 index 0000000..e525b9e --- /dev/null +++ b/application/admin/view/warn/etp.html @@ -0,0 +1,100 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + +
        +
        + + +
        +
        + + diff --git a/application/admin/view/warn/etp_gxcw.html b/application/admin/view/warn/etp_gxcw.html new file mode 100644 index 0000000..76045cb --- /dev/null +++ b/application/admin/view/warn/etp_gxcw.html @@ -0,0 +1,124 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/etp_rzcw.html b/application/admin/view/warn/etp_rzcw.html new file mode 100644 index 0000000..76045cb --- /dev/null +++ b/application/admin/view/warn/etp_rzcw.html @@ -0,0 +1,124 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/index.html b/application/admin/view/warn/index.html new file mode 100644 index 0000000..01341f2 --- /dev/null +++ b/application/admin/view/warn/index.html @@ -0,0 +1,131 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + +
        +
        + + +
        +
        + + + + diff --git a/application/admin/view/warn/jdw.html b/application/admin/view/warn/jdw.html new file mode 100644 index 0000000..42144d3 --- /dev/null +++ b/application/admin/view/warn/jdw.html @@ -0,0 +1,50 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + +
        +
        + + +
        +
        + + \ No newline at end of file diff --git a/application/admin/view/warn/mic.html b/application/admin/view/warn/mic.html new file mode 100644 index 0000000..b6f5eeb --- /dev/null +++ b/application/admin/view/warn/mic.html @@ -0,0 +1,72 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/otp.html b/application/admin/view/warn/otp.html new file mode 100644 index 0000000..b6e27b3 --- /dev/null +++ b/application/admin/view/warn/otp.html @@ -0,0 +1,51 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/pd_h.html b/application/admin/view/warn/pd_h.html new file mode 100644 index 0000000..42b65ba --- /dev/null +++ b/application/admin/view/warn/pd_h.html @@ -0,0 +1,74 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + +
        +
        + + +
        +
        + + diff --git a/application/admin/view/warn/scur.html b/application/admin/view/warn/scur.html new file mode 100644 index 0000000..3015b69 --- /dev/null +++ b/application/admin/view/warn/scur.html @@ -0,0 +1,51 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + +
        +
        + + +
        +
        + + \ No newline at end of file diff --git a/application/admin/view/warn/sf6_h.html b/application/admin/view/warn/sf6_h.html new file mode 100644 index 0000000..ef3f7d0 --- /dev/null +++ b/application/admin/view/warn/sf6_h.html @@ -0,0 +1,117 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/warn/sf6env_h.html b/application/admin/view/warn/sf6env_h.html new file mode 100644 index 0000000..b34df6f --- /dev/null +++ b/application/admin/view/warn/sf6env_h.html @@ -0,0 +1,117 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + +
        +
        + +
        +
        + + diff --git a/application/admin/view/wtree/wtree.html b/application/admin/view/wtree/wtree.html new file mode 100644 index 0000000..640eb54 --- /dev/null +++ b/application/admin/view/wtree/wtree.html @@ -0,0 +1,234 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + +{include file="public/top" /} + + +
        +
        +
        +
        + 监测设备列表 +
        +
        +
          +
          +
          +
          +
          +
          + 系统管理   /   + 报警值设置 +
          +
          + +
          +
          +
          +
          +
          + + + diff --git a/application/admin/view/zsb/add.html b/application/admin/view/zsb/add.html new file mode 100644 index 0000000..cd38e44 --- /dev/null +++ b/application/admin/view/zsb/add.html @@ -0,0 +1,305 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +{include file="public/top" /} + + + +
          + +
          + + + + {include file="common/devleft" /} + + + + + +
          + + + + + + + + + + + +
          + + + +
          + +
          + +
          + +
          + + 主设备 + +
          + +
          + +
          + +
          + + + +
          + + + +
          + + + +
          + + + +
          + +
          + + + +
          + + + +
          + + + +
          + +
          + + + +
          + + + +
          + + + +
          + +
          + + + +
          + + + +
          + + + +
          + + + +
          + +
          + + + +
          + +
          + +
          + +
          + +
          + +
          + +
          + +
          + + + +
          + + + +
          + + + +
          + +
          + + + + + + + + + + + + + + + + + + + + +
          + diff --git a/application/admin/view/zsb/add.html~ b/application/admin/view/zsb/add.html~ new file mode 100644 index 0000000..b9d9206 --- /dev/null +++ b/application/admin/view/zsb/add.html~ @@ -0,0 +1,153 @@ + + + + 添加主设备信息 + + + + + + + + + + + + + + + + + + + +{include file="public/top" /} + +
          +
          + + {include file="common/devleft" /} + + +
          + + + + + +
          + +
          +
          +
          +
          + 主设备 +
          +
          +
          +
          + +
          + +
          + +
          + +
          +
          + +
          + +
          + +
          +
          + +
          + +
          + +
          +
          + +
          + +
          + +
          + +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          + +
          + +
          + +
          +
          + + + + + + + + + + + diff --git a/application/admin/view/zsb/edit.html b/application/admin/view/zsb/edit.html new file mode 100644 index 0000000..1c69f23 --- /dev/null +++ b/application/admin/view/zsb/edit.html @@ -0,0 +1,155 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + +
          +{include file="public/top" /} +
          +
          + + {include file="common/devleft" /} + + +
          + + + + + +
          + +
          +
          +
          +
          + 主设备 +
          +
          +
          + + +
          +
          + +
          + +
          + +
          +
          + +
          + +
          + +
          +
          + +
          + +
          + +
          +
          + +
          + +
          + +
          + + +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          + +
          + +
          + +
          +
          + + + + + + + + + + + +
          + diff --git a/application/admin/view/zsb/edit.html~ b/application/admin/view/zsb/edit.html~ new file mode 100644 index 0000000..5904900 --- /dev/null +++ b/application/admin/view/zsb/edit.html~ @@ -0,0 +1,154 @@ + + + + 编辑主设备 + + + + + + + + + + + + + + + + + + +{include file="public/top" /} +
          +
          + + {include file="common/devleft" /} + + +
          + + + + + +
          + +
          +
          +
          +
          + 主设备 +
          +
          +
          + + +
          +
          + +
          + +
          + +
          +
          + +
          + +
          + +
          +
          + +
          + +
          + +
          +
          + +
          + +
          + +
          + + +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          + +
          + +
          + +
          +
          + + + + + + + + + + + + diff --git a/application/admin/view/zsb/lst.html b/application/admin/view/zsb/lst.html new file mode 100644 index 0000000..d8762b0 --- /dev/null +++ b/application/admin/view/zsb/lst.html @@ -0,0 +1,118 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          + + {include file="public/top" /} + +
          +
          + + {include file="common/devleft" /} + + +
          + + + + + +
          + + +
          +
          +
          +
          +
          + + + + + + + + + + + + + {volist name="list" id="vo"} + + + + + + + + + {/volist} + +
          ID所属电站设备类型所属间隔设备名称操作
          {$vo.id}{$vo.bmc}{$vo.jmc}{$vo.lmc}{$vo.mc} + + 监测设备 + + + 编辑 + + + 删除 + +
          +
          +
          +
          +
          +
          +
          +
          + +
          + +
          + +
          +
          + + + + + + + + +
          + + diff --git a/application/admin/view/zsb/lst.html~ b/application/admin/view/zsb/lst.html~ new file mode 100644 index 0000000..b8eff42 --- /dev/null +++ b/application/admin/view/zsb/lst.html~ @@ -0,0 +1,117 @@ + + + + 主设备信息 + + + + + + + + + + + + + + + + + + + + {include file="public/top" /} + +
          +
          + + {include file="common/devleft" /} + + +
          + + + + + +
          + + +
          +
          +
          +
          +
          + + + + + + + + + + + + + {volist name="list" id="vo"} + + + + + + + + + {/volist} + +
          ID所属电站所属间隔设备类型设备名称操作
          {$vo.id}{$vo.bmc}{$vo.jmc}{$vo.lmc}{$vo.mc} + + 监测设备 + + + 编辑 + + + 删除 + +
          +
          +
          +
          +
          +
          +
          +
          + +
          + +
          + +
          +
          + + + + + + + + + + + diff --git a/application/command.php b/application/command.php new file mode 100644 index 0000000..826bb2b --- /dev/null +++ b/application/command.php @@ -0,0 +1,12 @@ + +// +---------------------------------------------------------------------- + +return []; diff --git a/application/common.php b/application/common.php new file mode 100644 index 0000000..55d22f2 --- /dev/null +++ b/application/common.php @@ -0,0 +1,12 @@ + +// +---------------------------------------------------------------------- + +// 应用公共文件 diff --git a/application/config.php b/application/config.php new file mode 100644 index 0000000..a6812e6 --- /dev/null +++ b/application/config.php @@ -0,0 +1,256 @@ + +// +---------------------------------------------------------------------- + +return [ + // +---------------------------------------------------------------------- + // | 应用设置 + // +---------------------------------------------------------------------- + + // 应用命名空间 + 'app_namespace' => 'app', + // 应用调试模式 + 'app_debug' => true, + // 应用Trace + 'app_trace' => false, + // 应用模式状态 + 'app_status' => '', + // 是否支持多模块 + 'app_multi_module' => true, + // 入口自动绑定模块 + 'auto_bind_module' => false, + // 注册的根命名空间 + 'root_namespace' => [], + // 扩展函数文件 + 'extra_file_list' => [THINK_PATH . 'helper' . EXT], + // 默认输出类型 + 'default_return_type' => 'html', + // 默认AJAX 数据返回格式,可选json xml ... + 'default_ajax_return' => 'json', + // 默认JSONP格式返回的处理方法 + 'default_jsonp_handler' => 'jsonpReturn', + // 默认JSONP处理方法 + 'var_jsonp_handler' => 'callback', + // 默认时区 + 'default_timezone' => 'PRC', + // 是否开启多语言 + 'lang_switch_on' => false, + // 默认全局过滤方法 用逗号分隔多个 + 'default_filter' => '', + // 默认语言 + 'default_lang' => 'zh-cn', + // 应用类库后缀 + 'class_suffix' => false, + // 控制器类后缀 + 'controller_suffix' => false, + + // +---------------------------------------------------------------------- + // | 模块设置 + // +---------------------------------------------------------------------- + + // 默认模块名 + 'default_module' => 'index', + // 禁止访问模块 + 'deny_module_list' => ['common'], + // 默认控制器名 + 'default_controller' => 'Index', + // 默认操作名 + 'default_action' => 'index', + // 默认验证器 + 'default_validate' => '', + // 默认的空控制器名 + 'empty_controller' => 'Error', + // 操作方法后缀 + 'action_suffix' => '', + // 自动搜索控制器 + 'controller_auto_search' => false, + + // +---------------------------------------------------------------------- + // | URL设置 + // +---------------------------------------------------------------------- + + // PATHINFO变量名 用于兼容模式 + 'var_pathinfo' => 's', + // 兼容PATH_INFO获取 + 'pathinfo_fetch' => ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL'], + // pathinfo分隔符 + 'pathinfo_depr' => '/', + // URL伪静态后缀 + 'url_html_suffix' => 'html', + // URL普通方式参数 用于自动生成 + 'url_common_param' => false, + // URL参数方式 0 按名称成对解析 1 按顺序解析 + 'url_param_type' => 0, + // 是否开启路由 + 'url_route_on' => true, + // 路由使用完整匹配 + 'route_complete_match' => false, + // 路由配置文件(支持配置多个) + 'route_config_file' => ['route'], + // 是否强制使用路由 + 'url_route_must' => false, + // 域名部署 + 'url_domain_deploy' => false, + // 域名根,如thinkphp.cn + 'url_domain_root' => '', + // 是否自动转换URL中的控制器和操作名 + 'url_convert' => true, + // 默认的访问控制器层 + 'url_controller_layer' => 'controller', + // 表单请求类型伪装变量 + 'var_method' => '_method', + // 表单ajax伪装变量 + 'var_ajax' => '_ajax', + // 表单pjax伪装变量 + 'var_pjax' => '_pjax', + // 是否开启请求缓存 true自动缓存 支持设置请求缓存规则 + 'request_cache' => false, + // 请求缓存有效期 + 'request_cache_expire' => null, + // 全局请求缓存排除规则 + 'request_cache_except' => [], + + // +---------------------------------------------------------------------- + // | 模板设置 + // +---------------------------------------------------------------------- + + 'template' => [ + // 模板引擎类型 支持 php think 支持扩展 + 'type' => 'Think', + // 模板路径 + 'view_path' => '', + // 模板后缀 + 'view_suffix' => 'html', + // 模板文件名分隔符 + 'view_depr' => DS, + // 模板引擎普通标签开始标记 + 'tpl_begin' => '{', + // 模板引擎普通标签结束标记 + 'tpl_end' => '}', + // 标签库标签开始标记 + 'taglib_begin' => '{', + // 标签库标签结束标记 + 'taglib_end' => '}', + ], + + // 视图输出字符串内容替换 + 'view_replace_str' => [ + '__INDEX__'=>'/static/qwe/index', + ], + // 默认跳转页面对应的模板文件 + 'dispatch_success_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl', + 'dispatch_error_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl', + + // +---------------------------------------------------------------------- + // | 异常及错误设置 + // +---------------------------------------------------------------------- + + // 异常页面的模板文件 + 'exception_tmpl' => THINK_PATH . 'tpl' . DS . 'think_exception.tpl', + + // 错误显示信息,非调试模式有效 + 'error_message' => '页面错误!请稍后再试~', + // 显示错误信息 + 'show_error_msg' => false, + // 异常处理handle类 留空使用 \think\exception\Handle + 'exception_handle' => '', + + // +---------------------------------------------------------------------- + // | 日志设置 + // +---------------------------------------------------------------------- + + 'log' => [ + // 日志记录方式,内置 file socket 支持扩展 + 'type' => 'File', + // 日志保存目录 + 'path' => LOG_PATH, + // 日志记录级别 + 'level' => [], + ], + + // +---------------------------------------------------------------------- + // | Trace设置 开启 app_trace 后 有效 + // +---------------------------------------------------------------------- + 'trace' => [ + // 内置Html Console 支持扩展 + 'type' => 'Html', + ], + + // +---------------------------------------------------------------------- + // | 缓存设置 + // +---------------------------------------------------------------------- + + 'cache' => [ + // 驱动方式 + 'type' => 'File', + // 缓存保存目录 + 'path' => CACHE_PATH, + // 缓存前缀 + 'prefix' => '', + // 缓存有效期 0表示永久缓存 + 'expire' => 0, + ], + + // +---------------------------------------------------------------------- + // | 会话设置 + // +---------------------------------------------------------------------- + + 'session' => [ + 'id' => '', + // SESSION_ID的提交变量,解决flash上传跨域 + 'var_session_id' => '', + // SESSION 前缀 + 'prefix' => 'think', + // 驱动方式 支持redis memcache memcached + 'type' => '', + // 是否自动开启 SESSION + 'auto_start' => true, + ], + + // +---------------------------------------------------------------------- + // | Cookie设置 + // +---------------------------------------------------------------------- + 'cookie' => [ + // cookie 名称前缀 + 'prefix' => '', + // cookie 保存时间 + 'expire' => 0, + // cookie 保存路径 + 'path' => '/', + // cookie 有效域名 + 'domain' => '', + // cookie 启用安全传输 + 'secure' => false, + // httponly设置 + 'httponly' => '', + // 是否使用 setcookie + 'setcookie' => true, + ], + + //分页配置 + 'paginate' => [ + 'type' => 'bootstrap', + 'var_page' => 'page', + 'list_rows' => 15, + ], + + 'captcha' => [ + // 验证码字符集合 + 'codeSet' => '2345678', + // 验证码字体大小(px) + 'fontSize' => 25, + // 是否画混淆曲线 + 'useCurve' => true, + // 验证码位数 + 'length' => 4, + // 验证成功后是否重置 + 'reset' => true + ], +]; diff --git a/application/database.php b/application/database.php new file mode 100644 index 0000000..3d7a1c1 --- /dev/null +++ b/application/database.php @@ -0,0 +1,64 @@ + +// +---------------------------------------------------------------------- + +return [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + // 'hostname' => '192.168.135.81', + 'hostname' => '192.168.128.86', + // 数据库名 cac_zjxj改成客户的cac-221124 20221124 + // 数据库名 cac-221124改回cac_zjxj 20221229 + // 数据库名 cac_zjxj 改到cacdb 20230118 +// 'database' => 'cac_new', + // 'database' => 'cacdb', +// 'database' => 'cac-221124', + 'database' => 'cac_zjxj', +// 'database' => 'dses', + // 用户名 + //'username' => 'shjd', + // 密码 + //'password' => 'shjd2017', + // 用户名 + 'username' => 'root', + // 密码 + 'password' => '123456', + // 端口 + 'hostport' => '', + // 连接dsn + 'dsn' => '', + // 数据库连接参数 + 'params' => [], + // 数据库编码默认采用utf8 + 'charset' => 'utf8', + // 数据库表前缀 + 'prefix' => '', + // 数据库调试模式 + 'debug' => true, + // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) + 'deploy' => 0, + // 数据库读写是否分离 主从式有效 + 'rw_separate' => false, + // 读写分离后 主服务器数量 + 'master_num' => 1, + // 指定从服务器序号 + 'slave_no' => '', + // 是否严格检查字段是否存在 + 'fields_strict' => true, + // 数据集返回类型 + 'resultset_type' => 'array', + // 自动写入时间戳字段 + 'auto_timestamp' => false, + // 时间字段取出后的默认时间格式 + 'datetime_format' => 'Y-m-d H:i:s', + // 是否需要进行SQL性能分析 + 'sql_explain' => false, +]; diff --git a/application/extra/queue.php b/application/extra/queue.php new file mode 100644 index 0000000..9223ef6 --- /dev/null +++ b/application/extra/queue.php @@ -0,0 +1,14 @@ + +// +---------------------------------------------------------------------- + +return [ + 'connector' => 'Sync' +]; diff --git a/application/index/config.php b/application/index/config.php new file mode 100644 index 0000000..15ecbf2 --- /dev/null +++ b/application/index/config.php @@ -0,0 +1,9 @@ + [ + '__PUBLIC__'=>SITE_URL.'/static/admin', + '__IMG__'=>SITE_URL.'/static', + '__ROOTURL__'=>SITE_URL.'/index.php', + ], + +]; diff --git a/application/index/controller/Base.php b/application/index/controller/Base.php new file mode 100644 index 0000000..1c38695 --- /dev/null +++ b/application/index/controller/Base.php @@ -0,0 +1,59 @@ +getTree($data, 0); + $this->assign('topmenus',$menu); + } + + function getTree($data, $ppd) + { + $html = ''; + $ppid=-1; + foreach($data as $k => $v) + { + if($v['pid'] == $ppd) + { //父亲找到儿子 + + if($v['linkurl']!=null && $v['linkurl']!="") + { + $html .= "
        • " . $v['pidname'].""; + } + else + { + $html .= "
        • " . $v['pidname'].""; + } + $ppid=$v['ppid']; + $html .= $this->getTree($data, $v['id']); + $html = $html . "
        • "; + } + } + if($ppd==0) { + return $html ? '' : $html; + } + else + { + return $html ? '
            ' . $html . '
          ' : $html; + } + } + + +} + + + + + + + + + diff --git a/application/index/controller/Bdmap.php b/application/index/controller/Bdmap.php new file mode 100644 index 0000000..402c8c4 --- /dev/null +++ b/application/index/controller/Bdmap.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFDB5LcbiFC29VfukvdoxlFjShfbYlwoyXFyxpdMOlGyxjd250FM9SdoaZbrkiF2A7tMYSCbYzwrkLdByXwoa4foaVcuHIWMyzcWp7tmn1CMxpCZnMfB5jfolvdJnpdMOlGtIptmShFMa0fbkVwtO0DolzRT5McbOjDtImCMOsCbEmhTShgWp9tI== \ No newline at end of file diff --git a/application/index/controller/Cate2.php b/application/index/controller/Cate2.php new file mode 100644 index 0000000..f5f6627 --- /dev/null +++ b/application/index/controller/Cate2.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXbolVcoa4boYvdmOZd2xScbw7eWp1F2AIfoipdMsFW29VfukvdoxlFjSYtmazcUn0DolVD1xrCjSYtMYSCbYzwrYifoAZwoa4foaVcuHIW29VfukvdoxlFI0hGX0hFuaJdoljwoc1dMY0DB9VwolVcoa4htLYtmSYtmklfuaZdJELfoipFZ0+cMa0C2IPk2YifoAZkZL7eWp9eWpXfBkSDBHIcmaVC3Opd24Ic2a0DmYvdJIpeWp7eWPLCJE9wrOJKjpxfBaZGUIJF2aScBY0woOgaolscUxOYUnMFM9swoOifoygcbniwtwpKX0hkoOiforINUnQF29Vb2aVC29LcUILCJL7eWplC2ivwtOLCbOiKX0hgW0hgW0h \ No newline at end of file diff --git a/application/index/controller/Chart.php b/application/index/controller/Chart.php new file mode 100644 index 0000000..93947b3 --- /dev/null +++ b/application/index/controller/Chart.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXbolVcoa4boYvdmOZd2xScbw7eWp1F2AIfoipdMsFOow7eWp1F2AIfoipdMsFW29VfukvdoxlFjSYtMYSCbYzwrYPCbk0wtEIcbi0cB5LFZned250FM9SdoaZeWp7eWpXfBkSDBHIcmaVC3Opd24IDB5LcbIPhW0hGX0hFMa0fbkVwtO0DolzRT5McbOjDtImC2iiFmWmhTSYtm0Ytmn1CMxpCZnMfB5jfolvdJnmcbOQF29Vhtl7eWPLCj1rCjP6FbalFmLPwmYldoajftnVCB1lRuLIcmkvdUn3F2fgFollwtwpKX0hkoOifor9DmYvdl9ldMYvcoAPkowpKX0hcBYPdZELcoy0CTSYtm0Ytm0YtI== \ No newline at end of file diff --git a/application/index/controller/Dztj.php b/application/index/controller/Dztj.php new file mode 100644 index 0000000..7f52c30 --- /dev/null +++ b/application/index/controller/Dztj.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFDB5LcbiFC29VfukvdoxlFjShfbYlwuOPDB5qbrOJKXp1F2AIfoipdMsFW29VfukvdoxlFjShfbYlwuOPDB5qbyklFbalF3W7tMYSCbYzwrO6foPIwtnlGuOldMOzwrYvdmOZd2xScbwhGXpXfBkSDBHIcmaVC3Opd24IDB5LcbIPhWp7tJOJNAOJKjpxfBaZGUIJF2aScBY0woYvfB50holLhUn5RoYvdMYifti2d2x0CBflc3kicoASk2sBkZLIdMyscUnMFM9swokLGJnmFM91FtnJGUn2d2x0CBflc3kicoAJhTShkowxNAOJKjpxfBaZGUIJF2aScBY0woYvfB50holLhUn5RoYvdMYiftizC2yScUXmdaFmhUnVCB1lwocZd20ICMO6wofZd3aXwok5wuYjCBxlwJL7tMcvFMaiC2IPwtOJwoyzwtOqNT4LfJEpwuShcM9ZcByjDtIIkuCICbHIkoSxNT4LfjrIhUn7tMlMhtOqHUE9NUEmGUFpGXPLClSLD11dk3LmbT0IcMxvCbO2CBXPkuCxhTShgWp9tm0hcM9ZcByjDtIIkowxwoyzwtOqNT4LfJEpGXpMd3klCBYPhtELfJniFZELDzr9NJO2HUEpGXppcJILDzrINT0Ik3LmhbShkowxBZOqbaSmGUffNBcSd2y0fMyShtO2HUL7tm19tm0hkuOPDbHsNMyzF2lmdJImculLDJFSDmYvdl9ldMYvcoAPkowphTShkuOPDbHsNMyzF2lmdJImcupmdUFSDmYvdl9ldMYvcoAPkowxhUL7tmklfuaZdJELfoipFZ0+cMa0C2IPhTShgWpXfBkSDBHIcmaVC3Opd24Ic2a0b3cvduOic2amFMyLcUIpGXPLCj1rCjP6FbalFmLPwmYldoajftnjd3aVftipctLIGUxjd25jCbWPfM9SfoymcBfZCBOlRtfqaJFpwo5idBAIcmkvdUnJcuPIc3kvfbEICmLIfM9SfoymcBfZCBOlwJL7tJOLCbOiNBpzd25gcB5jd2OlhtOJhTShcBYPdZELcoy0CTShgWpXfBkSDBHIcmaVC3Opd24Ic2a0b3YjCBxlhtl7tJOJNAOJKjpxfBaZGUIJF2aScBY0woYvfB50holLhUn5RoYvdMYiftizC2yScUXmdaFmhUnVCB1lwocZd20ICMO6wofZd3aXwok5wuYjCBxlwJL7tJOLCbOiNBpzd25gcB5jd2OlhtOJhTShcBYPdZELcoy0CTShgWp9tI== \ No newline at end of file diff --git a/application/index/controller/Index.php b/application/index/controller/Index.php new file mode 100644 index 0000000..ee5ef67 --- /dev/null +++ b/application/index/controller/Index.php @@ -0,0 +1,11 @@ +fetch(); + } +} diff --git a/application/index/controller/Index_bak.php b/application/index/controller/Index_bak.php new file mode 100644 index 0000000..5aaeeaa --- /dev/null +++ b/application/index/controller/Index_bak.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXbolVcoa4boYvdmOZd2xScbw7eWp1F2AICbnXbolVcoa4boYvdmOZd2xScbkFWMyzcTSYtMYSCbYzwrlVcoa4woa4foaVcuHIWMyzcW0hGXpMfB5jfolvdJnpdMOlGtIpeWp7eWpZcbO1FM4IkuOPDbHsNMclfoYPhtL7eWp9eWp9tI== \ No newline at end of file diff --git a/application/index/controller/Line.php b/application/index/controller/Line.php new file mode 100644 index 0000000..9c5353e --- /dev/null +++ b/application/index/controller/Line.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFDB5LcbiFC29VfukvdoxlFjShfbYlwuOPDB5qbrYvdmOZd2xScbw7tmazcUn0DolVD1xrCjShC2xiF3HITolVcUnlGuOldMOzwrYvdmOZd2xScbwhGXpXfBkSDBHIcmaVC3Opd24IDB5LcbIPhWp7tMlMwtildbn0GUILb0fyaySmDBWmbULpwoOpcUIm5pGI5pBw55Qr57ZB5C+3kZL7tJOpctE9wtOgO0aABZfpctffKXPLcBOifoA9coy0cUIJBU1sRBWJhTShkuYLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPwJOlcoy0cUEsHUnsd250DtwphTShDBCIhtyldbn0GUILb0fyaySmF3OpdBAmbULpwuShkuYLCbOlNUOgO0aABZfzfolscUffKXp9tMlMwtIicB1XfuLPky9uOaOdk2a0DB1lk10phUn7tJOlcoy0cT1zfBkzfuwPky9uOaOdk2a0DB1lk10SHtXxHtL7tm0hkuOPDbHsNMyzF2lmdJImDBWmRtOpctL7tJO0DolzRT5iF3Ypc24Pk2aLCbOlkZXLcBOifoApKXPLfoipFZ0+CbYzDBfVhtfzcoy0cUFSkuYLCbOlhTShFMa0fbkVwtO0DolzRT5McbOjDtImdolVcUFpKXp9tmn1CMxpCZnMfB5jfolvdJnmcbOQF29VhtLhGXPLcBOifoA9coy0cUIJBU1sRBWJhTShkuYLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPwJOlcoy0cUEsHUnsd250DtwphTShDBCIhoasFuO5htOgO0aABZfzDBWmbULpwuklfuaZdjShkuYpctE9wtOgO0aABZfzDBWmbTShDBCIhtyldbn0GUILb0fyaySmF3OpdBAmbULpwuShkuYLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPky9uOaOdk3Y0DB1lk10phTShgWppcJEPwBasFuO5htOgO0aABZflfolscUffhULIGXPLcBOifoA9coy0cUImBU1sRBWmRuY0FmOvfolscUILb0fyaySmcbOpdBAmbULpKXPLcBOifoA9coy0cUImBU1sRBWmRuY0FmOvfolscUIJkoaLCbOlwerIcoy5wJLpKXp9tJOJwe0IOow6Kmy1cbk5htkzcBxlC3WIcy9ADB1lRrYwYunXdUxeHLI0FunsRrHZUecXFo0SWzkwHmnXdUxwHmnXdUxeT3nXdUxeTzkXFo0Sao90CBxwGBOZd2YiFMkvdJnMFM9swoOifoygcbnib2IIf2ilFMAIOayYUAW9k3SLF2lLgUFICB5LwoOgfolscUE+k3SLF2Oifoa9kZnidMWIcy9ADB1lNtf7koaLCbOlgUFJhTShkoOiforINUnQF29Vb2aVC29LcUILCJL7tMajDo8IkoOifor7tm0hgWP= \ No newline at end of file diff --git a/application/index/controller/LineDlgModevcomf.php b/application/index/controller/LineDlgModevcomf.php new file mode 100644 index 0000000..39791e0 --- /dev/null +++ b/application/index/controller/LineDlgModevcomf.php @@ -0,0 +1,52 @@ +assign('id',$id); + $this->assign('edate',$edate); + $this->assign('sdate',$sdate); + return $this->fetch('line_dlg_modevcomf'); + } + public function getjson() + { + $edate=date("Y-m-d"); + $sdate=date('Y-m-d',strtotime("$edate -1 month")); + if (empty($_GET['sid'])) return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate=date('Y-m-d',strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate=date('Y-m-d',strtotime($_GET['etime'])); + $edate=date('Y-m-d',strtotime("$edate 1 day")); + } + $b = Db::query("select d_time,modevcomf1,modevcomf2,modevcomf3 from data_dlg_h where EQMID='{$sid}' and d_time >'{$sdate}' and d_time<'{$edate}'"); + foreach($b as $k=>$v){ + foreach($v as $k1=>$v1 ){ + if($k1 != 'd_time'){ + $b[$k][$k1] = floatval($v1); + } + } + + } + $data = json_encode($b); + echo $data; + } +} + diff --git a/application/index/controller/LineDlgdong1Tmp.php b/application/index/controller/LineDlgdong1Tmp.php new file mode 100644 index 0000000..4bc1df1 --- /dev/null +++ b/application/index/controller/LineDlgdong1Tmp.php @@ -0,0 +1,52 @@ +assign('id',$id); + $this->assign('edate',$edate); + $this->assign('sdate',$sdate); + return $this->fetch('line_dlgdong1_tmp'); + } + public function getjson() + { + $edate=date("Y-m-d"); + $sdate=date('Y-m-d',strtotime("$edate -1 month")); + if (empty($_GET['sid'])) return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate=date('Y-m-d',strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate=date('Y-m-d',strtotime($_GET['etime'])); + $edate=date('Y-m-d',strtotime("$edate 1 day")); + } + $b = Db::query("select d_time,tmp1,hum1 from data_dlg_h where EQMID='{$sid}' and d_time >'{$sdate}' and d_time<'{$edate}'"); + foreach($b as $k=>$v){ + foreach($v as $k1=>$v1 ){ + if($k1 != 'd_time'){ + $b[$k][$k1] = floatval($v1); + } + } + + } + $data = json_encode($b); + echo $data; + } +} + diff --git a/application/index/controller/LineDlgdong2Tmp.php b/application/index/controller/LineDlgdong2Tmp.php new file mode 100644 index 0000000..3c69ced --- /dev/null +++ b/application/index/controller/LineDlgdong2Tmp.php @@ -0,0 +1,52 @@ +assign('id',$id); + $this->assign('edate',$edate); + $this->assign('sdate',$sdate); + return $this->fetch('line_dlgdong2_tmp'); + } + public function getjson() + { + $edate=date("Y-m-d"); + $sdate=date('Y-m-d',strtotime("$edate -1 month")); + if (empty($_GET['sid'])) return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate=date('Y-m-d',strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate=date('Y-m-d',strtotime($_GET['etime'])); + $edate=date('Y-m-d',strtotime("$edate 1 day")); + } + $b = Db::query("select d_time,tmp2,hum2 from data_dlg_h where EQMID='{$sid}' and d_time >'{$sdate}' and d_time<'{$edate}'"); + foreach($b as $k=>$v){ + foreach($v as $k1=>$v1 ){ + if($k1 != 'd_time'){ + $b[$k][$k1] = floatval($v1); + } + } + + } + $data = json_encode($b); + echo $data; + } +} + diff --git a/application/index/controller/LineDlgdong3Tmp.php b/application/index/controller/LineDlgdong3Tmp.php new file mode 100644 index 0000000..87ffcad --- /dev/null +++ b/application/index/controller/LineDlgdong3Tmp.php @@ -0,0 +1,52 @@ +assign('id',$id); + $this->assign('edate',$edate); + $this->assign('sdate',$sdate); + return $this->fetch('line_dlgdong3_tmp'); + } + public function getjson() + { + $edate=date("Y-m-d"); + $sdate=date('Y-m-d',strtotime("$edate -1 month")); + if (empty($_GET['sid'])) return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate=date('Y-m-d',strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate=date('Y-m-d',strtotime($_GET['etime'])); + $edate=date('Y-m-d',strtotime("$edate 1 day")); + } + $b = Db::query("select d_time,tmp3,hum3 from data_dlg_h where EQMID='{$sid}' and d_time >'{$sdate}' and d_time<'{$edate}'"); + foreach($b as $k=>$v){ + foreach($v as $k1=>$v1 ){ + if($k1 != 'd_time'){ + $b[$k][$k1] = floatval($v1); + } + } + + } + $data = json_encode($b); + echo $data; + } +} + diff --git a/application/index/controller/LineDlgdongAwater.php b/application/index/controller/LineDlgdongAwater.php new file mode 100644 index 0000000..dc136d8 --- /dev/null +++ b/application/index/controller/LineDlgdongAwater.php @@ -0,0 +1,52 @@ +assign('id',$id); + $this->assign('edate',$edate); + $this->assign('sdate',$sdate); + return $this->fetch('line_dlgdong_awater'); + } + public function getjson() + { + $edate=date("Y-m-d"); + $sdate=date('Y-m-d',strtotime("$edate -1 month")); + if (empty($_GET['sid'])) return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate=date('Y-m-d',strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate=date('Y-m-d',strtotime($_GET['etime'])); + $edate=date('Y-m-d',strtotime("$edate 1 day")); + } + $b = Db::query("select d_time, awater from data_dlg_h where EQMID='{$sid}' and d_time >'{$sdate}' and d_time<'{$edate}'"); + foreach($b as $k=>$v){ + foreach($v as $k1=>$v1 ){ + if($k1 != 'd_time'){ + $b[$k][$k1] = floatval($v1); + } + } + + } + $data = json_encode($b); + echo $data; + } +} + diff --git a/application/index/controller/LineDlgkg1Awater.php b/application/index/controller/LineDlgkg1Awater.php new file mode 100644 index 0000000..1afcf44 --- /dev/null +++ b/application/index/controller/LineDlgkg1Awater.php @@ -0,0 +1,52 @@ +assign('id',$id); + $this->assign('edate',$edate); + $this->assign('sdate',$sdate); + return $this->fetch('line_dlgkg1_awater'); + } + public function getjson() + { + $edate=date("Y-m-d"); + $sdate=date('Y-m-d',strtotime("$edate -1 month")); + if (empty($_GET['sid'])) return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate=date('Y-m-d',strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate=date('Y-m-d',strtotime($_GET['etime'])); + $edate=date('Y-m-d',strtotime("$edate 1 day")); + } + $b = Db::query("select d_time, awater from data_dlg_h where EQMID='{$sid}' and d_time >'{$sdate}' and d_time<'{$edate}'"); + foreach($b as $k=>$v){ + foreach($v as $k1=>$v1 ){ + if($k1 != 'd_time'){ + $b[$k][$k1] = floatval($v1); + } + } + + } + $data = json_encode($b); + echo $data; + } +} + diff --git a/application/index/controller/LineDlgkg1Tmp.php b/application/index/controller/LineDlgkg1Tmp.php new file mode 100644 index 0000000..b0be0c0 --- /dev/null +++ b/application/index/controller/LineDlgkg1Tmp.php @@ -0,0 +1,52 @@ +assign('id',$id); + $this->assign('edate',$edate); + $this->assign('sdate',$sdate); + return $this->fetch('line_dlgkg1_tmp'); + } + public function getjson() + { + $edate=date("Y-m-d"); + $sdate=date('Y-m-d',strtotime("$edate -1 month")); + if (empty($_GET['sid'])) return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate=date('Y-m-d',strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate=date('Y-m-d',strtotime($_GET['etime'])); + $edate=date('Y-m-d',strtotime("$edate 1 day")); + } + $b = Db::query("select d_time,tmp1,hum1 from data_dlg_h where EQMID='{$sid}' and d_time >'{$sdate}' and d_time<'{$edate}'"); + foreach($b as $k=>$v){ + foreach($v as $k1=>$v1 ){ + if($k1 != 'd_time'){ + $b[$k][$k1] = floatval($v1); + } + } + + } + $data = json_encode($b); + echo $data; + } +} + diff --git a/application/index/controller/LineDlgkg2Awater.php b/application/index/controller/LineDlgkg2Awater.php new file mode 100644 index 0000000..f67999f --- /dev/null +++ b/application/index/controller/LineDlgkg2Awater.php @@ -0,0 +1,52 @@ +assign('id',$id); + $this->assign('edate',$edate); + $this->assign('sdate',$sdate); + return $this->fetch('line_dlgkg2_awater'); + } + public function getjson() + { + $edate=date("Y-m-d"); + $sdate=date('Y-m-d',strtotime("$edate -1 month")); + if (empty($_GET['sid'])) return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate=date('Y-m-d',strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate=date('Y-m-d',strtotime($_GET['etime'])); + $edate=date('Y-m-d',strtotime("$edate 1 day")); + } + $b = Db::query("select d_time, awater from data_dlg_h where EQMID='{$sid}' and d_time >'{$sdate}' and d_time<'{$edate}'"); + foreach($b as $k=>$v){ + foreach($v as $k1=>$v1 ){ + if($k1 != 'd_time'){ + $b[$k][$k1] = floatval($v1); + } + } + + } + $data = json_encode($b); + echo $data; + } +} + diff --git a/application/index/controller/LineDlgkg2Tmp.php b/application/index/controller/LineDlgkg2Tmp.php new file mode 100644 index 0000000..ef94296 --- /dev/null +++ b/application/index/controller/LineDlgkg2Tmp.php @@ -0,0 +1,52 @@ +assign('id',$id); + $this->assign('edate',$edate); + $this->assign('sdate',$sdate); + return $this->fetch('line_dlgkg2_tmp'); + } + public function getjson() + { + $edate=date("Y-m-d"); + $sdate=date('Y-m-d',strtotime("$edate -1 month")); + if (empty($_GET['sid'])) return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate=date('Y-m-d',strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate=date('Y-m-d',strtotime($_GET['etime'])); + $edate=date('Y-m-d',strtotime("$edate 1 day")); + } + $b = Db::query("select d_time,tmp1,hum1 from data_dlg_h where EQMID='{$sid}' and d_time >'{$sdate}' and d_time<'{$edate}'"); + foreach($b as $k=>$v){ + foreach($v as $k1=>$v1 ){ + if($k1 != 'd_time'){ + $b[$k][$k1] = floatval($v1); + } + } + + } + $data = json_encode($b); + echo $data; + } +} + diff --git a/application/index/controller/LineEia.php b/application/index/controller/LineEia.php new file mode 100644 index 0000000..1efcf39 --- /dev/null +++ b/application/index/controller/LineEia.php @@ -0,0 +1,50 @@ +assign('id',$id); + $this->assign('edate',$edate); + $this->assign('sdate',$sdate); + return $this->fetch('line_eia'); + } + public function getjson() + { + $edate=date("Y-m-d"); + $sdate=date('Y-m-d',strtotime("$edate -1 month")); + if (empty($_GET['sid'])) return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate=date('Y-m-d',strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate=date('Y-m-d',strtotime($_GET['etime'])); + $edate=date('Y-m-d',strtotime("$edate 1 day")); + } + $b = Db::query("select d_time,d_pt_1,d_pt_2,d_pt_3,d_ct_1,d_ct_2,d_ct_3,d_pf_1,d_pf_2,d_pf_3,d_jx_1,d_jx_2,d_jx_3 from data_eia_h where EQMID='{$sid}' and d_time >'{$sdate}' and d_time<'{$edate}'"); + foreach($b as $k=>$v){ + foreach($v as $k1=>$v1 ){ + if($k1 != 'd_time'){ + $b[$k][$k1] = floatval($v1); + } + } + + } + $data = json_encode($b); + echo $data; + } +} diff --git a/application/index/controller/LineEiact.php b/application/index/controller/LineEiact.php new file mode 100644 index 0000000..df3f98a --- /dev/null +++ b/application/index/controller/LineEiact.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFDB5LcbiFC29VfukvdoxlFjShfbYlwuOPDB5qbrYvdmOZd2xScbw7tmazcUn0DolVD1xrCjShC2xiF3HITolVcAapCBY0woa4foaVcuHIW29VfukvdoxlFIp7tmn1CMxpCZnMfB5jfolvdJnpdMOlGtIptmShDBCIhoasFuO5htOgO0aABZfpctffhULIcollhtgMl6eMlCjmMPTmvkdlj7FmhTShkolLwe0Iky9uOaOdk2lLk107tJOlcoy0cT1LCbOlhtkcRB0sctwpKXPLF2OifoA9coy0cUImBU1sRBWmRuY0FmOvfolscUIJkoaLCbOlwt0xwo1vdmOPwJLpKXppcJEPwBasFuO5htOgO0aABZfzfolscUffhULIGXPLF2OifoA9ky9uOaOdk3Y0DB1lk107tm0hDBCIhtyldbn0GUILb0fyaySmcbOpdBAmbULpwuShkoaLCbOlNbY1CmY0FJILb0fyaySmcbOpdBAmbUXXRerXhTShgWPLfoipFZ0+CbYzDBfVhtfpctFSkolLhTShkuOPDbHsNMyzF2lmdJImcBOifoAmRtOlcoy0cUL7tJO0DolzRT5iF3Ypc24Pk3YLCbOlkZXLF2OifoApKXpZcbO1FM4IkuOPDbHsNMclfoYPhtflDByjftFpKXp9tmn1CMxpCZnMfB5jfolvdJnmcbOQF29VhtLhGXPLcBOifoA9coy0cUIJBU1sRBWJhTShkuYLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPwJOlcoy0cUEsHUnsd250DtwphTShDBCIhoasFuO5htOgO0aABZfzDBWmbULpwuklfuaZdjShkuYpctE9wtOgO0aABZfzDBWmbTShDBCIhtyldbn0GUILb0fyaySmF3OpdBAmbULpwuShkuYLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPky9uOaOdk3Y0DB1lk10phTShgWppcJEPwBasFuO5htOgO0aABZflfolscUffhULIGXPLcBOifoA9coy0cUImBU1sRBWmRuY0FmOvfolscUILb0fyaySmcbOpdBAmbULpKXPLcBOifoA9coy0cUImBU1sRBWmRuY0FmOvfolscUIJkoaLCbOlwerIcoy5wJLpKXp9tJOJwe0IOow6Kmy1cbk5htkzcBxlC3WIcy90DB1lRoOgC3OgHUnMFM9swoOifoygcBlib2IIf2ilFMAIOayYUAW9k3SLF2lLgUFICB5LwoOgfolscUE+k3SLF2Oifoa9kZnidMWIcy90DB1lNtf7koaLCbOlgUFJhTShcM9ZcByjDtILCJniFZELDz0+kuCpGXpMd3klCBYPhtO2woyzwtOqHT0+kuCxwtl7tMlMhtOqHUEiNUEmcy90DB1lkZl7tJOJBZOqbaSLDzyfwe0IcMxvCbO2CBXPkuCxhTShgWp9tm0hkoOiforINUnQF29Vb2aVC29LcUILCJL7tMajDo8IkoOifor7tm0hgWP= \ No newline at end of file diff --git a/application/index/controller/LineEif.php b/application/index/controller/LineEif.php new file mode 100644 index 0000000..df866d5 --- /dev/null +++ b/application/index/controller/LineEif.php @@ -0,0 +1,50 @@ +assign('id',$id); + $this->assign('edate',$edate); + $this->assign('sdate',$sdate); + return $this->fetch('line_eif'); + } + public function getjson() + { + $edate=date("Y-m-d"); + $sdate=date('Y-m-d',strtotime("$edate -1 month")); + if (empty($_GET['sid'])) return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate=date('Y-m-d',strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate=date('Y-m-d',strtotime($_GET['etime'])); + $edate=date('Y-m-d',strtotime("$edate 1 day")); + } + $b = Db::query("select * from data_eaif_h where EQMID='{$sid}' and capturetime >'{$sdate}' and capturetime<'{$edate}'"); + foreach($b as $k=>$v){ + foreach($v as $k1=>$v1 ){ + if($k1 != 'capturetime'){ + $b[$k][$k1] = floatval($v1); + } + } + + } + $data = json_encode($b); + echo $data; + } +} diff --git a/application/index/controller/LineEpa.php b/application/index/controller/LineEpa.php new file mode 100644 index 0000000..ffef9ba --- /dev/null +++ b/application/index/controller/LineEpa.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFDB5LcbiFC29VfukvdoxlFjShfbYlwuOPDB5qbrYvdmOZd2xScbw7tmazcUn0DolVD1xrCjShC2xiF3HITolVcAaXCUnlGuOldMOzwrYvdmOZd2xScbwhGXpXfBkSDBHIcmaVC3Opd24IDB5LcbIPhWp7tMlMwtildbn0GUILb0fyaySmDBWmbULpwoOpcUIm5pGI5pBw55Qr57ZB5C+3kZL7tJOpctE9wtOgO0aABZfpctffKXPLcBOifoA9coy0cUIJBU1sRBWJhTShkuYLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPwJOlcoy0cUEsHUnsd250DtwphTShDBCIhtyldbn0GUILb0fyaySmF3OpdBAmbULpwuShkuYLCbOlNUOgO0aABZfzfolscUffKXp9tMlMwtIicB1XfuLPky9uOaOdk2a0DB1lk10phUn7tJOlcoy0cT1zfBkzfuwPky9uOaOdk2a0DB1lk10SHtXxHtL7tm0hkuOPDbHsNMyzF2lmdJImDBWmRtOpctL7tJO0DolzRT5iF3Ypc24Pk2aLCbOlkZXLcBOifoApKXPLfoipFZ0+CbYzDBfVhtfzcoy0cUFSkuYLCbOlhTShFMa0fbkVwtO0DolzRT5McbOjDtImdolVca9lFormhTShgWpXfBkSDBHIcmaVC3Opd24Ic2a0DmYvdJIptmShkoaLCbOlNBOifoAPwlLsdU1LwJL7tJOzcoy0cT1LCbOlhtfcRB0sctFSF3OZfo90DB1lhtwLcBOifoAIRTrIdB9VfoIJhUL7tMlMwtildbn0GUILb0fyaySmF2lLk10phUnZcbO1FM47tJOzDBWINUELb0fyaySmF2lLk107tMlMwtIicB1XfuLPky9uOaOdk3Y0DB1lk10phUn7tJOzcoy0cT1LCbOlhtfcRB0sctFSF3OZfo90DB1lhtOgO0aABZfzfolscUffhUL7tm0hDBCIhtyldbn0GUILb0fyaySmcbOpdBAmbULpwuShkoaLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPky9uOaOdk2a0DB1lk10phTShkoaLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPwJOlcoy0cUExwoOiGUwphTShgWPLCJE9wrOJKjpxfBaZGUIJF2aScBY0woOgfolscUxeUeOXFo0SWzkwYunXdUxeHLI2FunsRrHZUekXFo0SUekXFo0SW09XFo0SW08ZFunsRyOvfoySUulLFM9jCbkJd24IcmkvdUnLCbOib2aXCa9PwufPcbklwraOTAlrNUf7kuYpcu0mwoyVctnLb3OpdBAINJf7kuYLCbOlgUFICB5LwoOgfolscTXmGZOlcoy0cb0mwJL7tMcvFMaiC2IPkowICbHIkoS9NJO2hbShcM9ZcByjDtILfJniFZELDzr9NJO2HUEpGXppcJILDzrIwT0Ik2OgfolscUFpGXPLClSLD11dkoSxbUE9wocSd2y0fMyShtO2HUL7tm0hgWp9tJOLCbOiwe0IDmYvdl9ldMYvcoAPkowpKXplC2ivwtOLCbOiKXp9tm0h \ No newline at end of file diff --git a/application/index/controller/LineEpa1.php b/application/index/controller/LineEpa1.php new file mode 100644 index 0000000..ef5153f --- /dev/null +++ b/application/index/controller/LineEpa1.php @@ -0,0 +1,53 @@ +assign('id', $id); + $this->assign('edate', $edate); + $this->assign('sdate', $sdate); + return $this->fetch('line_epa1'); + } + + public function getjson() { + $edate = date("Y-m-d"); + $sdate = date('Y-m-d', strtotime("$edate -1 month")); + if (empty($_GET['sid'])) + return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate = date('Y-m-d', strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate = date('Y-m-d', strtotime($_GET['etime'])); + $edate = date('Y-m-d', strtotime("$edate 1 day")); + } + $b = Db::query("select d_time,CH4ppm,C2H4ppm,C2H6ppm,C2H2ppm,H2ppm,COppm,CO2ppm,N2ppm,O2ppm,Mstppm,CmbuGas,TotalHydrocarbon from data_epa_h where EQMID='{$sid}' and d_time >'{$sdate}' and d_time<'{$edate}'"); + foreach ($b as $k => $v) { + foreach ($v as $k1 => $v1) { + if ($k1 != 'd_time') { + $b[$k][$k1] = floatval($v1); + } + } + } + $data = json_encode($b); + echo $data; + } + +} diff --git a/application/index/controller/LineEpa2.php b/application/index/controller/LineEpa2.php new file mode 100644 index 0000000..13fb922 --- /dev/null +++ b/application/index/controller/LineEpa2.php @@ -0,0 +1,53 @@ +assign('id', $id); + $this->assign('edate', $edate); + $this->assign('sdate', $sdate); + return $this->fetch('line_epa2'); + } + + public function getjson() { + $edate = date("Y-m-d"); + $sdate = date('Y-m-d', strtotime("$edate -1 month")); + if (empty($_GET['sid'])) + return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate = date('Y-m-d', strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate = date('Y-m-d', strtotime($_GET['etime'])); + $edate = date('Y-m-d', strtotime("$edate 1 day")); + } + $b = Db::query("select d_time,cmbugas,tmp,dew,mstppm from data_epa_h where eqmid='{$sid}' and d_time >'{$sdate}' and d_time<'{$edate}'"); + foreach ($b as $k => $v) { + foreach ($v as $k1 => $v1) { + if ($k1 != 'd_time') { + $b[$k][$k1] = floatval($v1); + } + } + } + $data = json_encode($b); + echo $data; + } + +} diff --git a/application/index/controller/LineEtp.php b/application/index/controller/LineEtp.php new file mode 100644 index 0000000..4d934bc --- /dev/null +++ b/application/index/controller/LineEtp.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFDB5LcbiFC29VfukvdoxlFjShfbYlwuOPDB5qbrYvdmOZd2xScbw7tmazcUn0DolVD1xrCjShC2xiF3HITolVcAa0FtnlGuOldMOzwrYvdmOZd2xScbwhGXpXfBkSDBHIcmaVC3Opd24IDB5LcbIPhWp7tMlMwtildbn0GUILb0fyaySmDBWmbULpwoOpcUIm5pGI5pBw55Qr57ZB5C+3kZL7tJOpctE9wtOgO0aABZfpctffKXPLcBOifoA9coy0cUIJBU1sRBWJhTShkuYLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPwJOlcoy0cUEsHUnsd250DtwphTShDBCIhtyldbn0GUILb0fyaySmF3OpdBAmbULpwuShkuYLCbOlNUOgO0aABZfzfolscUffKXp9tMlMwtIicB1XfuLPky9uOaOdk2a0DB1lk10phUn7tJOlcoy0cT1zfBkzfuwPky9uOaOdk2a0DB1lk10SHtXxHtL7tm0hkuOPDbHsNMyzF2lmdJImDBWmRtOpctL7tJO0DolzRT5iF3Ypc24Pk2aLCbOlkZXLcBOifoApKXPLfoipFZ0+CbYzDBfVhtfzcoy0cUFSkuYLCbOlhTShFMa0fbkVwtO0DolzRT5McbOjDtImdolVca9lfuEmhTShgWpXfBkSDBHIcmaVC3Opd24Ic2a0DmYvdJIptmShkoaLCbOlNBOifoAPwlLsdU1LwJL7tJOzcoy0cT1LCbOlhtfcRB0sctFSF3OZfo90DB1lhtwLcBOifoAIRTrIdB9VfoIJhUL7tMlMwtildbn0GUILb0fyaySmF2lLk10phUnZcbO1FM47tJOzDBWINUELb0fyaySmF2lLk107tMlMwtIicB1XfuLPky9uOaOdk3Y0DB1lk10phUn7tJOzcoy0cT1LCbOlhtfcRB0sctFSF3OZfo90DB1lhtOgO0aABZfzfolscUffhUL7tm0hDBCIhtyldbn0GUILb0fyaySmcbOpdBAmbULpwuShkoaLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPky9uOaOdk2a0DB1lk10phTShkoaLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPwJOlcoy0cUExwoOiGUwphTShgWPLCJE9wrOJKjpxfBaZGUIJF2aScBY0woOgfolscUx0HUx0HJx0HZx0Ytx0YUx0YJx0YZx0Ktx0KUx0HTESferxRuWxHJnMFM9swoOifoygcbOXb2IIf2ilFMAIOayYUAW9k3SLF2lLgUFICB5LwoOgfolscUE+k3SLF2Oifoa9kZnidMWIcy90DB1lNtf7koaLCbOlgUFJhTShcM9ZcByjDtILCJniFZELDz0+kuCpGXpMd3klCBYPhtO2woyzwtOqHT0+kuCxwtl7tMlMhtOqHUEiNUEmcy90DB1lkZl7tJOJBZOqbaSLDzyfwe0IcMxvCbO2CBXPkuCxhTShgWp9tm0hkoOiforINUnQF29Vb2aVC29LcUILCJL7tMajDo8IkoOifor7tm0hgWP= \ No newline at end of file diff --git a/application/index/controller/LineEtpGxcw.php b/application/index/controller/LineEtpGxcw.php new file mode 100644 index 0000000..a720431 --- /dev/null +++ b/application/index/controller/LineEtpGxcw.php @@ -0,0 +1,53 @@ +assign('id', $id); + $this->assign('edate', $edate); + $this->assign('sdate', $sdate); + return $this->fetch('line_etp_gxcw'); + } + + public function getjson() { + $edate = date("Y-m-d"); + $sdate = date('Y-m-d', strtotime("$edate -1 month")); + if (empty($_GET['sid'])) + return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate = date('Y-m-d', strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate = date('Y-m-d', strtotime($_GET['etime'])); + $edate = date('Y-m-d', strtotime("$edate 1 day")); + } + $b = Db::query("select d_time,t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16 from data_etp_h where EQMID='{$sid}' and d_time >'{$sdate}' and d_time<'{$edate}'"); + foreach ($b as $k => $v) { + foreach ($v as $k1 => $v1) { + if ($k1 != 'd_time') { + $b[$k][$k1] = floatval($v1); + } + } + } + $data = json_encode($b); + echo $data; + } + +} diff --git a/application/index/controller/LineEtpRzcw.php b/application/index/controller/LineEtpRzcw.php new file mode 100644 index 0000000..88638ea --- /dev/null +++ b/application/index/controller/LineEtpRzcw.php @@ -0,0 +1,53 @@ +assign('id', $id); + $this->assign('edate', $edate); + $this->assign('sdate', $sdate); + return $this->fetch('line_etp_rzcw'); + } + + public function getjson() { + $edate = date("Y-m-d"); + $sdate = date('Y-m-d', strtotime("$edate -1 month")); + if (empty($_GET['sid'])) + return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate = date('Y-m-d', strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate = date('Y-m-d', strtotime($_GET['etime'])); + $edate = date('Y-m-d', strtotime("$edate 1 day")); + } + $b = Db::query("select d_time,t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16 from data_etp_h where EQMID='{$sid}' and d_time >'{$sdate}' and d_time<'{$edate}'"); + foreach ($b as $k => $v) { + foreach ($v as $k1 => $v1) { + if ($k1 != 'd_time') { + $b[$k][$k1] = floatval($v1); + } + } + } + $data = json_encode($b); + echo $data; + } + +} diff --git a/application/index/controller/LineJdw.php b/application/index/controller/LineJdw.php new file mode 100644 index 0000000..36d9a9b --- /dev/null +++ b/application/index/controller/LineJdw.php @@ -0,0 +1,52 @@ +assign('id',$id); + $this->assign('edate',$edate); + $this->assign('sdate',$sdate); + return $this->fetch('line_jdw'); + } + public function getjson() + { + $edate=date("Y-m-d"); + $sdate=date('Y-m-d',strtotime("$edate -1 month")); + if (empty($_GET['sid'])) return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate=date('Y-m-d',strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate=date('Y-m-d',strtotime($_GET['etime'])); + $edate=date('Y-m-d',strtotime("$edate 1 day")); + } + $b = Db::query("select d_time,resistance from data_jdw_h where EQMID='{$sid}' and d_time >'{$sdate}' and d_time<'{$edate}'"); + foreach($b as $k=>$v){ + foreach($v as $k1=>$v1 ){ + if($k1 != 'd_time'){ + $b[$k][$k1] = floatval($v1); + } + } + + } + $data = json_encode($b); + echo $data; + } +} + diff --git a/application/index/controller/LineMic.php b/application/index/controller/LineMic.php new file mode 100644 index 0000000..e735561 --- /dev/null +++ b/application/index/controller/LineMic.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFDB5LcbiFC29VfukvdoxlFjShfbYlwuOPDB5qbrYvdmOZd2xScbw7tmazcUn0DolVD1xrCjShC2xiF3HITolVcA1pCZnlGuOldMOzwrYvdmOZd2xScbwhGXpXfBkSDBHIcmaVC3Opd24IDB5LcbIPhWp7tMlMwtildbn0GUILb0fyaySmDBWmbULpwoOpcUIm5pGI5pBw55Qr57ZB5C+3kZL7tJOpctE9wtOgO0aABZfpctffKXPLcBOifoA9coy0cUIJBU1sRBWJhTShkuYLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPwJOlcoy0cUEsHUnsd250DtwphTShDBCIhtyldbn0GUILb0fyaySmF3OpdBAmbULpwuShkuYLCbOlNUOgO0aABZfzfolscUffKXp9tMlMwtIicB1XfuLPky9uOaOdk2a0DB1lk10phUn7tJOlcoy0cT1zfBkzfuwPky9uOaOdk2a0DB1lk10SHtXxHtL7tm0hkuOPDbHsNMyzF2lmdJImDBWmRtOpctL7tJO0DolzRT5iF3Ypc24Pk2aLCbOlkZXLcBOifoApKXPLfoipFZ0+CbYzDBfVhtfzcoy0cUFSkuYLCbOlhTShFMa0fbkVwtO0DolzRT5McbOjDtImdolVca9sDBHmhTShgWpXfBkSDBHIcmaVC3Opd24Ic2a0DmYvdJIptmShkoaLCbOlNBOifoAPwlLsdU1LwJL7tJOzcoy0cT1LCbOlhtfcRB0sctFSF3OZfo90DB1lhtwLcBOifoAIRTrIdB9VfoIJhUL7tMlMwtildbn0GUILb0fyaySmF2lLk10phUnZcbO1FM47tJOzDBWINUELb0fyaySmF2lLk107tMlMwtIicB1XfuLPky9uOaOdk3Y0DB1lk10phUn7tJOzcoy0cT1LCbOlhtfcRB0sctFSF3OZfo90DB1lhtOgO0aABZfzfolscUffhUL7tm0hDBCIhtyldbn0GUILb0fyaySmcbOpdBAmbULpwuShkoaLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPky9uOaOdk2a0DB1lk10phTShkoaLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPwJOlcoy0cUExwoOiGUwphTShgWPLCJE9wrOJKjpxfBaZGUIJF2aScBY0woOgfolscUxldmc0dbEScB52DuasRufLc3azfuYXctxldmcXFMazRufLcolZRukVcMxSwocZd20Icoy0Ca9sDBYZd2YSDB1ifoagDtn3DoaZcUnyAA1kOe0mGZOzDBO9kZnidMWIcy90DB1lwe4mGZOzcoy0cb0mwoyVctnLb3OpdBA8k3SLcBOifoa9kZwpKXpMd3klCBYPhtOJwoyzwtOqNT4LfJl7tMcvFMaiC2IPkuCICbHIkoSxNT4LfjrIhbShDBCPkoSxwtr9wtfLb3OpdBAmhbShkokdkosfBZOqHa0INUnMdo9ifucidtILfjrpKXp9tm0hgWPLcoy0CUE9wopzd25gcB5jd2OlhtOJhTShcBYPdZELcoy0CTShgWp9tI== \ No newline at end of file diff --git a/application/index/controller/LineMoa.php b/application/index/controller/LineMoa.php new file mode 100644 index 0000000..00b677e --- /dev/null +++ b/application/index/controller/LineMoa.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFDB5LcbiFC29VfukvdoxlFjShfbYlwuOPDB5qbrYvdmOZd2xScbw7tmazcUn0DolVD1xrCjShC2xiF3HITolVcA1vCUnlGuOldMOzwrYvdmOZd2xScbwhGXpXfBkSDBHIcmaVC3Opd24IDB5LcbIPhWp7tMlMwtildbn0GUILb0fyaySmDBWmbULpwoOpcUIm5pGI5pBw55Qr57ZB5C+3kZL7tJOpctE9wtOgO0aABZfpctffKXPLcBOifoA9coy0cUIJBU1sRBWJhTShkuYLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPwJOlcoy0cUEsHUnsd250DtwphTShDBCIhtyldbn0GUILb0fyaySmF3OpdBAmbULpwuShkuYLCbOlNUOgO0aABZfzfolscUffKXp9tMlMwtIicB1XfuLPky9uOaOdk2a0DB1lk10phUn7tJOlcoy0cT1zfBkzfuwPky9uOaOdk2a0DB1lk10SHtXxHtL7tm0hkuOPDbHsNMyzF2lmdJImDBWmRtOpctL7tJO0DolzRT5iF3Ypc24Pk2aLCbOlkZXLcBOifoApKXPLfoipFZ0+CbYzDBfVhtfzcoy0cUFSkuYLCbOlhTShFMa0fbkVwtO0DolzRT5McbOjDtImdolVca9sd2rmhTShgWpXfBkSDBHIcmaVC3Opd24Ic2a0DmYvdJIptmShkoaLCbOlNBOifoAPwlLsdU1LwJL7tJOzcoy0cT1LCbOlhtfcRB0sctFSF3OZfo90DB1lhtwLcBOifoAIRTrIdB9VfoIJhUL7tMlMwtildbn0GUILb0fyaySmF2lLk10phUnZcbO1FM47tJOzDBWINUELb0fyaySmF2lLk107tMlMwtIicB1XfuLPky9uOaOdk3Y0DB1lk10phUn7tJOzcoy0cT1LCbOlhtfcRB0sctFSF3OZfo90DB1lhtOgO0aABZfzfolscUffhUL7tm0hDBCIhtyldbn0GUILb0fyaySmcbOpdBAmbULpwuShkoaLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPky9uOaOdk2a0DB1lk10phTShkoaLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPwJOlcoy0cUExwoOiGUwphTShgWPLCJE9wrOJKjpxfBaZGUIJF2aScBY0woOgfolscUxXferSdoHxRukjHUxXfewSdoHZRukjHJxXfeHSdoHzRukjHZnMFM9swoOifoygdB9ib2IIf2ilFMAIOayYUAW9k3SLF2lLgUFICB5LwoOgfolscUE+k3SLF2Oifoa9kZnidMWIcy90DB1lNtf7koaLCbOlgUFJhTShcM9ZcByjDtILCJniFZELDz0+kuCpGXpMd3klCBYPhtO2woyzwtOqHT0+kuCxwtl7tMlMhtOqHUEiNUEmcy90DB1lkZl7tJOJBZOqbaSLDzyfwe0IcMxvCbO2CBXPkuCxhTShgWp9tm0hkoOiforINUnQF29Vb2aVC29LcUILCJL7tMajDo8IkoOifor7tm0hgWP= \ No newline at end of file diff --git a/application/index/controller/LineOtp.php b/application/index/controller/LineOtp.php new file mode 100644 index 0000000..64911ed --- /dev/null +++ b/application/index/controller/LineOtp.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFDB5LcbiFC29VfukvdoxlFjShfbYlwuOPDB5qbrYvdmOZd2xScbw7tmazcUn0DolVD1xrCjShC2xiF3HITolVcA90FtnlGuOldMOzwrYvdmOZd2xScbwhGXpXfBkSDBHIcmaVC3Opd24IDB5LcbIPhWp7tMlMwtildbn0GUILb0fyaySmDBWmbULpwoOpcUIm5pGI5pBw55Qr57ZB5C+3kZL7tJOpctE9wtOgO0aABZfpctffKXPLcBOifoA9coy0cUIJBU1sRBWJhTShkuYLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPwJOlcoy0cUEsHUnsd250DtwphTShDBCIhtyldbn0GUILb0fyaySmF3OpdBAmbULpwuShkuYLCbOlNUOgO0aABZfzfolscUffKXp9tMlMwtIicB1XfuLPky9uOaOdk2a0DB1lk10phUn7tJOlcoy0cT1zfBkzfuwPky9uOaOdk2a0DB1lk10SHtXxHtL7tm0hkuOPDbHsNMyzF2lmdJImDBWmRtOpctL7tJO0DolzRT5iF3Ypc24Pk2aLCbOlkZXLcBOifoApKXPLfoipFZ0+CbYzDBfVhtfzcoy0cUFSkuYLCbOlhTShFMa0fbkVwtO0DolzRT5McbOjDtImdolVca9vfuEmhTShgWpXfBkSDBHIcmaVC3Opd24Ic2a0DmYvdJIptmShkoaLCbOlNBOifoAPwlLsdU1LwJL7tJOzcoy0cT1LCbOlhtfcRB0sctFSF3OZfo90DB1lhtwLcBOifoAIRTrIdB9VfoIJhUL7tMlMwtildbn0GUILb0fyaySmF2lLk10phUnZcbO1FM47tJOzDBWINUELb0fyaySmF2lLk107tMlMwtIicB1XfuLPky9uOaOdk3Y0DB1lk10phUn7tJOzcoy0cT1LCbOlhtfcRB0sctFSF3OZfo90DB1lhtOgO0aABZfzfolscUffhUL7tm0hDBCIhtyldbn0GUILb0fyaySmcbOpdBAmbULpwuShkoaLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPky9uOaOdk2a0DB1lk10phTShkoaLCbOlNBOifoAPk1LsdU1LkZxzfuk0d3OpdBAPwJOlcoy0cUExwoOiGUwphTShgWPLCJE9wrOJKjpxfBaZGUIJF2aScBY0woOgfolscUxvDBx0cB1XcbkifuaZcUxvDBxXFMazFZnMFM9swoOifoygd3OXb2IIf2ilFMAIOayYUAW9k3SLF2lLgUFICB5LwoOgfolscUE+k3SLF2Oifoa9kZnidMWIcy90DB1lNtf7koaLCbOlgUFJhTShcM9ZcByjDtILCJniFZELDz0+kuCpGXpMd3klCBYPhtO2woyzwtOqHT0+kuCxwtl7tMlMhtOqHUEiNUEmcy90DB1lkZl7tJOJBZOqbaSLDzyfwe0IcMxvCbO2CBXPkuCxhTShgWp9tm0hkoOiforINUnQF29Vb2aVC29LcUILCJL7tMajDo8IkoOifor7tm0hgWP= \ No newline at end of file diff --git a/application/index/controller/LinePd-bak.php b/application/index/controller/LinePd-bak.php new file mode 100644 index 0000000..8069d4c --- /dev/null +++ b/application/index/controller/LinePd-bak.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFDB5LcbiFC29VfukvdoxlFjShfbYlwuOPDB5qbrYvdmOZd2xScbw7tmazcUn0DolVD1xrCjShC2xiF3HITolVcanLwoa4foaVcuHIW29VfukvdoxlFIp7tmn1CMxpCZnMfB5jfolvdJnpdMOlGtIptmShDBCIhoasFuO5htOgO0aABZfpctffhULIcollhtgMl6eMlCjmMPTmvkdlj7FmhTShkolLwe0Iky9uOaOdk2lLk107tJOlcoy0cT1LCbOlhtkcRB0sctwpKXPLF2OifoA9coy0cUImBU1sRBWmRuY0FmOvfolscUIJkoaLCbOlwt0xwo1vdmOPwJLpKXppcJEPwBasFuO5htOgO0aABZfzfolscUffhULIGXPLF2OifoA9ky9uOaOdk3Y0DB1lk107tm0hDBCIhtyldbn0GUILb0fyaySmcbOpdBAmbULpwuShkoaLCbOlNbY1CmY0FJILb0fyaySmcbOpdBAmbUXXRerXhTShgWPLfoipFZ0+CbYzDBfVhtfpctFSkolLhTShkuOPDbHsNMyzF2lmdJImcBOifoAmRtOlcoy0cUL7tJO0DolzRT5iF3Ypc24Pk3YLCbOlkZXLF2OifoApKXpZcbO1FM4IkuOPDbHsNMclfoYPhtfSDB5lb3nLkZL7tm0hFuaJdoljwoc1dMY0DB9Vwoflfopzd24PhWp7tJOlcoy0cT1LCbOlhtkcRB0sctwpKXPLF2OifoA9coy0cUImBU1sRBWmRuY0FmOvfolscUIJkoaLCbOlwt0xwo1vdmOPwJLpKXppcJEPcB1XfuLPky9uOaOdk3YpctffhULIFMa0fbkVKXPLF2lLwe0Iky9uOaOdk3YpctffKXppcJEPwBasFuO5htOgO0aABZfzfolscUffhULIGXPLF2OifoA9coy0cUImBU1sRBWmRuY0FmOvfolscUILb0fyaySmF3OpdBAmbULpKXp9tMlMwtIicB1XfuLPky9uOaOdk2a0DB1lk10phUn7tJOlcoy0cT1LCbOlhtfcRB0sctFSF3OZfo90DB1lhtOgO0aABZflfolscUffhUL7tJOlcoy0cT1LCbOlhtfcRB0sctFSF3OZfo90DB1lhtwLcBOifoAIHUnLCbLJhUL7tm0hkowINUnrCjP6FbalFmLPwmYldoajftnLb3OpdBASCBY1FoyLF2YPRoyXFunicuYjDtxVFbHSfBiMFoyLF2YPRunPCbYlwocZd20Icoy0Ca9Xcy9PwufPcbklwraOTAlrNUf7kuYpcu0mwoyVctnLb3OpdBAINJf7kuYLCbOlgUFICB5LwoOgfolscTXmGZOlcoy0cb0mwJL7tMcvFMaiC2IPkowICbHIkoS9NJO2hbShcM9ZcByjDtILfJniFZELDzr9NJO2HUEpGXppcJILDzrIwT0Ik2OgfolscUFpGXPLClSLD11dkoSxbUE9wocSd2y0fMyShtO2HUL7tm0hgWp9tJOLCbOiwe0IDmYvdl9ldMYvcoAPkowpKXplC2ivwtOLCbOiKXp9tm0h \ No newline at end of file diff --git a/application/index/controller/LinePd.php b/application/index/controller/LinePd.php new file mode 100644 index 0000000..fd0b9af --- /dev/null +++ b/application/index/controller/LinePd.php @@ -0,0 +1,48 @@ +assign('id',$id); + $this->assign('edate',$edate); + $this->assign('sdate',$sdate); + return $this->fetch('line_pd'); + } + public function getjson() { + $edate=date("Y-m-d"); + $sdate=date('Y-m-d',strtotime("$edate -1 month")); + if (empty($_GET['sid'])) return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate=date('Y-m-d',strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate=date('Y-m-d',strtotime($_GET['etime'])); + $edate=date('Y-m-d',strtotime("$edate 1 day")); + } + $b = Db::query("select d_time,padschalm,apppadsch,padschtype,waveform,phase,plsnum from data_pd_h where EQMID='{$sid}' and d_time >'{$sdate}' and d_time<'{$edate}'"); + foreach($b as $k=>$v) { + foreach($v as $k1=>$v1 ) { + if($k1 != 'd_time') { + $b[$k][$k1] = floatval($v1); + } + } + } + $data = json_encode($b); + echo $data; + } +} + diff --git a/application/index/controller/LineScur.php b/application/index/controller/LineScur.php new file mode 100644 index 0000000..3747f2c --- /dev/null +++ b/application/index/controller/LineScur.php @@ -0,0 +1,52 @@ +assign('id',$id); + $this->assign('edate',$edate); + $this->assign('sdate',$sdate); + return $this->fetch('line_scur'); + } + public function getjson() + { + $edate=date("Y-m-d"); + $sdate=date('Y-m-d',strtotime("$edate -1 month")); + if (empty($_GET['sid'])) return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) { + $sdate=date('Y-m-d',strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) { + $edate=date('Y-m-d',strtotime($_GET['etime'])); + $edate=date('Y-m-d',strtotime("$edate 1 day")); + } + $b = Db::query("select d_time,alarm_level,current_val from data_scur_h where EQMID='{$sid}' and d_time >'{$sdate}' and d_time<'{$edate}'"); + foreach($b as $k=>$v){ + foreach($v as $k1=>$v1 ){ + if($k1 != 'd_time'){ + $b[$k][$k1] = floatval($v1); + } + } + + } + $data = json_encode($b); + echo $data; + } +} + diff --git a/application/index/controller/LineSf6.php b/application/index/controller/LineSf6.php new file mode 100644 index 0000000..13b18b5 --- /dev/null +++ b/application/index/controller/LineSf6.php @@ -0,0 +1,3 @@ + +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 \ No newline at end of file diff --git a/application/index/controller/LineSf6env.php b/application/index/controller/LineSf6env.php new file mode 100644 index 0000000..f58961a --- /dev/null +++ b/application/index/controller/LineSf6env.php @@ -0,0 +1,57 @@ +assign('id',$id); + $this->assign('edate',$edate); + $this->assign('sdate',$sdate); + return $this->fetch('line_sf6env'); + } + public function getjson() + { + $edate=date("Y-m-d"); + $sdate=date('Y-m-d',strtotime("$edate -1 month")); + if (empty($_GET['sid'])) return; + $sid = $_GET['sid']; + if (!empty($_GET['stime'])) + { + $sdate=date('Y-m-d',strtotime($_GET['stime'])); + } + if (!empty($_GET['etime'])) + { + $edate=date('Y-m-d',strtotime($_GET['etime'])); + $edate=date('Y-m-d',strtotime("$edate 1 day")); + } + //echo "EQMOD=" + '{$sid}'; + $b = Db::query("select d_time,gas1,yq1,md1,pm1,gas2,yq2,md2,pm2,gas3,yq3,md3,pm3 from data_sf6env_h where EQMID='{$sid}' and d_time >'{$sdate} ' and d_time<'{$edate} '"); +foreach($b as $k=>$v) +{ +foreach($v as $k1=>$v1 ) +{ + if($k1 != 'd_time') + { + $b[$k][$k1] = floatval($v1); + } +} +} +$data = json_encode($b); +echo $data; +} +} +?> \ No newline at end of file diff --git a/application/index/controller/Login.php b/application/index/controller/Login.php new file mode 100644 index 0000000..fd2b358 --- /dev/null +++ b/application/index/controller/Login.php @@ -0,0 +1,78 @@ +isget()){ + $this->check(input('code')); + $admin=new Admin(); + $num=$admin->login(input('get.')); + if($num==1){ + $this->error('用户不存在!'); + } + if($num==2){ + $this->redirect('/index.php/index/tree.html'); + } + if($num==3){ + $this->error('密码错误!'); + } + if($num==4){ + $this->redirect('/index.php/admin/bdz/lst.html'); + } + if($num==5){ + $this->redirect('/index.php/admin/admin/lst.html'); + } + return; + } +// public function index() +// { +// if(request()->isPost()){ +// $this->check(input('code')); +// $admin=new Admin(); +// $num=$admin->login(input('post.')); +// if($num==1){ +// $this->error('用户不存在!'); +// } +// if($num==2){ +// $this->success('success!',url('/index/tree')); +// } +// if($num==3){ +// $this->error('密码错误!'); +// } +// return; +// } + + + $mc = Db::table('sys_rg')->where('unique', 1)->find(); + $key='92A60665B64D4CD39FD764763886B4C7'; + $cacweb = Sha1($mc['mc'].'xinyi'.$key); + //echo ($cacweb); + if($cacweb != $mc['ac2']){ + Db::table('sys_rg')->where('unique', 1)->update(['ck2' => 0]); + }else{ + Db::table('sys_rg')->where('unique', 1)->update(['ck2' => 1]); + } + if($mc['ck1']==1&& $mc['ck2']==1&&$mc['ck3']==1&&$mc['ck4']==1&&$mc['ck5']==1&&$mc['ck6']==1&&$mc['ck7']==1&&$mc['ck8']==1&&$mc['ck9']==1){ + //echo ($cacweb); + return view(); + }else{ + + die('没有获取绑定码,请联系相关人员'); + } + } + // 验证码检测 + public function check($code='') + { +// if (!captcha_check($code)) { +// $this->error('验证码错误'); +// } else { +// return true; +// } + return true; + } + +} diff --git a/application/index/controller/Login.php.bak b/application/index/controller/Login.php.bak new file mode 100644 index 0000000..492b79f --- /dev/null +++ b/application/index/controller/Login.php.bak @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFDB5LcbiFC29VfukvdoxlFjShfbYlwuOPDB5qbrYvdmOZd2xScbw7tmazcUn0DolVD1xrCjShfbYlwoyXFyxpdMOlGyxsd2Oldyxnco1pdjShC2xiF3HITo9mDB4Icbi0cB5LFZned250FM9SdoaZtmShFuaJdoljwoc1dMY0DB9VwolVcoa4htLhGXppcJiZcby1cbY0htLsNMlzAo9zftIphbShkuOPDbHsNMYPcBYqholVFua0htfjd2OlkZLpKXPLCBOsDB49dMa3wryLdBlVhtL7tJOVfB09koyLdBlVRT5Sd2fpdJipdmn1ftImFo9zft4mhUL7tMlMhtOVfB09NTrpGXPLfoipFZ0+cbkZd3wPk+GAQKDws+U4jGBsMKBFQK+8IUFpKXp9tMlMhtOVfB09NTwpGXPLfoipFZ0+F3ajC2azFZIm55M75d2a5PJW5CQg77ZnkZx1FMXPkZ9pdMOlGt90FMalkZLpKXp9tMlMhtOVfB09NTHpGXPLfoipFZ0+cbkZd3wPk+BviVGIIGMAMGJvq++8IUFpKXp9tmklfuaZdjShgWPLdBHINUnrCjP6foyJdoAPk3Y5F19ZcZFpRT53DoaZcUImfB5pFbalkZXxhU0+cMlVctIpKXPLD2a5NUF5HLr2HeC2YAw2YrW0W0WzKAcrYzC0YzCzKeI2WjOeYZF7tJOjCBY3cBwINUnTDorxhtOsC1SmdBHmbU4mGolVGBLmRJOqcbLpKXppcJILC2yjf2aJwtr9wtOsC1SmCBHZk10pGXprCjP6foyJdoAPk3Y5F19ZcZFpRT53DoaZcUImfB5pFbalkZXxhU0+fbnLCbOlhySmC2SZkz0+Hy0pKXp9cBxzcbShOow6KmOiCMxlhtfzGbYgFMFmhU0+f2ilFMAPk3aVDby1cUFSHULsNmaXcoy0cUidk2YqHJF9NjyfhTShgWppcJILdBYdk2YqHUffNT0xkJCLdBYdk2YqHJffNT0xkJCLdBYdk2YqHZffNT0xkJCLdBYdk2YqYtffNT0xkJCLdBYdk2YqYUffNT0xkJCLdBYdk2YqYJffNT0xkJCLdBYdk2YqYZffNT0xkJCLdBYdk2YqKtffNT0xkJCLdBYdk2YqKUffNT0xhbShFMa0fbkVwucpcbFPhTShgBaSF2a7tMOpcUIm5qhi5pZk6w635C+B57VO5D6D56tn77ZH6h+36woA57K755V45CBz5RQ65coCkZL7tm0hgWpXfBkSDBHIcmaVC3Opd24IC2ilC2SPkoYvcoA9kZFptmShDBCIhtyjCbn0C2iib2YPcBYqhtOjd2OlhULIGXPLfoipFZ0+cbkZd3wPk+MQjKJvIGGIIGMAMGJvqZFpKXp9cBxzcUn7tmklfuaZdJn0FmalKXp9tm0hgWP= \ No newline at end of file diff --git a/application/index/controller/Ltest.php b/application/index/controller/Ltest.php new file mode 100644 index 0000000..f4648b6 --- /dev/null +++ b/application/index/controller/Ltest.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFDB5LcbiFC29VfukvdoxlFjShfbYlwuOPDB5qbrYvdmOZd2xScbw7tmazcUn0DolVD1xrCjShC2xiF3HITuOlF3WIcbi0cB5LFZned250FM9SdoaZtmShFuaJdoljwoc1dMY0DB9VwolVcoa4htLhGXpZcbO1FM4IkuOPDbHsNMclfoYPhtfSfoazftFpKXp9tmn1CMxpCZnMfB5jfolvdJnmcbOQF29VhtLhGXPLCJE9wrOJKjpxfBaZGUIJF2aScBY0woOgfolscUxXferSdoHxRukjHUxXfewSdoHZRukjHJxXfeHSdoHzRukjHZnMFM9swoOifoygdB9ib2IJhTShcM9ZcByjDtILCJniFZELDz0+kuCpGXpMd3klCBYPhtO2woyzwtOqHT0+kuCxwtl7tMlMhtOqHUEiNUEmcy90DB1lkZl7tJOJBZOqbaSLDzyfwe0IcMxvCbO2CBXPkuCxhTShgWp9tm0hkoOiforINUnQF29Vb2aVC29LcUILCJL7tMajDo8IkoOifor7tm0hgWP= \ No newline at end of file diff --git a/application/index/controller/Pie1.php b/application/index/controller/Pie1.php new file mode 100644 index 0000000..fbec7f7 --- /dev/null +++ b/application/index/controller/Pie1.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXbolVcoa4boYvdmOZd2xScbw7eWp1F2AIfoipdMsFOow7eWp1F2AIfoipdMsFW29VfukvdoxlFjSYtMYSCbYzwynpcTrIwtnlGuOldMOzwrYvdmOZd2xScbwYtmSYtmn1CMxpCZnMfB5jfolvdJnpdMOlGtIpeWp7eWpZcbO1FM4IkuOPDbHsNMclfoYPhtfXDBAxkZL7eWp9eWpXfBkSDBHIcmaVC3Opd24Ic2a0DmYvdJIpGX0hkow9Oow6Kmy1cbk5htkzcBxlC3WIdMyscUx5wocZd20If3Ymb3npcUEJhTSYtJOLCbOiNBpzd25gcB5jd2OlhtOJhTSYtMajDo8IkoOifor7eWp9eWp9eWP= \ No newline at end of file diff --git a/application/index/controller/Sbtj.php b/application/index/controller/Sbtj.php new file mode 100644 index 0000000..3793812 --- /dev/null +++ b/application/index/controller/Sbtj.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFDB5LcbiFC29VfukvdoxlFjShfbYlwuOPDB5qbrOJKXp1F2AIfoipdMsFW29VfukvdoxlFjShfbYlwuOPDB5qbyklFbalF3W7tMYSCbYzwyYJfoPIwtnlGuOldMOzwrYvdmOZd2xScbwhGXpXfBkSDBHIcmaVC3Opd24IDB5LcbIPhWp7tJOJNAOJKjpxfBaZGUIJF2aScBY0woYvfB50holLhUn5RoYvdMYifti2d2x0CBflc3kicoASk2sBkZLIdMyscUnMFM9swokLGJnmFM91FtnJGUn2d2x0CBflc3kicoAJhTShkowxNAOJKjpxfBaZGUIJF2aScBY0woYvfB50holLhUn5RoYvdMYiftizC2yScUXmdaFmhUnVCB1lwocZd20ICMO6wofZd3aXwok5wuYjCBxlwJL7tMcvFMaiC2IPwtOJwoyzwtOqNT4LfJEpwuShcM9ZcByjDtIIkuCICbHIkoSxNT4LfjrIhUn7tMlMhtOqHUE9NUEmGUFpGXPLClSLD11dk3LmbT0IcMxvCbO2CBXPkuCxhTShgWp9tm0hcM9ZcByjDtIIkowxwoyzwtOqNT4LfJEpGXpMd3klCBYPhtELfJniFZELDzr9NJO2HUEpGXppcJILDzrINT0Ik3LmhbShkowxBZOqbaSmGUffNBcSd2y0fMyShtO2HUL7tm19tm0hkuOPDbHsNMyzF2lmdJImcoy0CUFSDmYvdl9ldMYvcoAPkowphTShkuOPDbHsNMyzF2lmdJImcoy0CTwmRopzd25gcB5jd2OlhtOJHULpKXpZcbO1FM4IkuOPDbHsNMclfoYPhtL7tm0hFuaJdoljwoc1dMY0DB9Vwoflfy92d2x0CBflc3kicoAPhbShkow9Oow6Kmy1cbk5htkzcBxlC3WIC291dmWPDBWpwuLSC29VC2y0hucvduOic2amFMyLcUXmD1CmhUnVCB1lwocZd20ICMO6wofZd3aXwok5wucvduOic2amFMyLcUwpKXPLcoy0CT1QF29Vb2aVC29LcUILCJL7tMajDo8IkoOifor7tm0hFuaJdoljwoc1dMY0DB9Vwoflfy9zC2yScUIpGXPLCj1rCjP6FbalFmLPwmYldoajftnjd3aVftipctLIGUxjd25jCbWPF2YidoASk21bkZLIdMyscUnMFM9swokLGJnmFM91FtnJGUnzC2yScUwpKXPLcoy0CT1QF29Vb2aVC29LcUILCJL7tMajDo8IkoOifor7tm0hgWP= \ No newline at end of file diff --git a/application/index/controller/Sline.php b/application/index/controller/Sline.php new file mode 100644 index 0000000..04a338a --- /dev/null +++ b/application/index/controller/Sline.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXbolVcoa4boYvdmOZd2xScbw7eWp1F2AIfoipdMsFW29VfukvdoxlFjSYtmazcUn0DolVD1xrCjSYtMYSCbYzwyYSDB5lwoa4foaVcuHIW29VfukvdoxlFI0hGX0hFuaJdoljwoc1dMY0DB9VwolVcoa4htLYtmSYtMlMwtildbn0GUILb0fyaySmDBWmbULpwoOpcUIm5pGI5pBw55Qr57ZB5C+3kZL7eWPLDBWINUELb0fyaySmDBWmbTSYtJO0DolzRT5iF3Ypc24Pk2lLkZXLDBWpKX0hFMa0fbkVwtO0DolzRT5McbOjDtImF2xpdMAmhTSYtm0Ytmn1CMxpCZnMfB5jfolvdJnmcbOQF29VhtLYtmSYtMlMwtildbn0GUILb0fyaySmF2lLk10phUnZcbO1FM47eWPLF2lLwe0Iky9uOaOdk3YpctffKX0hkowINUnrCjP6FbalFmLPwmYldoajftnLb1OpdBASW0I0FunsRrHZUeOXFo0SWzkwYmnXdUxeHLIZFunsRrIZFunsRrYNFunsRrYNHmnXdUxAd3Oidri5cukvC2yZCM9VwocZd20Icoy0Ca9lFoygDtn3DoaZcUnyAA1kOe0mGZOzDBO9kZwpKX0hkoOiforINUnQF29Vb2aVC29LcUILCJL7eWplC2ivwtOLCbOiKX0hgW0hgW0h \ No newline at end of file diff --git a/application/index/controller/TbDlgModevcomf.php b/application/index/controller/TbDlgModevcomf.php new file mode 100644 index 0000000..3293d64 --- /dev/null +++ b/application/index/controller/TbDlgModevcomf.php @@ -0,0 +1,149 @@ +where('eqmid',$id)->find(); + session('warn',$warn); + $this->assign('warn', $warn); + */ + + //var_dump(request()->param()); + $data = Db::table('data_dlg_h')->field('d_time,modevcomf1,modevcomf2,modevcomf3')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->order('d_time desc')->paginate(10,false,['query' => request()->param()]); + $data1 = Db::table('data_dlg_h')->field('d_time,modevcomf1,modevcomf2,modevcomf3')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->select(); + + session('data',$data); + session('data1',$data1); + $this->assign('data', $data); + + return $this->fetch('tb_dlg_modevcomf'); + } + + + public function ExcelOne() + { + $list = session('data'); + //session(null); + //dump($list);die; + $xlsCell = array( + array('d_time','时间'), + array('modevcomf1','开关室1烟雾报警'), + array('modevcomf2','开关室2烟雾报警'), + array('modevcomf3','母线洞烟雾报警') + ); + $this->exportExcel("当前数据导出",$xlsCell,$list); + + + } + public function ExcelAll() + { + $list = session('data1'); + + $xlsCell = array( + array('d_time','时间'), + array('modevcomf1','开关室1烟雾报警'), + array('modevcomf2','开关室2烟雾报警'), + array('modevcomf3','母线洞烟雾报警') + ); + $this->exportExcel("全部数据导出",$xlsCell,$list); + + + } + public function exportExcel($expTitle,$expCellName,$expTableData) + { + $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称 + $fileName = $expTitle.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定 + $cellNum = count($expCellName); + $dataNum = count($expTableData); + //vendor("PHPExcel.PHPExcel"); + import('PhpExcel', EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);//设置保存版本格式 + $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); + + + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格 + // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s')); + //$objPHPExcel->getActiveSheet(0)->getDefaueltRowDimension()->setRowHeight(15); + for($i=0;$i<$cellNum;$i++){ + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]); + } + // Miscellaneous glyphs, UTF-8 + for($i=0;$i<$dataNum;$i++){ + + + for($j=0;$j<$cellNum;$j++){ + + /*if($expTableData[$i]['d_pt_1']session('warn.warnmax1')){ + $objPHPExcel->getActiveSheet(0)->getStyle('B'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_2']session('warn.warnmax2')){ + $objPHPExcel->getActiveSheet(0)->getStyle('C'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_3']session('warn.warnmax3')){ + $objPHPExcel->getActiveSheet(0)->getStyle('D'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_1']session('warn.warnmax5')){ + $objPHPExcel->getActiveSheet(0)->getStyle('E'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_2']session('warn.warnmax6')){ + $objPHPExcel->getActiveSheet(0)->getStyle('F'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_3']session('warn.warnmax7')){ + $objPHPExcel->getActiveSheet(0)->getStyle('G'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_1']session('warn.warnmax10')){ + $objPHPExcel->getActiveSheet(0)->getStyle('H'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_2']session('warn.warnmax11')){ + $objPHPExcel->getActiveSheet(0)->getStyle('I'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_3']session('warn.warnmax12')){ + $objPHPExcel->getActiveSheet(0)->getStyle('J'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_1']session('warn.warnmax13')){ + $objPHPExcel->getActiveSheet(0)->getStyle('K'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_2']session('warn.warnmax15')){ + $objPHPExcel->getActiveSheet(0)->getStyle('L'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_3']session('warn.warnmax16')){ + $objPHPExcel->getActiveSheet(0)->getStyle('M'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + */ + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]); + + } + //dump($expTableData[$i]['d_ct_1']); + } + + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="'.$xlsTitle.'.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + + + } + + +} + diff --git a/application/index/controller/TbDlgdong1Tmp.php b/application/index/controller/TbDlgdong1Tmp.php new file mode 100644 index 0000000..906a60b --- /dev/null +++ b/application/index/controller/TbDlgdong1Tmp.php @@ -0,0 +1,147 @@ +where('eqmid',$id)->find(); + session('warn',$warn); + $this->assign('warn', $warn); + */ + + //var_dump(request()->param()); + $data = Db::table('data_dlg_h')->field('d_time,tmp1,hum1')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->order('d_time desc')->paginate(10,false,['query' => request()->param()]); + $data1 = Db::table('data_dlg_h')->field('d_time,tmp1,hum1')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->select(); + + session('data',$data); + session('data1',$data1); + $this->assign('data', $data); + + return $this->fetch('tb_dlgdong1_tmp'); + } + + + public function ExcelOne() + { + $list = session('data'); + //session(null); + //dump($list);die; + $xlsCell = array( + array('d_time','时间'), + array('tmp1','温度'), + array('hum1','湿度') + ); + $this->exportExcel("当前数据导出",$xlsCell,$list); + + + } + public function ExcelAll() + { + $list = session('data1'); + + $xlsCell = array( + array('d_time','时间'), + array('tmp1','温度'), + array('hum1','湿度') + ); + $this->exportExcel("全部数据导出",$xlsCell,$list); + + + } + public function exportExcel($expTitle,$expCellName,$expTableData) + { + $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称 + $fileName = $expTitle.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定 + $cellNum = count($expCellName); + $dataNum = count($expTableData); + //vendor("PHPExcel.PHPExcel"); + import('PhpExcel', EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);//设置保存版本格式 + $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); + + + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格 + // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s')); + //$objPHPExcel->getActiveSheet(0)->getDefaueltRowDimension()->setRowHeight(15); + for($i=0;$i<$cellNum;$i++){ + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]); + } + // Miscellaneous glyphs, UTF-8 + for($i=0;$i<$dataNum;$i++){ + + + for($j=0;$j<$cellNum;$j++){ + + /*if($expTableData[$i]['d_pt_1']session('warn.warnmax1')){ + $objPHPExcel->getActiveSheet(0)->getStyle('B'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_2']session('warn.warnmax2')){ + $objPHPExcel->getActiveSheet(0)->getStyle('C'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_3']session('warn.warnmax3')){ + $objPHPExcel->getActiveSheet(0)->getStyle('D'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_1']session('warn.warnmax5')){ + $objPHPExcel->getActiveSheet(0)->getStyle('E'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_2']session('warn.warnmax6')){ + $objPHPExcel->getActiveSheet(0)->getStyle('F'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_3']session('warn.warnmax7')){ + $objPHPExcel->getActiveSheet(0)->getStyle('G'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_1']session('warn.warnmax10')){ + $objPHPExcel->getActiveSheet(0)->getStyle('H'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_2']session('warn.warnmax11')){ + $objPHPExcel->getActiveSheet(0)->getStyle('I'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_3']session('warn.warnmax12')){ + $objPHPExcel->getActiveSheet(0)->getStyle('J'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_1']session('warn.warnmax13')){ + $objPHPExcel->getActiveSheet(0)->getStyle('K'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_2']session('warn.warnmax15')){ + $objPHPExcel->getActiveSheet(0)->getStyle('L'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_3']session('warn.warnmax16')){ + $objPHPExcel->getActiveSheet(0)->getStyle('M'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + */ + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]); + + } + //dump($expTableData[$i]['d_ct_1']); + } + + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="'.$xlsTitle.'.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + + + } + + +} + diff --git a/application/index/controller/TbDlgdong2Tmp.php b/application/index/controller/TbDlgdong2Tmp.php new file mode 100644 index 0000000..6e52190 --- /dev/null +++ b/application/index/controller/TbDlgdong2Tmp.php @@ -0,0 +1,147 @@ +where('eqmid',$id)->find(); + session('warn',$warn); + $this->assign('warn', $warn); + */ + + //var_dump(request()->param()); + $data = Db::table('data_dlg_h')->field('d_time,tmp2,hum2')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->order('d_time desc')->paginate(10,false,['query' => request()->param()]); + $data1 = Db::table('data_dlg_h')->field('d_time,tmp2,hum2')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->select(); + + session('data',$data); + session('data1',$data1); + $this->assign('data', $data); + + return $this->fetch('tb_dlgdong2_tmp'); + } + + + public function ExcelOne() + { + $list = session('data'); + //session(null); + //dump($list);die; + $xlsCell = array( + array('d_time','时间'), + array('tmp2','温度'), + array('hum2','湿度') + ); + $this->exportExcel("当前数据导出",$xlsCell,$list); + + + } + public function ExcelAll() + { + $list = session('data1'); + + $xlsCell = array( + array('d_time','时间'), + array('tmp2','温度'), + array('hum2','湿度') + ); + $this->exportExcel("全部数据导出",$xlsCell,$list); + + + } + public function exportExcel($expTitle,$expCellName,$expTableData) + { + $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称 + $fileName = $expTitle.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定 + $cellNum = count($expCellName); + $dataNum = count($expTableData); + //vendor("PHPExcel.PHPExcel"); + import('PhpExcel', EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);//设置保存版本格式 + $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); + + + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格 + // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s')); + //$objPHPExcel->getActiveSheet(0)->getDefaueltRowDimension()->setRowHeight(15); + for($i=0;$i<$cellNum;$i++){ + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]); + } + // Miscellaneous glyphs, UTF-8 + for($i=0;$i<$dataNum;$i++){ + + + for($j=0;$j<$cellNum;$j++){ + + /*if($expTableData[$i]['d_pt_1']session('warn.warnmax1')){ + $objPHPExcel->getActiveSheet(0)->getStyle('B'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_2']session('warn.warnmax2')){ + $objPHPExcel->getActiveSheet(0)->getStyle('C'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_3']session('warn.warnmax3')){ + $objPHPExcel->getActiveSheet(0)->getStyle('D'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_1']session('warn.warnmax5')){ + $objPHPExcel->getActiveSheet(0)->getStyle('E'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_2']session('warn.warnmax6')){ + $objPHPExcel->getActiveSheet(0)->getStyle('F'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_3']session('warn.warnmax7')){ + $objPHPExcel->getActiveSheet(0)->getStyle('G'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_1']session('warn.warnmax10')){ + $objPHPExcel->getActiveSheet(0)->getStyle('H'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_2']session('warn.warnmax11')){ + $objPHPExcel->getActiveSheet(0)->getStyle('I'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_3']session('warn.warnmax12')){ + $objPHPExcel->getActiveSheet(0)->getStyle('J'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_1']session('warn.warnmax13')){ + $objPHPExcel->getActiveSheet(0)->getStyle('K'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_2']session('warn.warnmax15')){ + $objPHPExcel->getActiveSheet(0)->getStyle('L'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_3']session('warn.warnmax16')){ + $objPHPExcel->getActiveSheet(0)->getStyle('M'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + */ + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]); + + } + //dump($expTableData[$i]['d_ct_1']); + } + + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="'.$xlsTitle.'.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + + + } + + +} + diff --git a/application/index/controller/TbDlgdong3Tmp.php b/application/index/controller/TbDlgdong3Tmp.php new file mode 100644 index 0000000..eac9770 --- /dev/null +++ b/application/index/controller/TbDlgdong3Tmp.php @@ -0,0 +1,147 @@ +where('eqmid',$id)->find(); + session('warn',$warn); + $this->assign('warn', $warn); + */ + + //var_dump(request()->param()); + $data = Db::table('data_dlg_h')->field('d_time,tmp3,hum3')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->order('d_time desc')->paginate(10,false,['query' => request()->param()]); + $data1 = Db::table('data_dlg_h')->field('d_time,tmp3,hum3')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->select(); + + session('data',$data); + session('data1',$data1); + $this->assign('data', $data); + + return $this->fetch('tb_dlgdong3_tmp'); + } + + + public function ExcelOne() + { + $list = session('data'); + //session(null); + //dump($list);die; + $xlsCell = array( + array('d_time','时间'), + array('tmp3','温度'), + array('hum3','湿度') + ); + $this->exportExcel("当前数据导出",$xlsCell,$list); + + + } + public function ExcelAll() + { + $list = session('data1'); + + $xlsCell = array( + array('d_time','时间'), + array('tmp3','温度'), + array('hum3','湿度') + ); + $this->exportExcel("全部数据导出",$xlsCell,$list); + + + } + public function exportExcel($expTitle,$expCellName,$expTableData) + { + $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称 + $fileName = $expTitle.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定 + $cellNum = count($expCellName); + $dataNum = count($expTableData); + //vendor("PHPExcel.PHPExcel"); + import('PhpExcel', EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);//设置保存版本格式 + $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); + + + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格 + // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s')); + //$objPHPExcel->getActiveSheet(0)->getDefaueltRowDimension()->setRowHeight(15); + for($i=0;$i<$cellNum;$i++){ + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]); + } + // Miscellaneous glyphs, UTF-8 + for($i=0;$i<$dataNum;$i++){ + + + for($j=0;$j<$cellNum;$j++){ + + /*if($expTableData[$i]['d_pt_1']session('warn.warnmax1')){ + $objPHPExcel->getActiveSheet(0)->getStyle('B'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_2']session('warn.warnmax2')){ + $objPHPExcel->getActiveSheet(0)->getStyle('C'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_3']session('warn.warnmax3')){ + $objPHPExcel->getActiveSheet(0)->getStyle('D'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_1']session('warn.warnmax5')){ + $objPHPExcel->getActiveSheet(0)->getStyle('E'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_2']session('warn.warnmax6')){ + $objPHPExcel->getActiveSheet(0)->getStyle('F'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_3']session('warn.warnmax7')){ + $objPHPExcel->getActiveSheet(0)->getStyle('G'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_1']session('warn.warnmax10')){ + $objPHPExcel->getActiveSheet(0)->getStyle('H'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_2']session('warn.warnmax11')){ + $objPHPExcel->getActiveSheet(0)->getStyle('I'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_3']session('warn.warnmax12')){ + $objPHPExcel->getActiveSheet(0)->getStyle('J'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_1']session('warn.warnmax13')){ + $objPHPExcel->getActiveSheet(0)->getStyle('K'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_2']session('warn.warnmax15')){ + $objPHPExcel->getActiveSheet(0)->getStyle('L'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_3']session('warn.warnmax16')){ + $objPHPExcel->getActiveSheet(0)->getStyle('M'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + */ + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]); + + } + //dump($expTableData[$i]['d_ct_1']); + } + + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="'.$xlsTitle.'.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + + + } + + +} + diff --git a/application/index/controller/TbDlgdongAwater.php b/application/index/controller/TbDlgdongAwater.php new file mode 100644 index 0000000..02d034f --- /dev/null +++ b/application/index/controller/TbDlgdongAwater.php @@ -0,0 +1,145 @@ +where('eqmid',$id)->find(); + session('warn',$warn); + $this->assign('warn', $warn); + */ + + //var_dump(request()->param()); + $data = Db::table('data_dlg_h')->field('d_time,awater')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->order('d_time desc')->paginate(10,false,['query' => request()->param()]); + $data1 = Db::table('data_dlg_h')->field('d_time,awater')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->select(); + echo $data; + session('data',$data); + session('data1',$data1); + $this->assign('data', $data); + + return $this->fetch('tb_dlgdong_awater'); + } + + + public function ExcelOne() + { + $list = session('data'); + //session(null); + //dump($list);die; + $xlsCell = array( + array('d_time','时间'), + array('awater','水浸'), + ); + $this->exportExcel("当前数据导出",$xlsCell,$list); + + + } + public function ExcelAll() + { + $list = session('data1'); + + $xlsCell = array( + array('d_time','时间'), + array('awater','水浸'), + ); + $this->exportExcel("全部数据导出",$xlsCell,$list); + + + } + public function exportExcel($expTitle,$expCellName,$expTableData) + { + $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称 + $fileName = $expTitle.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定 + $cellNum = count($expCellName); + $dataNum = count($expTableData); + //vendor("PHPExcel.PHPExcel"); + import('PhpExcel', EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);//设置保存版本格式 + $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); + + + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格 + // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s')); + //$objPHPExcel->getActiveSheet(0)->getDefaueltRowDimension()->setRowHeight(15); + for($i=0;$i<$cellNum;$i++){ + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]); + } + // Miscellaneous glyphs, UTF-8 + for($i=0;$i<$dataNum;$i++){ + + + for($j=0;$j<$cellNum;$j++){ + + /*if($expTableData[$i]['d_pt_1']session('warn.warnmax1')){ + $objPHPExcel->getActiveSheet(0)->getStyle('B'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_2']session('warn.warnmax2')){ + $objPHPExcel->getActiveSheet(0)->getStyle('C'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_3']session('warn.warnmax3')){ + $objPHPExcel->getActiveSheet(0)->getStyle('D'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_1']session('warn.warnmax5')){ + $objPHPExcel->getActiveSheet(0)->getStyle('E'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_2']session('warn.warnmax6')){ + $objPHPExcel->getActiveSheet(0)->getStyle('F'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_3']session('warn.warnmax7')){ + $objPHPExcel->getActiveSheet(0)->getStyle('G'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_1']session('warn.warnmax10')){ + $objPHPExcel->getActiveSheet(0)->getStyle('H'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_2']session('warn.warnmax11')){ + $objPHPExcel->getActiveSheet(0)->getStyle('I'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_3']session('warn.warnmax12')){ + $objPHPExcel->getActiveSheet(0)->getStyle('J'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_1']session('warn.warnmax13')){ + $objPHPExcel->getActiveSheet(0)->getStyle('K'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_2']session('warn.warnmax15')){ + $objPHPExcel->getActiveSheet(0)->getStyle('L'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_3']session('warn.warnmax16')){ + $objPHPExcel->getActiveSheet(0)->getStyle('M'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + */ + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]); + + } + //dump($expTableData[$i]['d_ct_1']); + } + + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="'.$xlsTitle.'.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + + + } + + +} + diff --git a/application/index/controller/TbDlgkg1Awater.php b/application/index/controller/TbDlgkg1Awater.php new file mode 100644 index 0000000..d94785c --- /dev/null +++ b/application/index/controller/TbDlgkg1Awater.php @@ -0,0 +1,145 @@ +where('eqmid',$id)->find(); + session('warn',$warn); + $this->assign('warn', $warn); + */ + + //var_dump(request()->param()); + $data = Db::table('data_dlg_h')->field('d_time,awater')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->order('d_time desc')->paginate(10,false,['query' => request()->param()]); + $data1 = Db::table('data_dlg_h')->field('d_time,awater')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->select(); + echo $data; + session('data',$data); + session('data1',$data1); + $this->assign('data', $data); + + return $this->fetch('tb_dlgkg1_awater'); + } + + + public function ExcelOne() + { + $list = session('data'); + //session(null); + //dump($list);die; + $xlsCell = array( + array('d_time','时间'), + array('awater','水浸'), + ); + $this->exportExcel("当前数据导出",$xlsCell,$list); + + + } + public function ExcelAll() + { + $list = session('data1'); + + $xlsCell = array( + array('d_time','时间'), + array('awater','水浸'), + ); + $this->exportExcel("全部数据导出",$xlsCell,$list); + + + } + public function exportExcel($expTitle,$expCellName,$expTableData) + { + $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称 + $fileName = $expTitle.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定 + $cellNum = count($expCellName); + $dataNum = count($expTableData); + //vendor("PHPExcel.PHPExcel"); + import('PhpExcel', EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);//设置保存版本格式 + $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); + + + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格 + // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s')); + //$objPHPExcel->getActiveSheet(0)->getDefaueltRowDimension()->setRowHeight(15); + for($i=0;$i<$cellNum;$i++){ + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]); + } + // Miscellaneous glyphs, UTF-8 + for($i=0;$i<$dataNum;$i++){ + + + for($j=0;$j<$cellNum;$j++){ + + /*if($expTableData[$i]['d_pt_1']session('warn.warnmax1')){ + $objPHPExcel->getActiveSheet(0)->getStyle('B'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_2']session('warn.warnmax2')){ + $objPHPExcel->getActiveSheet(0)->getStyle('C'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_3']session('warn.warnmax3')){ + $objPHPExcel->getActiveSheet(0)->getStyle('D'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_1']session('warn.warnmax5')){ + $objPHPExcel->getActiveSheet(0)->getStyle('E'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_2']session('warn.warnmax6')){ + $objPHPExcel->getActiveSheet(0)->getStyle('F'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_3']session('warn.warnmax7')){ + $objPHPExcel->getActiveSheet(0)->getStyle('G'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_1']session('warn.warnmax10')){ + $objPHPExcel->getActiveSheet(0)->getStyle('H'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_2']session('warn.warnmax11')){ + $objPHPExcel->getActiveSheet(0)->getStyle('I'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_3']session('warn.warnmax12')){ + $objPHPExcel->getActiveSheet(0)->getStyle('J'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_1']session('warn.warnmax13')){ + $objPHPExcel->getActiveSheet(0)->getStyle('K'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_2']session('warn.warnmax15')){ + $objPHPExcel->getActiveSheet(0)->getStyle('L'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_3']session('warn.warnmax16')){ + $objPHPExcel->getActiveSheet(0)->getStyle('M'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + */ + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]); + + } + //dump($expTableData[$i]['d_ct_1']); + } + + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="'.$xlsTitle.'.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + + + } + + +} + diff --git a/application/index/controller/TbDlgkg1Tmp.php b/application/index/controller/TbDlgkg1Tmp.php new file mode 100644 index 0000000..655eb13 --- /dev/null +++ b/application/index/controller/TbDlgkg1Tmp.php @@ -0,0 +1,147 @@ +where('eqmid',$id)->find(); + session('warn',$warn); + $this->assign('warn', $warn); + */ + + //var_dump(request()->param()); + $data = Db::table('data_dlg_h')->field('d_time,tmp1,hum1')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->order('d_time desc')->paginate(10,false,['query' => request()->param()]); + $data1 = Db::table('data_dlg_h')->field('d_time,tmp1,hum1')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->select(); + + session('data',$data); + session('data1',$data1); + $this->assign('data', $data); + + return $this->fetch('tb_dlgkg1_tmp'); + } + + + public function ExcelOne() + { + $list = session('data'); + //session(null); + //dump($list);die; + $xlsCell = array( + array('d_time','时间'), + array('tmp1','温度'), + array('hum1','湿度') + ); + $this->exportExcel("当前数据导出",$xlsCell,$list); + + + } + public function ExcelAll() + { + $list = session('data1'); + + $xlsCell = array( + array('d_time','时间'), + array('tmp1','温度'), + array('hum1','湿度') + ); + $this->exportExcel("全部数据导出",$xlsCell,$list); + + + } + public function exportExcel($expTitle,$expCellName,$expTableData) + { + $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称 + $fileName = $expTitle.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定 + $cellNum = count($expCellName); + $dataNum = count($expTableData); + //vendor("PHPExcel.PHPExcel"); + import('PhpExcel', EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);//设置保存版本格式 + $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); + + + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格 + // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s')); + //$objPHPExcel->getActiveSheet(0)->getDefaueltRowDimension()->setRowHeight(15); + for($i=0;$i<$cellNum;$i++){ + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]); + } + // Miscellaneous glyphs, UTF-8 + for($i=0;$i<$dataNum;$i++){ + + + for($j=0;$j<$cellNum;$j++){ + + /*if($expTableData[$i]['d_pt_1']session('warn.warnmax1')){ + $objPHPExcel->getActiveSheet(0)->getStyle('B'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_2']session('warn.warnmax2')){ + $objPHPExcel->getActiveSheet(0)->getStyle('C'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_3']session('warn.warnmax3')){ + $objPHPExcel->getActiveSheet(0)->getStyle('D'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_1']session('warn.warnmax5')){ + $objPHPExcel->getActiveSheet(0)->getStyle('E'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_2']session('warn.warnmax6')){ + $objPHPExcel->getActiveSheet(0)->getStyle('F'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_3']session('warn.warnmax7')){ + $objPHPExcel->getActiveSheet(0)->getStyle('G'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_1']session('warn.warnmax10')){ + $objPHPExcel->getActiveSheet(0)->getStyle('H'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_2']session('warn.warnmax11')){ + $objPHPExcel->getActiveSheet(0)->getStyle('I'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_3']session('warn.warnmax12')){ + $objPHPExcel->getActiveSheet(0)->getStyle('J'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_1']session('warn.warnmax13')){ + $objPHPExcel->getActiveSheet(0)->getStyle('K'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_2']session('warn.warnmax15')){ + $objPHPExcel->getActiveSheet(0)->getStyle('L'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_3']session('warn.warnmax16')){ + $objPHPExcel->getActiveSheet(0)->getStyle('M'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + */ + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]); + + } + //dump($expTableData[$i]['d_ct_1']); + } + + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="'.$xlsTitle.'.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + + + } + + +} + diff --git a/application/index/controller/TbDlgkg2Awater.php b/application/index/controller/TbDlgkg2Awater.php new file mode 100644 index 0000000..a25e2fe --- /dev/null +++ b/application/index/controller/TbDlgkg2Awater.php @@ -0,0 +1,145 @@ +where('eqmid',$id)->find(); + session('warn',$warn); + $this->assign('warn', $warn); + */ + + //var_dump(request()->param()); + $data = Db::table('data_dlg_h')->field('d_time,awater')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->order('d_time desc')->paginate(10,false,['query' => request()->param()]); + $data1 = Db::table('data_dlg_h')->field('d_time,awater')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->select(); + echo $data; + session('data',$data); + session('data1',$data1); + $this->assign('data', $data); + + return $this->fetch('tb_dlgkg2_awater'); + } + + + public function ExcelOne() + { + $list = session('data'); + //session(null); + //dump($list);die; + $xlsCell = array( + array('d_time','时间'), + array('awater','水浸'), + ); + $this->exportExcel("当前数据导出",$xlsCell,$list); + + + } + public function ExcelAll() + { + $list = session('data1'); + + $xlsCell = array( + array('d_time','时间'), + array('awater','水浸'), + ); + $this->exportExcel("全部数据导出",$xlsCell,$list); + + + } + public function exportExcel($expTitle,$expCellName,$expTableData) + { + $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称 + $fileName = $expTitle.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定 + $cellNum = count($expCellName); + $dataNum = count($expTableData); + //vendor("PHPExcel.PHPExcel"); + import('PhpExcel', EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);//设置保存版本格式 + $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); + + + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格 + // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s')); + //$objPHPExcel->getActiveSheet(0)->getDefaueltRowDimension()->setRowHeight(15); + for($i=0;$i<$cellNum;$i++){ + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]); + } + // Miscellaneous glyphs, UTF-8 + for($i=0;$i<$dataNum;$i++){ + + + for($j=0;$j<$cellNum;$j++){ + + /*if($expTableData[$i]['d_pt_1']session('warn.warnmax1')){ + $objPHPExcel->getActiveSheet(0)->getStyle('B'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_2']session('warn.warnmax2')){ + $objPHPExcel->getActiveSheet(0)->getStyle('C'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_3']session('warn.warnmax3')){ + $objPHPExcel->getActiveSheet(0)->getStyle('D'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_1']session('warn.warnmax5')){ + $objPHPExcel->getActiveSheet(0)->getStyle('E'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_2']session('warn.warnmax6')){ + $objPHPExcel->getActiveSheet(0)->getStyle('F'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_3']session('warn.warnmax7')){ + $objPHPExcel->getActiveSheet(0)->getStyle('G'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_1']session('warn.warnmax10')){ + $objPHPExcel->getActiveSheet(0)->getStyle('H'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_2']session('warn.warnmax11')){ + $objPHPExcel->getActiveSheet(0)->getStyle('I'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_3']session('warn.warnmax12')){ + $objPHPExcel->getActiveSheet(0)->getStyle('J'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_1']session('warn.warnmax13')){ + $objPHPExcel->getActiveSheet(0)->getStyle('K'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_2']session('warn.warnmax15')){ + $objPHPExcel->getActiveSheet(0)->getStyle('L'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_3']session('warn.warnmax16')){ + $objPHPExcel->getActiveSheet(0)->getStyle('M'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + */ + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]); + + } + //dump($expTableData[$i]['d_ct_1']); + } + + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="'.$xlsTitle.'.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + + + } + + +} + diff --git a/application/index/controller/TbDlgkg2Tmp.php b/application/index/controller/TbDlgkg2Tmp.php new file mode 100644 index 0000000..a69054b --- /dev/null +++ b/application/index/controller/TbDlgkg2Tmp.php @@ -0,0 +1,147 @@ +where('eqmid',$id)->find(); + session('warn',$warn); + $this->assign('warn', $warn); + */ + + //var_dump(request()->param()); + $data = Db::table('data_dlg_h')->field('d_time,tmp1,hum1')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->order('d_time desc')->paginate(10,false,['query' => request()->param()]); + $data1 = Db::table('data_dlg_h')->field('d_time,tmp1,hum1')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->select(); + + session('data',$data); + session('data1',$data1); + $this->assign('data', $data); + + return $this->fetch('tb_dlgkg2_tmp'); + } + + + public function ExcelOne() + { + $list = session('data'); + //session(null); + //dump($list);die; + $xlsCell = array( + array('d_time','时间'), + array('tmp1','温度'), + array('hum1','湿度') + ); + $this->exportExcel("当前数据导出",$xlsCell,$list); + + + } + public function ExcelAll() + { + $list = session('data1'); + + $xlsCell = array( + array('d_time','时间'), + array('tmp1','温度'), + array('hum1','湿度') + ); + $this->exportExcel("全部数据导出",$xlsCell,$list); + + + } + public function exportExcel($expTitle,$expCellName,$expTableData) + { + $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称 + $fileName = $expTitle.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定 + $cellNum = count($expCellName); + $dataNum = count($expTableData); + //vendor("PHPExcel.PHPExcel"); + import('PhpExcel', EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);//设置保存版本格式 + $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); + + + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格 + // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s')); + //$objPHPExcel->getActiveSheet(0)->getDefaueltRowDimension()->setRowHeight(15); + for($i=0;$i<$cellNum;$i++){ + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]); + } + // Miscellaneous glyphs, UTF-8 + for($i=0;$i<$dataNum;$i++){ + + + for($j=0;$j<$cellNum;$j++){ + + /*if($expTableData[$i]['d_pt_1']session('warn.warnmax1')){ + $objPHPExcel->getActiveSheet(0)->getStyle('B'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_2']session('warn.warnmax2')){ + $objPHPExcel->getActiveSheet(0)->getStyle('C'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_3']session('warn.warnmax3')){ + $objPHPExcel->getActiveSheet(0)->getStyle('D'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_1']session('warn.warnmax5')){ + $objPHPExcel->getActiveSheet(0)->getStyle('E'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_2']session('warn.warnmax6')){ + $objPHPExcel->getActiveSheet(0)->getStyle('F'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_3']session('warn.warnmax7')){ + $objPHPExcel->getActiveSheet(0)->getStyle('G'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_1']session('warn.warnmax10')){ + $objPHPExcel->getActiveSheet(0)->getStyle('H'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_2']session('warn.warnmax11')){ + $objPHPExcel->getActiveSheet(0)->getStyle('I'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_3']session('warn.warnmax12')){ + $objPHPExcel->getActiveSheet(0)->getStyle('J'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_1']session('warn.warnmax13')){ + $objPHPExcel->getActiveSheet(0)->getStyle('K'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_2']session('warn.warnmax15')){ + $objPHPExcel->getActiveSheet(0)->getStyle('L'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_3']session('warn.warnmax16')){ + $objPHPExcel->getActiveSheet(0)->getStyle('M'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + */ + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]); + + } + //dump($expTableData[$i]['d_ct_1']); + } + + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="'.$xlsTitle.'.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + + + } + + +} + diff --git a/application/index/controller/TbEia.php b/application/index/controller/TbEia.php new file mode 100644 index 0000000..c1ed256 --- /dev/null +++ b/application/index/controller/TbEia.php @@ -0,0 +1,221 @@ +where('eqmid',$id)->find(); + session('warn',$warn); + $this->assign('warn', $warn); + + //var_dump(request()->param()); + $data = Db::table('data_eia_h')->field('d_time,d_pt_1,d_pt_2,d_pt_3,d_ct_1,d_ct_2,d_ct_3,d_pf_1,d_pf_2,d_pf_3,d_jx_1,d_jx_2,d_jx_3')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->order('d_time desc')->paginate(10,false,['query' => request()->param()]); + $data1 = Db::table('data_eia_h')->field('d_time,d_pt_1,d_pt_2,d_pt_3,d_ct_1,d_ct_2,d_ct_3,d_pf_1,d_pf_2,d_pf_3,d_jx_1,d_jx_2,d_jx_3')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->select(); + + session('data',$data); + session('data1',$data1); + $this->assign('data', $data); + + return $this->fetch('tb_eia'); + } + + + public function ExcelOne() + { + $list = session('data'); + //session(null); + //dump($list);die; + $xlsCell = array( + array('d_time','时间'), + array('d_pt_1','A相母线电压'), + array('d_pt_2','B相母线电压'), + array('d_pt_3','C相母线电压'), + array('d_ct_1','A相泄露电流'), + array('d_ct_2','B相泄露电流'), + array('d_ct_3','C相泄露电流'), + array('d_pf_1','A相电容量'), + array('d_pf_2','B相电容量'), + array('d_pf_3','C相电容量'), + array('d_jx_1','A相介质损耗因数'), + array('d_jx_2','B相介质损耗因数'), + array('d_jx_3','C相介质损耗因数') + ); + $this->exportExcel("当前数据导出",$xlsCell,$list); + + + } + public function ExcelAll() + { + $list = session('data1'); + + $xlsCell = array( + array('d_time','时间'), + array('d_pt_1','A相母线电压'), + array('d_pt_2','B相母线电压'), + array('d_pt_3','C相母线电压'), + array('d_ct_1','A相泄露电流'), + array('d_ct_2','B相泄露电流'), + array('d_ct_3','C相泄露电流'), + array('d_pf_1','A相电容量'), + array('d_pf_2','B相电容量'), + array('d_pf_3','C相电容量'), + array('d_jx_1','A相介质损耗因数'), + array('d_jx_2','B相介质损耗因数'), + array('d_jx_3','C相介质损耗因数') + ); + $this->exportExcel("全部数据导出",$xlsCell,$list); + + + } + public function exportExcel($expTitle,$expCellName,$expTableData) + { + $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称 + $fileName = $expTitle.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定 + $cellNum = count($expCellName); + $dataNum = count($expTableData); + //vendor("PHPExcel.PHPExcel"); + import('PhpExcel', EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);//设置保存版本格式 + $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); + + + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格 + // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s')); + //$objPHPExcel->getActiveSheet(0)->getDefaueltRowDimension()->setRowHeight(15); + for($i=0;$i<$cellNum;$i++){ + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]); + } + // Miscellaneous glyphs, UTF-8 + for($i=0;$i<$dataNum;$i++){ + + + for($j=0;$j<$cellNum;$j++){ + + if($expTableData[$i]['d_pt_1']session('warn.warnmax1')){ + $objPHPExcel->getActiveSheet(0)->getStyle('B'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_2']session('warn.warnmax2')){ + $objPHPExcel->getActiveSheet(0)->getStyle('C'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_3']session('warn.warnmax3')){ + $objPHPExcel->getActiveSheet(0)->getStyle('D'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_1']session('warn.warnmax5')){ + $objPHPExcel->getActiveSheet(0)->getStyle('E'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_2']session('warn.warnmax6')){ + $objPHPExcel->getActiveSheet(0)->getStyle('F'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_3']session('warn.warnmax7')){ + $objPHPExcel->getActiveSheet(0)->getStyle('G'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_1']session('warn.warnmax10')){ + $objPHPExcel->getActiveSheet(0)->getStyle('H'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_2']session('warn.warnmax11')){ + $objPHPExcel->getActiveSheet(0)->getStyle('I'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_3']session('warn.warnmax12')){ + $objPHPExcel->getActiveSheet(0)->getStyle('J'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_1']session('warn.warnmax13')){ + $objPHPExcel->getActiveSheet(0)->getStyle('K'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_2']session('warn.warnmax15')){ + $objPHPExcel->getActiveSheet(0)->getStyle('L'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_3']session('warn.warnmax16')){ + $objPHPExcel->getActiveSheet(0)->getStyle('M'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]); + + } + //dump($expTableData[$i]['d_ct_1']); + } + + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="'.$xlsTitle.'.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + + + } + + +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/index/controller/TbEiact.php b/application/index/controller/TbEiact.php new file mode 100644 index 0000000..2c8cf39 --- /dev/null +++ b/application/index/controller/TbEiact.php @@ -0,0 +1,3 @@ + +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lOoy0CaSLDa1dk2OgC3OgHUffNmYlF3Ypd24Pk3fiFM4Vf2yZdM1iGeAmhUl7tJOvCMpWUynyGoYldt0+c2a0WBY0DbclA2ilcbWPHtLsNMflfyY0GBxlhtftkZ4PkoLqHZLpRT5mcbOod250htLsNMflfrYvdo9ZhtLsNmYlfryUO0wPk0coOLCXHeEXkZL7tm0hko9JDlnwAra4C2aSRT5mcbOnC3OpfMaTDoalftIXhU0+F2a0W2aSdycidualhtOjcBxSTMyscaSLDl0VhtOphzHpRtOlGunACBkScAOifoydkolfBZOlGunecBxSTMyscaSLDl1dHy1fhTShgWp9tMilCBOlFJImW29VfoaVft1AGbnlKJniFunSDBYifolvdJ92dMWVdbHscbijcBXmhTShDoaicoaZhtfed250cB50RAOpF3nvF2l0DB9VKJnifuOiC2iscB50K2cpdoaVCB1lNUwmRJO4duYADbOScU4mRmiSFZwmhTShDoaicoaZhtfeCBYPcU1ed250FM9SKJnsCbIsCBflNTEmhTShko9JDlfZDbOlFJ0+F2y2cUImFoiXKJ8vd3a0Fua0kZL7tMa4DbW7tm0hgWP= \ No newline at end of file diff --git a/application/index/controller/TbEif.php b/application/index/controller/TbEif.php new file mode 100644 index 0000000..dbf1afc --- /dev/null +++ b/application/index/controller/TbEif.php @@ -0,0 +1,177 @@ +where('eqmid',$id)->find(); + session('warn',$warn); + $this->assign('warn', $warn); + //var_dump(request()->param()); + $data = Db::table('data_eaif_h')->where('eqmid', $id)->where('capturetime', 'between time', [$sdate,$edate])->order('capturetime desc')->paginate(10,false,['query' => request()->param(),]); + $data1 = Db::table('data_eaif_h')->where('eqmid', $id)->where('capturetime', 'between time', [$sdate,$edate])->select(); + session('data',$data); + session('data1',$data1); + $this->assign('data', $data); + + return $this->fetch('tb_eif'); + } + + public function ExcelOne() + { + $list = session('data'); + //session(null); + //dump($list);die; + $xlsCell = array( + array('capturetime','时间'), + array('areatemp1','区域1温度'), + array('areatemp2','区域2温度'), + array('areatemp3','区域3温度'), + array('areatemp4','区域4温度') + ); + $this->exportExcel("当前数据导出",$xlsCell,$list); + + + } + public function ExcelAll() + { + $list = session('data1'); + + $xlsCell = array( + array('capturetime','时间'), + array('areatemp1','区域1温度'), + array('areatemp2','区域2温度'), + array('areatemp3','区域3温度'), + array('areatemp4','区域4温度') + ); + $this->exportExcel("全部数据导出",$xlsCell,$list); + + + } + public function exportExcel($expTitle,$expCellName,$expTableData) + { + $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称 + $fileName = $expTitle.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定 + $cellNum = count($expCellName); + $dataNum = count($expTableData); + //vendor("PHPExcel.PHPExcel"); + import('PhpExcel', EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);//设置保存版本格式 + $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); + + + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格 + // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s')); + //$objPHPExcel->getActiveSheet(0)->getDefaueltRowDimension()->setRowHeight(15); + for($i=0;$i<$cellNum;$i++){ + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]); + } + // Miscellaneous glyphs, UTF-8 + for($i=0;$i<$dataNum;$i++){ + + + for($j=0;$j<$cellNum;$j++){ + if($expTableData[$i]['areatemp1']session('warn.warnmax1')){ + $objPHPExcel->getActiveSheet(0)->getStyle('B'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['areatemp2']session('warn.warnmax2')){ + $objPHPExcel->getActiveSheet(0)->getStyle('C'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['areatemp3']session('warn.warnmax3')){ + $objPHPExcel->getActiveSheet(0)->getStyle('D'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['areatemp4']session('warn.warnmax4')){ + $objPHPExcel->getActiveSheet(0)->getStyle('E'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + + + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]); + + } + //dump($expTableData[$i]['d_ct_1']); + } + + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="'.$xlsTitle.'.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + + + } + +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/index/controller/TbEpa.php b/application/index/controller/TbEpa.php new file mode 100644 index 0000000..566a773 --- /dev/null +++ b/application/index/controller/TbEpa.php @@ -0,0 +1,3 @@ + +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 \ No newline at end of file diff --git a/application/index/controller/TbEpa1.php b/application/index/controller/TbEpa1.php new file mode 100644 index 0000000..17a3f4f --- /dev/null +++ b/application/index/controller/TbEpa1.php @@ -0,0 +1,137 @@ +where('eqmid', $id)->find(); + session('warn', $warn); + $this->assign('warn', $warn); + $data = Db::table('data_epa_h')->field('d_Time,CH4ppm,C2H4ppm,C2H6ppm,C2H2ppm,H2ppm,O2ppm,N2ppm,COppm,CO2ppm,Mstppm,CmbuGas,TotalHydrocarbon')->where('eqmid', $id)->where('d_Time', 'between time', [$sdate, $edate])->order('d_Time desc')->paginate(10, false, ['query' => request()->param(),]); + $data1 = Db::table('data_epa_h')->field('d_Time,CH4ppm,C2H4ppm,C2H6ppm,C2H2ppm,H2ppm,O2ppm,N2ppm,COppm,CO2ppm,Mstppm,CmbuGas,TotalHydrocarbon')->where('eqmid', $id)->where('d_Time', 'between time', [$sdate, $edate])->select(); + session('data', $data); + session('data1', $data1); + $this->assign('data', $data); + return $this->fetch('tb_epa1'); + } + + public function ExcelOne() { + $list = session('data'); + $xlsCell = array( + array('d_Time', '时间'), + array('CH4ppm', '甲烷含量'), + array('C2H4ppm', '乙烯含量'), + array('C2H6ppm', '乙烷含量'), + array('C2H2ppm', '乙炔含量'), + array('H2ppm', '氢气含量'), + array('O2ppm', '氧气含量'), + array('N2ppm', '氮气含量'), + array('COppm', '一氧化碳含量'), + array('CO2ppm', '二氧化碳含量'), + array('Mstppm', '微水含量'), + array('CmbuGas', '总可燃气体'), + array('TotalHydrocarbon', '总烃') + ); + $this->exportExcel("当前数据导出", $xlsCell, $list); + } + + public function ExcelAll() { + $list = session('data1'); + $xlsCell = array( + array('d_Time', '时间'), + array('CH4ppm', '甲烷含量'), + array('C2H4ppm', '乙烯含量'), + array('C2H6ppm', '乙烷含量'), + array('C2H2ppm', '乙炔含量'), + array('H2ppm', '氢气含量'), + array('O2ppm', '氧气含量'), + array('N2ppm', '氮气含量'), + array('COppm', '一氧化碳含量'), + array('CO2ppm', '二氧化碳含量'), + array('Mstppm', '微水含量'), + array('CmbuGas', '总可燃气体'), + array('TotalHydrocarbon', '总烃') + ); + $this->exportExcel("全部数据导出", $xlsCell, $list); + } + + public function exportExcel($expTitle, $expCellName, $expTableData) { + $xlsTitle = iconv('utf-8', 'gb2312', $expTitle); + $fileName = $expTitle . date('_YmdHis'); + $cellNum = count($expCellName); + $dataNum = count($expTableData); + import('PhpExcel', EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); + $cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ'); + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:' . $cellName[$cellNum - 1] . '1'); + for ($i = 0; $i < $cellNum; $i++) { + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i] . '2', $expCellName[$i][1]); + } + for ($i = 0; $i < $dataNum; $i++) { + for ($j = 0; $j < $cellNum; $j++) { + if ($expTableData[$i]['CH4ppm'] < session('warn.warnmin1') || $expTableData[$i]['CH4ppm'] > session('warn.warnmax1')) { + $objPHPExcel->getActiveSheet(0)->getStyle('B' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['C2H4ppm'] < session('warn.warnmin2') || $expTableData[$i]['C2H4ppm'] > session('warn.warnmax2')) { + $objPHPExcel->getActiveSheet(0)->getStyle('C' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['C2H6ppm'] < session('warn.warnmin3') || $expTableData[$i]['C2H6ppm'] > session('warn.warnmax3')) { + $objPHPExcel->getActiveSheet(0)->getStyle('D' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['C2H2ppm'] < session('warn.warnmin4') || $expTableData[$i]['C2H2ppm'] > session('warn.warnmax4')) { + $objPHPExcel->getActiveSheet(0)->getStyle('E' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['H2ppm'] < session('warn.warnmin5') || $expTableData[$i]['H2ppm'] > session('warn.warnmax5')) { + $objPHPExcel->getActiveSheet(0)->getStyle('F' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['O2ppm'] < session('warn.warnmin6') || $expTableData[$i]['O2ppm'] > session('warn.warnmax6')) { + $objPHPExcel->getActiveSheet(0)->getStyle('G' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['N2ppm'] < session('warn.warnmin7') || $expTableData[$i]['N2ppm'] > session('warn.warnmax7')) { + $objPHPExcel->getActiveSheet(0)->getStyle('H' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['COppm'] < session('warn.warnmin8') || $expTableData[$i]['COppm'] > session('warn.warnmax8')) { + $objPHPExcel->getActiveSheet(0)->getStyle('I' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['CO2ppm'] < session('warn.warnmin9') || $expTableData[$i]['CO2ppm'] > session('warn.warnmax9')) { + $objPHPExcel->getActiveSheet(0)->getStyle('J' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['Mstppm'] < session('warn.warnmin10') || $expTableData[$i]['Mstppm'] > session('warn.warnmax10')) { + $objPHPExcel->getActiveSheet(0)->getStyle('K' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['CmbuGas'] < session('warn.warnmin11') || $expTableData[$i]['CmbuGas'] > session('warn.warnmax11')) { + $objPHPExcel->getActiveSheet(0)->getStyle('L' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['TotalHydrocarbon'] < session('warn.warnmin12') || $expTableData[$i]['TotalHydrocarbon'] > session('warn.warnmax12')) { + $objPHPExcel->getActiveSheet(0)->getStyle('M' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j] . ($i + 3), $expTableData[$i][$expCellName[$j][0]]); + } + } + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="' . $xlsTitle . '.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + } + +} diff --git a/application/index/controller/TbEpa2.php b/application/index/controller/TbEpa2.php new file mode 100644 index 0000000..59ad653 --- /dev/null +++ b/application/index/controller/TbEpa2.php @@ -0,0 +1,97 @@ +where('eqmid', $id)->find(); + session('warn', $warn); + $this->assign('warn', $warn); + $data = Db::table('data_epa_h')->field('d_Time,cmbugas,tmp,dew,mstppm')->where('eqmid', $id)->where('d_Time', 'between time', [$sdate, $edate])->order('d_Time desc')->paginate(10, false, ['query' => request()->param(),]); + $data1 = Db::table('data_epa_h')->field('d_Time,cmbugas,tmp,dew,mstppm')->where('eqmid', $id)->where('d_Time', 'between time', [$sdate, $edate])->select(); + session('data', $data); + session('data1', $data1); + $this->assign('data', $data); + return $this->fetch('tb_epa2'); + } + + public function ExcelOne() { + $list = session('data'); + $xlsCell = array( + array('d_Time', '时间'), + array('cmbugas', '总烃'), + array('tmp', '温度'), + array('dew', '湿度'), + array('mstppm', '微水含量') + ); + $this->exportExcel("当前数据导出", $xlsCell, $list); + } + + public function ExcelAll() { + $list = session('data1'); + $xlsCell = array( + array('d_Time', '时间'), + array('cmbugas', '总烃'), + array('tmp', '温度'), + array('dew', '湿度'), + array('mstppm', '微水含量') + ); + $this->exportExcel("全部数据导出", $xlsCell, $list); + } + + public function exportExcel($expTitle, $expCellName, $expTableData) { + $xlsTitle = iconv('utf-8', 'gb2312', $expTitle); + $fileName = $expTitle . date('_YmdHis'); + $cellNum = count($expCellName); + $dataNum = count($expTableData); + import('PhpExcel', EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); + $cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ'); + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:' . $cellName[$cellNum - 1] . '1'); + for ($i = 0; $i < $cellNum; $i++) { + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i] . '2', $expCellName[$i][1]); + } + for ($i = 0; $i < $dataNum; $i++) { + for ($j = 0; $j < $cellNum; $j++) { + if ($expTableData[$i]['cmbugas'] < session('warn.warnmin1') || $expTableData[$i]['cmbugas'] > session('warn.warnmax1')) { + $objPHPExcel->getActiveSheet(0)->getStyle('B' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['tmp'] < session('warn.warnmin2') || $expTableData[$i]['tmp'] > session('warn.warnmax2')) { + $objPHPExcel->getActiveSheet(0)->getStyle('C' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['dew'] < session('warn.warnmin3') || $expTableData[$i]['dew'] > session('warn.warnmax3')) { + $objPHPExcel->getActiveSheet(0)->getStyle('D' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['mstppm'] < session('warn.warnmin4') || $expTableData[$i]['mstppm'] > session('warn.warnmax4')) { + $objPHPExcel->getActiveSheet(0)->getStyle('E' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j] . ($i + 3), $expTableData[$i][$expCellName[$j][0]]); + } + } + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="' . $xlsTitle . '.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + } + +} diff --git a/application/index/controller/TbEtp.php b/application/index/controller/TbEtp.php new file mode 100644 index 0000000..45c3a14 --- /dev/null +++ b/application/index/controller/TbEtp.php @@ -0,0 +1,3 @@ + +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pREpiFmkiGUImferZkZXmH+MbVKBwIrNmM7jPp6dlpRWmhWLktJL7tJO0DolzRT5lGunvFmOyGoYldtIJ5d2T5CMY5pBX5P2V5D+85CG6wJXLGoxzW2aSdtXLdolzftL7tm0hFuaJdoljwoc1dMY0DB9Vwra4C2aSWBxShtLhGXPLdolzftE9wuYlF3Ypd24Pk2OiforxkZL7tJO4duYecBxSwtE9woyZFMy5hEpiFmkiGUImcy90DB1lkZXm5pG26cG0kZLStMyZFMy5htf0HUFSk0umM7jLVwqPp6dlpRWmhUXhCbkZCbLPk3WZkZXmWVGdVKU4JVJmpVBLstFpREpiFmkiGUImfeHmRtfe55V45RJh6hGM5DU0kZLStMyZFMy5htf0YtFSk0umM7jLVwvPp6dlpRWmhUXhCbkZCbLPk3W1kZXmWVGdVKU4J+JmpVBLstFpREpiFmkiGUImfeCmRtfe55V45RJR6hGM5DU0kZLStMyZFMy5htf0YZFSkzupl7jlJwnn55V46hGM5DU0kZLStMyZFMy5htf0KtFSkzupl7jlJwnt55V46hGM5DU0kZLStMyZFMy5htf0KUFSkzupl7jlJwne55V46hGM5DU0kZLStMyZFMy5htf0HTEmRtFz6cG45CJEWGGdVKJmpVBLstFpREpiFmkiGUImferxkZXmH+MbVKBwIrRmM7jPp6dlpRWmhUXhCbkZCbLPk3WxHJFSkzNpl7jlJwne55V46hGM5DU0kZLktWPpKXPLfoipFZ0+cbiXd3k0ObijcBXPwVByQKMeQKDaSKDYqVBvvKBuVJwSkuiSF0YldoXSkoxpF3WpKXp9tmn1CMxpCZnMfB5jfolvdJnlGunvFmOyGoYldtILcbiXaol0doASkoa4FrYldoxKCB1lRtOlGunACBkScAOiforptmShkuiSF1Opfoxlwe0IDBYvdmCPk3a0cJ04kZXmc2wZHzrZkZXLcbiXaol0doApKXPLcMlScA5idBAINUELcbiXaol0doAVcoy0cUImb1lscripFZFpKXPLC2aSdr51dUE9woYvfB50htOlGunecBxSTMyscUL7tJOLCbOiTmaswe0IC291dmWPkoa4FyOiCMxlOoy0CUL7tMlsFo9ZftImAoiXObijcBXmRraCaraKOy9WWaOwhTShko9JDlnwAra4C2a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ed2xvFJIpRT5zcbOnALfthtfoOLcoHeEXHtFpKXp9tMlMhtOlGunACBkScAOifoydkolfBZf0HTrmbTxzcbYzDB9Vhtf3CbkVRmfiFM5sDB4xHUFpwux8koa4FyOiCMxlOoy0CaSLDa1dk3WxHUffNmYlF3Ypd24Pk3fiFM4Vf2yZdM1iGerxkZLpGXPLd2kQAriWObijcBXsNMflfryjfol2caYPcBa0heEpRT5mcbOTfulScUImTtFVhtOphzHphU0+c2a0OM9VftIpRT5mcbOed2xvFJIpRT5zcbOnALfthtfoOLcoHeEXHtFpKXp9tMlMhtOlGunACBkScAOifoydkolfBZf0HTwmbTxzcbYzDB9Vhtf3CbkVRmfiFM5sDB4xHJFpwux8koa4FyOiCMxlOoy0CaSLDa1dk3WxHJffNmYlF3Ypd24Pk3fiFM4Vf2yZdM1iGerZkZLpGXPLd2kQAriWObijcBXsNMflfryjfol2caYPcBa0heEpRT5mcbOTfulScUImTUFVhtOphzHphU0+c2a0OM9VftIpRT5mcbOed2xvFJIpRT5zcbOnALfthtfoOLcoHeEXHtFpKXp9tJOvCMpWUynyGoYldt0+c2a0WBY0DbclA2ilcbWPHtLsNmYlfrYldoxBCBx1cUILC2aSdr5idBadkopfRJILDUSzhUXLcbiXaoyJdoarCbOiBZOpbaSLcbiXW2aSdr5idBadkopfBznfbUL7tm0hgWpPcByLcbwPk0YvdmOldmWsaulXcTPICbnXdoljCbOpd24vfM5LRM1zRBa4C2aSkZL7tMilCBOlFJImW29VfoaVft1rDbYXd3YpfolvdjPICbO0CBYPdBaVfesMDBxldMyscT0JkZ4LGoxzaol0doAVkZ54duHJkZL7tMilCBOlFJImW2yjDoAsW29VfukvdePIdBy4RBymcT0XkZL7tJOvCMpbFMl0cbwsNmYifMAPk3nPFePvR291fun1ftFpKXplGol0KXp9tm0h \ No newline at end of file diff --git a/application/index/controller/TbEtpGxcw.php b/application/index/controller/TbEtpGxcw.php new file mode 100644 index 0000000..1daf13e --- /dev/null +++ b/application/index/controller/TbEtpGxcw.php @@ -0,0 +1,157 @@ +where('eqmid', $id)->find(); + session('warn', $warn); + $this->assign('warn', $warn); + $data = Db::table('data_etp_h')->field('d_Time,t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16')->where('eqmid', $id)->where('d_Time', 'between time', [$sdate, $edate])->order('d_Time desc')->paginate(10, false, ['query' => request()->param(),]); + $data1 = Db::table('data_etp_h')->field('d_Time,t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16')->where('eqmid', $id)->where('d_Time', 'between time', [$sdate, $edate])->select(); + session('data', $data); + session('data1', $data1); + $this->assign('data', $data); + return $this->fetch('tb_etp_gxcw'); + } + + public function ExcelOne() { + $list = session('data'); + $xlsCell = array( + array('d_Time', '时间'), + array('t1', '1通道温度'), + array('t2', '2通道温度'), + array('t3', '3通道温度'), + array('t4', '4通道温度'), + array('t5', '5通道温度'), + array('t6', '6通道温度'), + array('t7', '7通道温度'), + array('t8', '8通道温度'), + array('t9', '9通道温度'), + array('t10', '10通道温度'), + array('t11', '11通道温度'), + array('t12', '12通道温度'), + array('t13', '13通道温度'), + array('t14', '14通道温度'), + array('t15', '15通道温度'), + array('t16', '16通道温度') + ); + $this->exportExcel("当前数据导出", $xlsCell, $list); + } + + public function ExcelAll() { + $list = session('data1'); + $xlsCell = array( + array('d_Time', '时间'), + array('t1', '1通道温度'), + array('t2', '2通道温度'), + array('t3', '3通道温度'), + array('t4', '4通道温度'), + array('t5', '5通道温度'), + array('t6', '6通道温度'), + array('t7', '7通道温度'), + array('t8', '8通道温度'), + array('t9', '9通道温度'), + array('t10', '10通道温度'), + array('t11', '11通道温度'), + array('t12', '12通道温度'), + array('t13', '13通道温度'), + array('t14', '14通道温度'), + array('t15', '15通道温度'), + array('t16', '16通道温度') + ); + $this->exportExcel("全部数据导出", $xlsCell, $list); + } + + public function exportExcel($expTitle, $expCellName, $expTableData) { + $xlsTitle = iconv('utf-8', 'gb2312', $expTitle); + $fileName = $expTitle . date('_YmdHis'); + $cellNum = count($expCellName); + $dataNum = count($expTableData); + import('PhpExcel', EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); + $cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ'); + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:' . $cellName[$cellNum - 1] . '1'); + for ($i = 0; $i < $cellNum; $i++) { + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i] . '2', $expCellName[$i][1]); + } + for ($i = 0; $i < $dataNum; $i++) { + for ($j = 0; $j < $cellNum; $j++) { + if ($expTableData[$i]['t1'] < session('warn.warnmin1') || $expTableData[$i]['t1'] > session('warn.warnmax1')) { + $objPHPExcel->getActiveSheet(0)->getStyle('B' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t2'] < session('warn.warnmin2') || $expTableData[$i]['t2'] > session('warn.warnmax2')) { + $objPHPExcel->getActiveSheet(0)->getStyle('C' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t3'] < session('warn.warnmin3') || $expTableData[$i]['t3'] > session('warn.warnmax3')) { + $objPHPExcel->getActiveSheet(0)->getStyle('D' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t4'] < session('warn.warnmin4') || $expTableData[$i]['t4'] > session('warn.warnmax4')) { + $objPHPExcel->getActiveSheet(0)->getStyle('E' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t5'] < session('warn.warnmin5') || $expTableData[$i]['t5'] > session('warn.warnmax5')) { + $objPHPExcel->getActiveSheet(0)->getStyle('F' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t6'] < session('warn.warnmin6') || $expTableData[$i]['t6'] > session('warn.warnmax6')) { + $objPHPExcel->getActiveSheet(0)->getStyle('G' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t7'] < session('warn.warnmin7') || $expTableData[$i]['t7'] > session('warn.warnmax7')) { + $objPHPExcel->getActiveSheet(0)->getStyle('H' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t8'] < session('warn.warnmin8') || $expTableData[$i]['t8'] > session('warn.warnmax8')) { + $objPHPExcel->getActiveSheet(0)->getStyle('I' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t9'] < session('warn.warnmin9') || $expTableData[$i]['t9'] > session('warn.warnmax9')) { + $objPHPExcel->getActiveSheet(0)->getStyle('J' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t10'] < session('warn.warnmin10') || $expTableData[$i]['t10'] > session('warn.warnmax10')) { + $objPHPExcel->getActiveSheet(0)->getStyle('K' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t11'] < session('warn.warnmin11') || $expTableData[$i]['t11'] > session('warn.warnmax11')) { + $objPHPExcel->getActiveSheet(0)->getStyle('L' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t12'] < session('warn.warnmin12') || $expTableData[$i]['t12'] > session('warn.warnmax12')) { + $objPHPExcel->getActiveSheet(0)->getStyle('M' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t13'] < session('warn.warnmin13') || $expTableData[$i]['t13'] > session('warn.warnmax13')) { + $objPHPExcel->getActiveSheet(0)->getStyle('J' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t14'] < session('warn.warnmin14') || $expTableData[$i]['t14'] > session('warn.warnmax14')) { + $objPHPExcel->getActiveSheet(0)->getStyle('K' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t15'] < session('warn.warnmin15') || $expTableData[$i]['t15'] > session('warn.warnmax15')) { + $objPHPExcel->getActiveSheet(0)->getStyle('L' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t16'] < session('warn.warnmin16') || $expTableData[$i]['t16'] > session('warn.warnmax16')) { + $objPHPExcel->getActiveSheet(0)->getStyle('M' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j] . ($i + 3), $expTableData[$i][$expCellName[$j][0]]); + } + } + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="' . $xlsTitle . '.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + } + +} diff --git a/application/index/controller/TbEtpRzcw.php b/application/index/controller/TbEtpRzcw.php new file mode 100644 index 0000000..1207cab --- /dev/null +++ b/application/index/controller/TbEtpRzcw.php @@ -0,0 +1,157 @@ +where('eqmid', $id)->find(); + session('warn', $warn); + $this->assign('warn', $warn); + $data = Db::table('data_etp_h')->field('d_Time,t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16')->where('eqmid', $id)->where('d_Time', 'between time', [$sdate, $edate])->order('d_Time desc')->paginate(10, false, ['query' => request()->param(),]); + $data1 = Db::table('data_etp_h')->field('d_Time,t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16')->where('eqmid', $id)->where('d_Time', 'between time', [$sdate, $edate])->select(); + session('data', $data); + session('data1', $data1); + $this->assign('data', $data); + return $this->fetch('tb_etp_rzcw'); + } + + public function ExcelOne() { + $list = session('data'); + $xlsCell = array( + array('d_Time', '时间'), + array('t1', '1通道温度'), + array('t2', '2通道温度'), + array('t3', '3通道温度'), + array('t4', '4通道温度'), + array('t5', '5通道温度'), + array('t6', '6通道温度'), + array('t7', '7通道温度'), + array('t8', '8通道温度'), + array('t9', '9通道温度'), + array('t10', '10通道温度'), + array('t11', '11通道温度'), + array('t12', '12通道温度'), + array('t13', '13通道温度'), + array('t14', '14通道温度'), + array('t15', '15通道温度'), + array('t16', '16通道温度') + ); + $this->exportExcel("当前数据导出", $xlsCell, $list); + } + + public function ExcelAll() { + $list = session('data1'); + $xlsCell = array( + array('d_Time', '时间'), + array('t1', '1通道温度'), + array('t2', '2通道温度'), + array('t3', '3通道温度'), + array('t4', '4通道温度'), + array('t5', '5通道温度'), + array('t6', '6通道温度'), + array('t7', '7通道温度'), + array('t8', '8通道温度'), + array('t9', '9通道温度'), + array('t10', '10通道温度'), + array('t11', '11通道温度'), + array('t12', '12通道温度'), + array('t13', '13通道温度'), + array('t14', '14通道温度'), + array('t15', '15通道温度'), + array('t16', '16通道温度') + ); + $this->exportExcel("全部数据导出", $xlsCell, $list); + } + + public function exportExcel($expTitle, $expCellName, $expTableData) { + $xlsTitle = iconv('utf-8', 'gb2312', $expTitle); + $fileName = $expTitle . date('_YmdHis'); + $cellNum = count($expCellName); + $dataNum = count($expTableData); + import('PhpExcel', EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); + $cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ'); + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:' . $cellName[$cellNum - 1] . '1'); + for ($i = 0; $i < $cellNum; $i++) { + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i] . '2', $expCellName[$i][1]); + } + for ($i = 0; $i < $dataNum; $i++) { + for ($j = 0; $j < $cellNum; $j++) { + if ($expTableData[$i]['t1'] < session('warn.warnmin1') || $expTableData[$i]['t1'] > session('warn.warnmax1')) { + $objPHPExcel->getActiveSheet(0)->getStyle('B' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t2'] < session('warn.warnmin2') || $expTableData[$i]['t2'] > session('warn.warnmax2')) { + $objPHPExcel->getActiveSheet(0)->getStyle('C' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t3'] < session('warn.warnmin3') || $expTableData[$i]['t3'] > session('warn.warnmax3')) { + $objPHPExcel->getActiveSheet(0)->getStyle('D' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t4'] < session('warn.warnmin4') || $expTableData[$i]['t4'] > session('warn.warnmax4')) { + $objPHPExcel->getActiveSheet(0)->getStyle('E' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t5'] < session('warn.warnmin5') || $expTableData[$i]['t5'] > session('warn.warnmax5')) { + $objPHPExcel->getActiveSheet(0)->getStyle('F' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t6'] < session('warn.warnmin6') || $expTableData[$i]['t6'] > session('warn.warnmax6')) { + $objPHPExcel->getActiveSheet(0)->getStyle('G' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t7'] < session('warn.warnmin7') || $expTableData[$i]['t7'] > session('warn.warnmax7')) { + $objPHPExcel->getActiveSheet(0)->getStyle('H' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t8'] < session('warn.warnmin8') || $expTableData[$i]['t8'] > session('warn.warnmax8')) { + $objPHPExcel->getActiveSheet(0)->getStyle('I' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t9'] < session('warn.warnmin9') || $expTableData[$i]['t9'] > session('warn.warnmax9')) { + $objPHPExcel->getActiveSheet(0)->getStyle('J' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t10'] < session('warn.warnmin10') || $expTableData[$i]['t10'] > session('warn.warnmax10')) { + $objPHPExcel->getActiveSheet(0)->getStyle('K' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t11'] < session('warn.warnmin11') || $expTableData[$i]['t11'] > session('warn.warnmax11')) { + $objPHPExcel->getActiveSheet(0)->getStyle('L' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t12'] < session('warn.warnmin12') || $expTableData[$i]['t12'] > session('warn.warnmax12')) { + $objPHPExcel->getActiveSheet(0)->getStyle('M' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t13'] < session('warn.warnmin13') || $expTableData[$i]['t13'] > session('warn.warnmax13')) { + $objPHPExcel->getActiveSheet(0)->getStyle('J' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t14'] < session('warn.warnmin14') || $expTableData[$i]['t14'] > session('warn.warnmax14')) { + $objPHPExcel->getActiveSheet(0)->getStyle('K' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t15'] < session('warn.warnmin15') || $expTableData[$i]['t15'] > session('warn.warnmax15')) { + $objPHPExcel->getActiveSheet(0)->getStyle('L' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if ($expTableData[$i]['t16'] < session('warn.warnmin16') || $expTableData[$i]['t16'] > session('warn.warnmax16')) { + $objPHPExcel->getActiveSheet(0)->getStyle('M' . ($i + 3))->getFont()->getColor()->setARGB('FFFF0000'); + } + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j] . ($i + 3), $expTableData[$i][$expCellName[$j][0]]); + } + } + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="' . $xlsTitle . '.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + } + +} diff --git a/application/index/controller/TbJdw.php b/application/index/controller/TbJdw.php new file mode 100644 index 0000000..b8bae88 --- /dev/null +++ b/application/index/controller/TbJdw.php @@ -0,0 +1,145 @@ +where('eqmid',$id)->find(); + session('warn',$warn); + $this->assign('warn', $warn); + */ + + //var_dump(request()->param()); + $data = Db::table('data_jdw_h')->field('d_time,resistance')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->order('d_time desc')->paginate(10,false,['query' => request()->param()]); + $data1 = Db::table('data_jdw_h')->field('d_time,resistance')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->select(); + + session('data',$data); + session('data1',$data1); + $this->assign('data', $data); + + return $this->fetch('tb_jdw'); + } + + + public function ExcelOne() + { + $list = session('data'); + //session(null); + //dump($list);die; + $xlsCell = array( + array('d_time','时间'), + array('resistance','电阻值') + ); + $this->exportExcel("当前数据导出",$xlsCell,$list); + + + } + public function ExcelAll() + { + $list = session('data1'); + + $xlsCell = array( + array('d_time','时间'), + array('resistance','电阻值') + ); + $this->exportExcel("全部数据导出",$xlsCell,$list); + + + } + public function exportExcel($expTitle,$expCellName,$expTableData) + { + $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称 + $fileName = $expTitle.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定 + $cellNum = count($expCellName); + $dataNum = count($expTableData); + //vendor("PHPExcel.PHPExcel"); + import('PhpExcel', EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);//设置保存版本格式 + $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); + + + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格 + // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s')); + //$objPHPExcel->getActiveSheet(0)->getDefaueltRowDimension()->setRowHeight(15); + for($i=0;$i<$cellNum;$i++){ + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]); + } + // Miscellaneous glyphs, UTF-8 + for($i=0;$i<$dataNum;$i++){ + + + for($j=0;$j<$cellNum;$j++){ + + /*if($expTableData[$i]['d_pt_1']session('warn.warnmax1')){ + $objPHPExcel->getActiveSheet(0)->getStyle('B'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_2']session('warn.warnmax2')){ + $objPHPExcel->getActiveSheet(0)->getStyle('C'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_3']session('warn.warnmax3')){ + $objPHPExcel->getActiveSheet(0)->getStyle('D'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_1']session('warn.warnmax5')){ + $objPHPExcel->getActiveSheet(0)->getStyle('E'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_2']session('warn.warnmax6')){ + $objPHPExcel->getActiveSheet(0)->getStyle('F'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_3']session('warn.warnmax7')){ + $objPHPExcel->getActiveSheet(0)->getStyle('G'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_1']session('warn.warnmax10')){ + $objPHPExcel->getActiveSheet(0)->getStyle('H'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_2']session('warn.warnmax11')){ + $objPHPExcel->getActiveSheet(0)->getStyle('I'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_3']session('warn.warnmax12')){ + $objPHPExcel->getActiveSheet(0)->getStyle('J'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_1']session('warn.warnmax13')){ + $objPHPExcel->getActiveSheet(0)->getStyle('K'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_2']session('warn.warnmax15')){ + $objPHPExcel->getActiveSheet(0)->getStyle('L'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_3']session('warn.warnmax16')){ + $objPHPExcel->getActiveSheet(0)->getStyle('M'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + */ + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]); + + } + //dump($expTableData[$i]['d_ct_1']); + } + + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="'.$xlsTitle.'.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + + + } + + +} + diff --git a/application/index/controller/TbMic.php b/application/index/controller/TbMic.php new file mode 100644 index 0000000..70c2c00 --- /dev/null +++ b/application/index/controller/TbMic.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFDB5LcbiFC29VfukvdoxlFjShfbYlwuOPDB5qbrYvdmOZd2xScbw7tmazcUn0DolVD1xrCjShfbYlwuOPDB5qbyklFbalF3W7tMYSCbYzwtnACL1pCZnlGuOldMOzwrYvdmOZd2xScbwhGXpXfBkSDBHIcmaVC3Opd24IDB5LcbIPhWp7tJOlcoy0cT1LCbOlhtkcRB0sctwpKXPLF2OifoA9coy0cUImBU1sRBWmRuY0FmOvfolscUIJkoaLCbOlwt0xwo1vdmOPwJLpKXppcJEPwBasFuO5htOgO0aABZfzfolscUffhULIGXPLF2OifoA9ky9uOaOdk3Y0DB1lk107tm0hDBCIhtyldbn0GUILb0fyaySmcbOpdBAmbULpwuShkoaLCbOlNbY1CmY0FJILb0fyaySmcbOpdBAmbUXXRerXhTShkoaLCbOlNBOifoAPwlLsdU1LwJxzfuk0d3OpdBAPwJOlcoy0cUEqHUnLCbLJhUL7tm0hDBCIhoasFuO5htOgO0aABZfpctffhULIcollhtgMl6eMlCjmMPTmvkdlj7FmhTShkolLwe0Iky9uOaOdk2lLk107tJO3CbkVNAOJKjp0CBkScUImf2yZdl9jcMFmhU0+f2ilFMAPk2axdBlLkZXLDBWpRT5MDB5LhtL7tmYlF3Ypd24Pk3fiFM4mRtO3CbkVhTShkuOPDbHsNMyzF2lmdJImf2yZdJFSkufiFM4pKXPLcoy0CUE9wrOJKjp0CBkScUImcoy0Ca9sDBYZd2YSDB1ifoagDtFpRT5MDBaSctImcy90DB1lRoaVfmOsFtxldmcPfB0Sf2OmfbY0F3nLRoaVfmnZcbHSf2OLDbwSFM5MdoXmhU0+f2ilFMAPk2axdBlLkZXLDBWpRT53DoaZcUImcy90DB1lkZXmCMa0f2aldJn0DB1lkZxdkuYLCbOlRtOlcoy0ca0pRT5vFMOlFJImcy90DB1lwoOlF2HmhU0+FoymDB5ifoAPHTEScMySF2ASBZfxfBaZGUF9NmklFbalF3WPhU0+FoyZCB0PhUxfhTShkoOiforxwe0IOow6KmOiCMxlhtfLCbOib21pC3kvC2xpdBy0ca9PkZLsNMcpcBxLhtfLb3OpdBAScB52fo1XRoaVfMi1dUx3cof1F3OzFoWScB52FuklFZx3coOpFJxZdMcSdtFpRT53DoaZcUImcbysDBWmRtOpctLsNmfPcbklhtfLb3OpdBAmRtfJcbO3cBaVwuOpdBAmRySLF2OifoASkoaLCbOlbULsNmYldoajftIpKXpzcbYzDB9VhtfLCbOikZXLcoy0CUL7tmYlF3Ypd24Pk2OiforxkZXLcoy0CTrpKXPLfoipFZ0+CbYzDBfVhtfLCbOikZXLcoy0CUL7tmklfuaZdJELfoipFZ0+cMa0C2IPk3OJb21pCZFpKXp9tmn1CMxpCZnMfB5jfolvdJnyGoYldr9VcUIptmShkoxpF3WINUnzcbYzDB9VhtfLCbOikZL7tJO4duYecBxSwtE9woyZFMy5hEpiFmkiGUImcy90DB1lkZXm5pG26cG0kZLStMyZFMy5htfldmc0dbEmRtgMVhmlVQCmhUXhCbkZCbLPk2aVfMi1dUFSk+D5v+B6pJFpREpiFmkiGUImf2OmfbY0F3nLkZXm6DKK6CtgkZLStMyZFMy5htfldmcXFMazkZXm5qtA5C6RkZLStMyZFMy5htf3coOpFJFSk+MjjVBWLUFpREpiFmkiGUImFM5MdoXmRtgpM6jpi48mhWLhhTShkuOPDbHsNMa4Fo9Zfra4C2aShtRlvcNlJC3MldeMjD7lq7zli7PJRtO4duYecBxSRtOSDbY0hTShgWpXfBkSDBHIcmaVC3Opd24IObijcBxndoXPhWp7tJOSDbY0we0IF2azF2lvdJImcoy0CTrmhTShkuiSF0YldoXIwe0ICbkZCbLPtMyZFMy5htfLb3OpdBAmRtgMl7dpl7WmhUXhCbkZCbLPk2aVfmOsFtFSk+D4QGB6pJFpREpiFmkiGUImcB52DuaskZXm5qM/5dQMkZLStMyZFMy5htf3cof1F3OzFoWmRtgpP47pIk8mhUXhCbkZCbLPk2aVfmnZcbHmRtgMSkTljPSmhUXhCbkZCbLPk3fLcolZkZXm6DKK5ctOkZLStMyZFMy5htfZdMcSdtFSk+MdQKMujZFptWPpKXPLfoipFZ0+cbiXd3k0ObijcBXPwVByQKMeQKDaSKDYqVBvvKBuVJwSkuiSF0YldoXSkoxpF3WpKXp9tmn1CMxpCZnMfB5jfolvdJnlGunvFmOyGoYldtILcbiXaol0doASkoa4FrYldoxKCB1lRtOlGunACBkScAOiforptmShkuiSF1Opfoxlwe0IDBYvdmCPk3a0cJ04kZXmc2wZHzrZkZXLcbiXaol0doApKXPLcMlScA5idBAINUELcbiXaol0doAVcoy0cUImb1lscripFZFpKXPLC2aSdr51dUE9woYvfB50htOlGunecBxSTMyscUL7tJOLCbOiTmaswe0IC291dmWPkoa4FyOiCMxlOoy0CUL7tMlsFo9ZftImAoiXObijcBXmRraCaraKOy9WWaOwhTShko9JDlnwAra4C2aSwe0IdMa3wyxWDunyGoYldtIpKXPLd2kQa3kpfoaZwe0IdMa3wyxWUynyGoYldy9bFMl0cbkgObijcBX1htOvCMpWUynyGoYldtL7tJOjcBxSTMyscUE9woyZFMy5htfnkZXmWJFSk0HmRtfrkZXmOUFSk0CmRtfukZXmUtFSk0LmRtfhkZXmUZFSk0XmRtfYkZXmTJFSk08mRtfWkZXmAUFSk1wmRtfTkZXmatFSk1AmRtfBkZXmaZFSk1ImRtfckZXmBJFSk0ynkZXmWAwmRtfnWZFSk0yrkZXmWAAmRtfnOJFSk0yukZXmWAImRtfnUUFSk0yhkZXmWASmRtfnTtFSk0yYkZXmWA4mRtfnTZFSk0yWkZXmWarmRtfnAJFSk0yTkZXmWaWmRtfnaUFSk0yBkZXmWaFmRtfnBtFSk0yckZXmWaPmhTShko9JDlnwAra4C2aSRT5mcbOnC3OpfMaTDoalftIXhU0+dBaZc2aecBxSFZImWTr6kZ4LC2aSdr5idBadkoYldoxKfB0sHa0VkzrmhTShcM9ZhtOpNTE7koL8koYldoxKfB07koLqhZl7tJOvCMpWUynyGoYldt0+c2a0WBY0DbclA2ilcbWPHtLsNMflfrYvduasdLOpdBaVF2lvdJILC2aSdr5idBadkolfhU0+F2a0a2lLfoIPHTIpKXPLd2kQAriWObijcBXsNmYlfryjfol2caYPcBa0UB5LcbIPHtLsNmYlfrYldoxBCBx1cUILC2aSdr5idBadkolfRJFZkZXLcbiXW2aSdr5idBadkolfBzyfhTShgWpMd3wPkoL9HeSLDTXLcoy0CA51dTSLDUSqhbShcM9ZhtOQNTE7koP8koYldoxKfB07koPqhZl7tMlMhtOlGunACBkScAOifoydkolfBZfldmc0dbEmbTxzcbYzDB9Vhtf3CbkVRmfiFM5sDB4xkZLIguXLcbiXaoyJdoarCbOiBZOpbaSmcB52fo1Xk10+F2azF2lvdJImf2yZdJ53CbkVdBy4HUFphbShko9JDlnwAra4C2aSRT5mcbOnC3OpfMaTDoalftIXhU0+c2a0A3O5doAPk0wmRJILDUSzhULsNMflfrcvdmWPhU0+c2a0W29Sd3wPhU0+F2a0WakuWJImOLcoOjEXHeEmhTShgWppcJILcbiXaoyJdoarCbOiBZOpbaSmcB52Duask108F2azF2lvdJImf2yZdJ53CbkVdBlVHJFpwux8koa4FyOiCMxlOoy0CaSLDa1dk2aVfMi1dUffNmYlF3Ypd24Pk3fiFM4Vf2yZdM1iGewmhUl7tJOvCMpWUynyGoYldt0+c2a0WBY0DbclA2ilcbWPHtLsNMflfyY0GBxlhtfekZ4PkoLqHZLpRT5mcbOod250htLsNMflfrYvdo9ZhtLsNmYlfryUO0wPk0coOLCXHeEXkZL7tm0hDBCPkoa4FyOiCMxlOoy0CaSLDa1dk3fLc3azfuYXctffNuYlF3Ypd24Pk3fiFM4Vf2yZdM1pdjHmhUn8gtOlGunACBkScAOifoydkolfBZf3cof1F3OzFoWmbT5zcbYzDB9Vhtf3CbkVRmfiFM5sCbIzkZLpGXPLd2kQAriWObijcBXsNMflfryjfol2caYPcBa0heEpRT5mcbOTfulScUImOtFVhtOphzHphU0+c2a0OM9VftIpRT5mcbOed2xvFJIpRT5zcbOnALfthtfoOLcoHeEXHtFpKXp9tMlMhtOlGunACBkScAOifoydkolfBZfldmcXFMazk108F2azF2lvdJImf2yZdJ53CbkVdBlVYtFpwux8koa4FyOiCMxlOoy0CaSLDa1dk2aVfmnZcbHmbT5zcbYzDB9Vhtf3CbkVRmfiFM5sCbI0kZLpGXPLd2kQAriWObijcBXsNMflfryjfol2caYPcBa0heEpRT5mcbOTfulScUImOUFVhtOphzHphU0+c2a0OM9VftIpRT5mcbOed2xvFJIpRT5zcbOnALfthtfoOLcoHeEXHtFpKXp9tMlMhtOlGunACBkScAOifoydkolfBZf3coOpFJffNuYlF3Ypd24Pk3fiFM4Vf2yZdM1pdjAmhUn8gtOlGunACBkScAOifoydkolfBZf3coOpFJffNmYlF3Ypd24Pk3fiFM4Vf2yZdM1iGeAmhUl7tJOvCMpWUynyGoYldt0+c2a0WBY0DbclA2ilcbWPHtLsNMflfyY0GBxlhtfokZ4PkoLqHZLpRT5mcbOod250htLsNMflfrYvdo9ZhtLsNmYlfryUO0wPk0coOLCXHeEXkZL7tm0hDBCPkoa4FyOiCMxlOoy0CaSLDa1dk3kVcMxSk108F2azF2lvdJImf2yZdJ53CbkVdBlVYJFpwux8koa4FyOiCMxlOoy0CaSLDa1dk3kVcMxSk10+F2azF2lvdJImf2yZdJ53CbkVdBy4YJFphbShko9JDlnwAra4C2aSRT5mcbOnC3OpfMaTDoalftIXhU0+c2a0A3O5doAPk0FmRJILDUSzhULsNMflfrcvdmWPhU0+c2a0W29Sd3wPhU0+F2a0WakuWJImOLcoOjEXHeEmhTShgWPLd2kQAriWObijcBXsNMflfryjfol2caYPcBa0heEpRT5zcbOecBxSaMySfBAPkoYldoxKCB1lBZOQbU4PkoLqHZLSkoa4FyOiCMxlOoy0CaSLDa1dkoa4FrYldoxKCB1lBZOQbaSXba0pKXp9tm0hDoaicoaZhtfed250cB50RaO5FoA6woyXFoxpC2y0DB9VR3cVct5sFZ1lGoYldtFpKXpPcByLcbwPk0YvdmOldmWsOolzFo9zDbOpd246woy0foyjDo1ldmW7cMlScB5idBA9wJFVkuiSF1OpfoxlRJFVGoxzwJFpKXpPcByLcbwPk0YiC2ilRAYvdmOZd2X6wo1iGt1ic2A9HtFpKXPLd2kQa3kpfoaZRT5zCbclhtfXDuE6RZ9vfbOXfbWmhTShcbipfeShgWp9tI== \ No newline at end of file diff --git a/application/index/controller/TbMoa.php b/application/index/controller/TbMoa.php new file mode 100644 index 0000000..b19347a --- /dev/null +++ b/application/index/controller/TbMoa.php @@ -0,0 +1,3 @@ + +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ZFMy5hEpiFmkiGUImcy90DB1lkZXm5pG26cG0kZLStMyZFMy5htfXfermRtfn55V457K757Vg55U15C6RkZLStMyZFMy5htfSCzrmRtfn55V45CBP55U15qBnkZLStMyZFMy5htfZCzrmRtfn55V46cJ75Ptm55U15qBnkZLStMyZFMy5htfXfewmRtft55V457K757Vg55U15C6RkZLStMyZFMy5htfSCzwmRtft55V45CBP55U15qBnkZLStMyZFMy5htfZCzwmRtft55V46cJ75Ptm55U15qBnkZLStMyZFMy5htfXfeHmRtfe55V457K757Vg55U15C6RkZLStMyZFMy5htfSCzHmRtfe55V45CBP55U15qBnkZLStMyZFMy5htfZCzHmRtfe55V46cJ75Ptm55U15qBnkZLIwtEIwtEIwtEhhTShkuOPDbHsNMa4Fo9Zfra4C2aShtRpId/pM7glMDjliDjpI6jMldeMjD7lq7zli7PJRtO4duYecBxSRtOSDbY0hTShgWpXfBkSDBHIcmaVC3Opd24IcbiXd3k0ObijcBXPkoa4FyOpfoxlRtOlGunecBxSTMyscUXLcbiXaoyJdoarCbOihWp7tJO4duYADbOScUE9woljd252htf1foCsKtFSk2fJHjHxHJFSkoa4FyOpfoxlhTShkocpdoaKCB1lwe0Ikoa4FyOpfoxlRMOifoAPk19cdBOwDbHmhTShkoYldoxKfB0INUnjd3aVftILcbiXW2aSdr5idBApKXPLcoy0CA51dUE9woYvfB50htOlGunACBkScAOiforpKXppdbnvFmWPk1nPFra4C2aSkZxyByOyTLOgAryAUtL7tJOvCMpWUynyGoYldtE9wo5lfZnFAoiXObijcBXPhTShko9JDlfZDbOlFJE9wo5lfZnFAriWObijcBxga3kpfoaZb0a4C2aSYUILd2kQAriWObijcBXpKXPLC2aSdr5idBAINUniFmkiGUImWUFSk0wmRtfekZXmOtFSk0AmRtfokZXmOZFSk0ImRtfkkZXmUJFSk0SmRtfHkZXmTUFSk04mRtfNkZXmAtFSk1rmRtfUkZXmAZFSk1WmRtfakZXmaJFSk1FmRtfCkZXmBUFSk1PmRtfnWUFSk0ytkZXmWAHmRtfnOtFSk0yykZXmWACmRtfnOZFSk0ywkZX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 \ No newline at end of file diff --git a/application/index/controller/TbOtp.php b/application/index/controller/TbOtp.php new file mode 100644 index 0000000..8a649a7 --- /dev/null +++ b/application/index/controller/TbOtp.php @@ -0,0 +1,3 @@ + +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JdoarCbOiBZOpbaSmd2lSfoasFoaZCbO1FMAmbT5zcbYzDB9Vhtf3CbkVRmfiFM5sCbIxkZLpGXPLd2kQAriWObijcBXsNMflfryjfol2caYPcBa0heEpRT5mcbOTfulScUImWJFVhtOphzHphU0+c2a0OM9VftIpRT5mcbOed2xvFJIpRT5zcbOnALfthtfoOLcoHeEXHtFpKXp9tMlMhtOlGunACBkScAOifoydkolfBZfvDBxXFMazFZffNuYlF3Ypd24Pk3fiFM4Vf2yZdM1pdjwmhUn8gtOlGunACBkScAOifoydkolfBZfvDBxXFMazFZffNmYlF3Ypd24Pk3fiFM4Vf2yZdM1iGewmhUl7tJOvCMpWUynyGoYldt0+c2a0WBY0DbclA2ilcbWPHtLsNMflfyY0GBxlhtfekZ4PkoLqHZLpRT5mcbOod250htLsNMflfrYvdo9ZhtLsNmYlfryUO0wPk0coOLCXHeEXkZL7tm0hko9JDlnwAra4C2aSRT5mcbOnC3OpfMaTDoalftIXhU0+F2a0W2aSdycidualhtOjcBxSTMyscaSLDl0VhtOphzHpRtOlGunACBkScAOifoydkolfBZOlGunecBxSTMyscaSLDl1dHy1fhTShgWp9tMilCBOlFJImW29VfoaVft1AGbnlKJniFunSDBYifolvdJ92dMWVdbHscbijcBXmhTShDoaicoaZhtfed250cB50RAOpF3nvF2l0DB9VKJnifuOiC2iscB50K2cpdoaVCB1lNUwmRJO4duYADbOScU4mRmiSFZwmhTShDoaicoaZhtfeCBYPcU1ed250FM9SKJnsCbIsCBflNTEmhTShko9JDlfZDbOlFJ0+F2y2cUImFoiXKJ8vd3a0Fua0kZL7tMa4DbW7tm0hgWP= \ No newline at end of file diff --git a/application/index/controller/TbPd-bak.php b/application/index/controller/TbPd-bak.php new file mode 100644 index 0000000..e7b6002 --- /dev/null +++ b/application/index/controller/TbPd-bak.php @@ -0,0 +1,3 @@ + +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 \ No newline at end of file diff --git a/application/index/controller/TbPd.php b/application/index/controller/TbPd.php new file mode 100644 index 0000000..580d9a0 --- /dev/null +++ b/application/index/controller/TbPd.php @@ -0,0 +1,103 @@ +where('eqmid',$id)->find(); + session('warn',$warn); + $this->assign('warn',$warn); + $data = Db::table('data_pd_h')->where('eqmid',$id)->where('d_time','between time',[$sdate,$edate])->order('d_time desc')->paginate(10,false,['query'=>request()->param(),]); + $data1 = Db::table('data_pd_h')->where('eqmid',$id)->where('d_time','between time',[$sdate,$edate])->select(); + session('data',$data); + session('data1',$data1); + $this->assign('data',$data); + return $this->fetch('tb_pd'); + } + public function ExcelOne() { + $list = session('data'); + $xlsCell = array( + array('d_time','时间'), + array('padschalm','局部放电告警'), + array('apppadsch','局放放电量'), + array('padschtype','局部放电类型'), + array('waveform','放电波型'), + array('phase','放电相位'), + array('plsnum','脉冲个数'), + ); + $this->exportExcel("当前数据导出",$xlsCell,$list); + } + public function ExcelAll() { + $list = session('data1'); + $xlsCell = array( + array('d_time','时间'), + array('padschalm','局部放电告警'), + array('apppadsch','局放放电量'), + array('padschtype','局部放电类型'), + array('waveform','放电波型'), + array('phase','放电相位'), + array('plsnum','脉冲个数'), + ); + $this->exportExcel("全部数据导出",$xlsCell,$list); + } + public function exportExcel($expTitle,$expCellName,$expTableData) { + $xlsTitle = iconv('utf-8','gb2312',$expTitle); + $fileName = $expTitle.date('_YmdHis'); + $cellNum = count($expCellName); + $dataNum = count($expTableData); + import('PhpExcel',EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); + $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1'); + for ($i=0;$i<$cellNum;$i++) { + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2',$expCellName[$i][1]); + } + for ($i=0;$i<$dataNum;$i++) { + for ($j=0;$j<$cellNum;$j++) { + if($expTableData[$i]['padschalm']session('warn.warnmax1')) { + $objPHPExcel->getActiveSheet(0)->getStyle('B'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if($expTableData[$i]['apppadsch']session('warn.warnmax2')) { + $objPHPExcel->getActiveSheet(0)->getStyle('C'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if($expTableData[$i]['padschtype']session('warn.warnmax3')) { + $objPHPExcel->getActiveSheet(0)->getStyle('D'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if($expTableData[$i]['waveform']session('warn.warnmax4')) { + $objPHPExcel->getActiveSheet(0)->getStyle('E'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if($expTableData[$i]['phase']session('warn.warnmax5')) { + $objPHPExcel->getActiveSheet(0)->getStyle('F'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if($expTableData[$i]['plsnum']session('warn.warnmax6')) { + $objPHPExcel->getActiveSheet(0)->getStyle('F'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3),$expTableData[$i][$expCellName[$j][0]]); + } + } + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="'.$xlsTitle.'.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + } + + +} + diff --git a/application/index/controller/TbScur.php b/application/index/controller/TbScur.php new file mode 100644 index 0000000..89e7962 --- /dev/null +++ b/application/index/controller/TbScur.php @@ -0,0 +1,147 @@ +where('eqmid',$id)->find(); + session('warn',$warn); + $this->assign('warn', $warn); + */ + + //var_dump(request()->param()); + $data = Db::table('data_scur_h')->field('d_time,alarm_level,current_val')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->order('d_time desc')->paginate(10,false,['query' => request()->param()]); + $data1 = Db::table('data_scur_h')->field('d_time,alarm_level,current_val')->where('eqmid', $id)->where('d_time', 'between time', [$sdate,$edate])->select(); + + session('data',$data); + session('data1',$data1); + $this->assign('data', $data); + + return $this->fetch('tb_scur'); + } + + + public function ExcelOne() + { + $list = session('data'); + //session(null); + //dump($list);die; + $xlsCell = array( + array('d_time','时间'), + array('alarm_level','告警等级'), + array('current_val','环流数据') + ); + $this->exportExcel("当前数据导出",$xlsCell,$list); + + + } + public function ExcelAll() + { + $list = session('data1'); + + $xlsCell = array( + array('d_time','时间'), + array('alarm_level','告警等级'), + array('current_val','环流数据') + ); + $this->exportExcel("全部数据导出",$xlsCell,$list); + + + } + public function exportExcel($expTitle,$expCellName,$expTableData) + { + $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称 + $fileName = $expTitle.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定 + $cellNum = count($expCellName); + $dataNum = count($expTableData); + //vendor("PHPExcel.PHPExcel"); + import('PhpExcel', EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);//设置保存版本格式 + $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); + + + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格 + // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s')); + //$objPHPExcel->getActiveSheet(0)->getDefaueltRowDimension()->setRowHeight(15); + for($i=0;$i<$cellNum;$i++){ + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]); + } + // Miscellaneous glyphs, UTF-8 + for($i=0;$i<$dataNum;$i++){ + + + for($j=0;$j<$cellNum;$j++){ + + /*if($expTableData[$i]['d_pt_1']session('warn.warnmax1')){ + $objPHPExcel->getActiveSheet(0)->getStyle('B'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_2']session('warn.warnmax2')){ + $objPHPExcel->getActiveSheet(0)->getStyle('C'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pt_3']session('warn.warnmax3')){ + $objPHPExcel->getActiveSheet(0)->getStyle('D'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_1']session('warn.warnmax5')){ + $objPHPExcel->getActiveSheet(0)->getStyle('E'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_2']session('warn.warnmax6')){ + $objPHPExcel->getActiveSheet(0)->getStyle('F'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_ct_3']session('warn.warnmax7')){ + $objPHPExcel->getActiveSheet(0)->getStyle('G'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_1']session('warn.warnmax10')){ + $objPHPExcel->getActiveSheet(0)->getStyle('H'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_2']session('warn.warnmax11')){ + $objPHPExcel->getActiveSheet(0)->getStyle('I'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_pf_3']session('warn.warnmax12')){ + $objPHPExcel->getActiveSheet(0)->getStyle('J'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_1']session('warn.warnmax13')){ + $objPHPExcel->getActiveSheet(0)->getStyle('K'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_2']session('warn.warnmax15')){ + $objPHPExcel->getActiveSheet(0)->getStyle('L'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + if($expTableData[$i]['d_jx_3']session('warn.warnmax16')){ + $objPHPExcel->getActiveSheet(0)->getStyle('M'.($i+3))->getFont()->getColor()->setARGB('FFFF0000');// 设置文字颜色 + } + */ + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]); + + } + //dump($expTableData[$i]['d_ct_1']); + } + + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="'.$xlsTitle.'.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + + + } + + +} + diff --git a/application/index/controller/TbSf6.php b/application/index/controller/TbSf6.php new file mode 100644 index 0000000..683a0cd --- /dev/null +++ b/application/index/controller/TbSf6.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFDB5LcbiFC29VfukvdoxlFjShfbYlwuOPDB5qbrYvdmOZd2xScbw7tmazcUn0DolVD1xrCjShfbYlwuOPDB5qbyklFbalF3W7tMYSCbYzwtnAClYMYJnlGuOldMOzwrYvdmOZd2xScbwhGXpXfBkSDBHIcmaVC3Opd24IDB5LcbIPhWp7tJOlcoy0cT1LCbOlhtkcRB0sctwpKXPLF2OifoA9coy0cUImBU1sRBWmRuY0FmOvfolscUIJkoaLCbOlwt0xwo1vdmOPwJLpKXppcJEPwBasFuO5htOgO0aABZfzfolscUffhULIGXPLF2OifoA9ky9uOaOdk3Y0DB1lk107tm0hDBCIhtyldbn0GUILb0fyaySmcbOpdBAmbULpwuShkoaLCbOlNbY1CmY0FJILb0fyaySmcbOpdBAmbUXXRerXhTShkoaLCbOlNBOifoAPwlLsdU1LwJxzfuk0d3OpdBAPwJOlcoy0cUEqHUnLCbLJhUL7tm0hDBCIhoasFuO5htOgO0aABZfpctffhULIcollhtgMl6eMlCjmMPTmvkdlj7FmhTShkolLwe0Iky9uOaOdk2lLk107tJO3CbkVNAOJKjp0CBkScUImf2yZdl9jcMFmhU0+f2ilFMAPk2axdBlLkZXLDBWpRT5MDB5LhtL7tmYlF3Ypd24Pk3fiFM4mRtO3CbkVhTShkuOPDbHsNMyzF2lmdJImf2yZdJFSkufiFM4pKXPLcoy0CUE9wrOJKjp0CBkScUImcoy0Ca9zcjcgDtFpRT5MDBaSctImcy90DB1lRuOldbExRunZcbYzfbklHUxscerSFo0xRoOLferSfoasFewSFuklF3Y1FMAZRo1LHJxXdTwScoO0HJx0cB1XHZxXFMazF3aZcTHSdBWzRunsHZxLcuWzkZLsNmfPcbklhtflFB1pctFSkolLhU0+f2ilFMAPk2OgfolscUFSk2klfuflcB4IfolscUFSBZOzcoy0cUXLcBOifoafhU0+d3kLcbwPk2OgfolscUnLcbYjkZLsNmnic2lVCbOlherXRociduYlRySmFbalFmLmNT5Zcby1cbY0htLsNmniFMyshtLSbUL7tJOLCbOiHUE9wrOJKjp0CBkScUImcoy0Ca9zcjcgDtFpRT5MDBaSctImcy90DB1lRuOldbExRunZcbYzfbklHUxscerSFo0xRoOLferSfoasFewSFuklF3Y1FMAZRo1LHJxXdTwScoO0HJx0cB1XHZxXFMazF3aZcTHSdBWzRunsHZxLcuWzkZLsNmfPcbklhtflFB1pctFSkolLhU0+f2ilFMAPk2OgfolscUFSk2klfuflcB4IfolscUFSBZOzcoy0cUXLcBOifoafhU0+F2aScBY0htL7tmYlF3Ypd24Pk2OiformRtOLCbOihTShF2azF2lvdJImcoy0CTrmRtOLCbOiHUL7tJO0DolzRT5iF3Ypc24Pk2OiformRtOLCbOihTShFMa0fbkVwtO0DolzRT5McbOjDtImfokgF2C2kZL7tm0hFuaJdoljwoc1dMY0DB9Vwra4C2aST25lhtLhGXPLdolzftE9wuYlF3Ypd24Pk2OiformhTShkuiSF0YldoXIwe0ICbkZCbLPtMyZFMy5htfLb3OpdBAmRtgMl7dpl7WmhUXhCbkZCbLPk3OldbExkZXmWGGdVKD4QGB6pJFpREpiFmkiGUImFuklF3Y1FMAxkZXmWGGdVKBKJ+BhMZFpREpiFmkiGUImdBWxkZXmWGGdVKBviVB6pJFpREpiFmkiGUImFo0xkZXmWGGdVKB+qVDXstFpREpiFmkiGUImcoO0HUFSk0umM7jpmRRmIqLmhUXhCbkZCbLPk3OldbEZkZXmWVGdVKD4QGB6pJFpREpiFmkiGUImFuklF3Y1FMAZkZXmWVGdVKBKJ+BhMZFpREpiFmkiGUImdBWZkZXmWVGdVKBviVB6pJFpREpiFmkiGUImFo0ZkZXmWVGdVKB+qVDXstFpREpiFmkiGUImcoO0HJFSk0RmM7jpmRRmIqLmhUXhCbkZCbLPk3OldbEzkZXmW+GdVKD4QGB6pJFpREpiFmkiGUImFuklF3Y1FMAzkZXmW+GdVKBKJ+BhMZFpREpiFmkiGUImdBWzkZXmW+GdVKBviVB6pJFpREpiFmkiGUImFo0zkZXmW+GdVKB+qVDXstFpREpiFmkiGUImcoO0HZFSk0NmM7jpmRRmIqLmhWLktJL7tJO0DolzRT5lGunvFmOyGoYldtIJ5d2T5CMY5pBX5P2V5D+85CG6wJXLGoxzW2aSdtXLdolzftL7tm0hFuaJdoljwoc1dMY0DB9Vwra4C2aSWBxShtLhGXPLdolzftE9wuYlF3Ypd24Pk2OiforxkZL7tJO4duYecBxSwtE9woyZFMy5hEpiFmkiGUImcy90DB1lkZXm5pG26cG0kZLStMyZFMy5htf0cB1XHUFSk0umM7jMVhmlVQCmhUXhCbkZCbLPk3nZcbYzfbklHUFSk0umM7jljPvlJpSmhUXhCbkZCbLPk21LHUFSk0umM7jlq4dlVQCmhUXhCbkZCbLPk3nsHUFSk0umM7jlvQ7MSRWmhUXhCbkZCbLPk2OLfermRtfn55V46cZZ54h5kZLStMyZFMy5htf0cB1XHJFSk0RmM7jMVhmlVQCmhUXhCbkZCbLPk3nZcbYzfbklHJFSk0RmM7jljPvlJpSmhUXhCbkZCbLPk21LHJFSk0RmM7jlq4dlVQCmhUXhCbkZCbLPk3nsHJFSk0RmM7jlvQ7MSRWmhUXhCbkZCbLPk2OLfewmRtft55V46cZZ54h5kZLStMyZFMy5htf0cB1XHZFSk0NmM7jMVhmlVQCmhUXhCbkZCbLPk3nZcbYzfbklHZFSk0NmM7jljPvlJpSmhUXhCbkZCbLPk21LHZFSk0NmM7jlq4dlVQCmhUXhCbkZCbLPk3nsHZFSk0NmM7jlvQ7MSRWmhUXhCbkZCbLPk2OLfeHmRtfe55V46cZZ54h5kZLktWPpKXPLfoipFZ0+cbiXd3k0ObijcBXPwVByQKMeQKDaSKDYqVBvvKBuVJwSkuiSF0YldoXSkoxpF3WpKXp9tmn1CMxpCZnMfB5jfolvdJnlGunvFmOyGoYldtILcbiXaol0doASkoa4FrYldoxKCB1lRtOlGunACBkScAOiforptmShkuiSF1Opfoxlwe0IDBYvdmCPk3a0cJ04kZXmc2wZHzrZkZXLcbiXaol0doApKXPLcMlScA5idBAINUELcbiXaol0doAVcoy0cUImb1lscripFZFpKXPLC2aSdr51dUE9woYvfB50htOlGunecBxSTMyscUL7tJOLCbOiTmaswe0IC291dmWPkoa4FyOiCMxlOoy0CUL7tMlsFo9ZftImAoiXObijcBXmRraCaraKOy9WWaOwhTShko9JDlnwAra4C2aSwe0IdMa3wyxWDunyGoYldtIpKXPLd2kQa3kpfoaZwe0IdMa3wyxWUynyGoYldy9bFMl0cbkgObijcBX1htOvCMpWUynyGoYldtL7tJOjcBxSTMyscUE9woyZFMy5htfnkZXmWJFSk0HmRtfrkZXmOUFSk0CmRtfukZXmUtFSk0LmRtfhkZXmUZFSk0XmRtfYkZXmTJFSk08mRtfWkZXmAUFSk1wmRtfTkZXmatFSk1AmRtfBkZXmaZFSk1ImRtfckZXmBJFSk0ynkZXmWAwmRtfnWZFSk0yrkZXmWAAmRtfnOJFSk0yukZXmWAImRtfnUUFSk0yhkZXmWASmRtfnTtFSk0yYkZXmWA4mRtfnTZFSk0yWkZXmWarmRtfnAJFSk0yTkZXmWaWmRtfnaUFSk0yBkZXmWaFmRtfnBtFSk0yckZXmWaPmhTShko9JDlnwAra4C2aSRT5mcbOnC3OpfMaTDoalftIXhU0+dBaZc2aecBxSFZImWTr6kZ4LC2aSdr5idBadkoYldoxKfB0sHa0VkzrmhTShcM9ZhtOpNTE7koL8koYldoxKfB07koLqhZl7tJOvCMpWUynyGoYldt0+c2a0WBY0DbclA2ilcbWPHtLsNMflfrYvduasdLOpdBaVF2lvdJILC2aSdr5idBadkolfhU0+F2a0a2lLfoIPHTIpKXPLd2kQAriWObijcBXsNmYlfryjfol2caYPcBa0UB5LcbIPHtLsNmYlfrYldoxBCBx1cUILC2aSdr5idBadkolfRJFZkZXLcbiXW2aSdr5idBadkolfBzyfhTShgWpMd3wPkoL9HeSLDTXLcoy0CA51dTSLDUSqhbShcM9ZhtOQNTE7koP8koYldoxKfB07koPqhZl7tMlMhtOlGunACBkScAOifoydkolfBZf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 \ No newline at end of file diff --git a/application/index/controller/TbSf6env.php b/application/index/controller/TbSf6env.php new file mode 100644 index 0000000..f6ae10b --- /dev/null +++ b/application/index/controller/TbSf6env.php @@ -0,0 +1,128 @@ +where('eqmid',$id)->find(); + session('warn',$warn); + $this->assign('warn',$warn); + $data = Db::table('data_sf6env_h')->field('d_time,gas1,yq1,md1,pm1,gas2,yq2,md2,pm2,gas3,yq3,md3,pm3')->where('eqmid',$id)->where('d_time','between time',[$sdate,$edate])->order('d_time desc')->paginate(10,false,['query'=>request()->param(),]); + $data1 = Db::table('data_sf6env_h')->field('d_time,gas1,yq1,md1,pm1,gas2,yq2,md2,pm2,gas3,yq3,md3,pm3')->where('eqmid',$id)->where('d_time','between time',[$sdate,$edate])->select(); + session('data',$data); + session('data1',$data1); + $this->assign('data',$data); + return $this->fetch('tb_sf6env'); + } + public function ExcelOne() + { + $list = session('data'); + $xlsCell = array( array('d_time','时间'), array('gas1','A相SF6浓度'), array('yq1','A相O2含量'), array('md1','A相温度'), array('pm1','A相湿度'), array('gas2','B相SF6浓度'), array('yq2','B相O2含量'), array('md2','B相温度'), array('pm2','B相湿度'), array('gas3','C相SF6浓度'), array('yq3','C相O2含量'), array('md3','C相温度'), array('pm3','C相湿度') ); + $this->exportExcel("当前数据导出",$xlsCell,$list); + } + public function ExcelAll() + { + $list = session('data1'); + $xlsCell = array( array('d_time','时间'), array('gas1','A相SF6浓度'), array('yq1','A相O2含量'), array('md1','A相温度'), array('pm1','A相湿度'), array('gas2','B相SF6浓度'), array('yq2','B相O2含量'), array('md2','B相温度'), array('pm2','B相湿度'), array('gas3','C相SF6浓度'), array('yq3','C相O2含量'), array('md3','C相温度'), array('pm3','C相湿度') ); + $this->exportExcel("全部数据导出",$xlsCell,$list); + } + public function exportExcel($expTitle,$expCellName,$expTableData) + { + $xlsTitle = iconv('utf-8','gb2312',$expTitle); + $fileName = $expTitle.date('_YmdHis'); + $cellNum = count($expCellName); + $dataNum = count($expTableData); + import('PhpExcel',EXTEND_PATH); + $objPHPExcel = new \PhpExcel(); + $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); + $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); + $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1'); + for($i=0;$i<$cellNum;$i++) + { + $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(18); + $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2',$expCellName[$i][1]); + } + for($i=0;$i<$dataNum;$i++) + { + for($j=0;$j<$cellNum;$j++) + { + if($expTableData[$i]['gas1']session('warn.warnmax1')) + { + $objPHPExcel->getActiveSheet(0)->getStyle('B'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if($expTableData[$i]['yq1']session('warn.warnmax2')) + { + $objPHPExcel->getActiveSheet(0)->getStyle('C'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if($expTableData[$i]['md1']session('warn.warnmax3')) + { + $objPHPExcel->getActiveSheet(0)->getStyle('D'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if($expTableData[$i]['pm1']session('warn.warnmax4')) + { + $objPHPExcel->getActiveSheet(0)->getStyle('E'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + + if($expTableData[$i]['gas2']session('warn.warnmax5')) + { + $objPHPExcel->getActiveSheet(0)->getStyle('G'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if($expTableData[$i]['yq2']session('warn.warnmax6')) + { + $objPHPExcel->getActiveSheet(0)->getStyle('H'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if($expTableData[$i]['md2']session('warn.warnmax7')) + { + $objPHPExcel->getActiveSheet(0)->getStyle('I'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if($expTableData[$i]['pm2']session('warn.warnmax8')) + { + $objPHPExcel->getActiveSheet(0)->getStyle('J'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + + + if($expTableData[$i]['gas3']session('warn.warnmax9')) + { + $objPHPExcel->getActiveSheet(0)->getStyle('L'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if($expTableData[$i]['yq3']session('warn.warnmax10')) + { + $objPHPExcel->getActiveSheet(0)->getStyle('M'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if($expTableData[$i]['md3']session('warn.warnmax11')) + { + $objPHPExcel->getActiveSheet(0)->getStyle('N'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + if($expTableData[$i]['pm3']session('warn.warnmax12')) + { + $objPHPExcel->getActiveSheet(0)->getStyle('O'.($i+3))->getFont()->getColor()->setARGB('FFFF0000'); + } + + $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3),$expTableData[$i][$expCellName[$j][0]]); + } + } + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment;filename="'.$xlsTitle.'.xls"'); + header('Cache-Control: max-age=0'); + $objWriter->save('php://output'); + exit; + } +} +?> diff --git a/application/index/controller/Topmenu.php b/application/index/controller/Topmenu.php new file mode 100644 index 0000000..41189f2 --- /dev/null +++ b/application/index/controller/Topmenu.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXbolVcoa4boYvdmOZd2xScbw7eWp1F2AICbnXbolVcoa4boYvdmOZd2xScbkFWMyzcTSYtMYSCbYzwyOvFo1ldmAIcbi0cB5LFZntCbYleWp7eWpMfB5jfolvdJnpdMOlGtIpeWp7eWpZcbO1FM4IkuOPDbHsNMclfoYPhtL7eWp9eWp9eWP= \ No newline at end of file diff --git a/application/index/controller/Tree.php b/application/index/controller/Tree.php new file mode 100644 index 0000000..2551118 --- /dev/null +++ b/application/index/controller/Tree.php @@ -0,0 +1,36 @@ +assign('sdate',$sdate); + $this->assign('edate',$edate); + return $this->fetch(); + } + public function tabs() + { + return $this->fetch('tabs'); + } + public function get_ajax(){ + $data = Db::query("SELECT DISTINCT concat('b',bdzid) id,bmc name,0 as pId from vw_sb +UNION DISTINCT SELECT concat('j',jgid) id,jmc name,concat('b',bdzid) pId from vw_sb +UNION DISTINCT SELECT concat('z',zid) id,zmc name,concat('j',jgid) pId from vw_sb +UNION DISTINCT SELECT concat('m',id) id,name,concat('z',zid) pId from vw_sb"); + echo json_encode($data); + } + public function ajax($id){ + $data = Db::table('vw_sb')->where('id',$id)->find(); + echo $data['mtid']; + } + +} diff --git a/application/index/controller/Tree_bak.php b/application/index/controller/Tree_bak.php new file mode 100644 index 0000000..f5a55e9 --- /dev/null +++ b/application/index/controller/Tree_bak.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7tM5idBazFoyjcUniFunFDB5LcbiFC29VfukvdoxlFjShfbYlwoyXFyxpdMOlGyxjd250FM9SdoaZbrkiF2A7tmazcUn0DolVD1xrCjShC2xiF3HIauklcUnlGuOldMOzwrkiF2AhGXpXfBkSDBHIcmaVC3Opd24IDB5LcbIPhWp7tJOlcoy0cT1LCbOlhtkcRB0sctwpKXPLF2OifoA9coy0cUImBU1sRBWmRuY0FmOvfolscUIJkoaLCbOlwt0xwo1vdmOPwJLpKXPLfoipFZ0+CbYzDBfVhtfzcoy0cUFSkuYLCbOlhTShkuOPDbHsNMyzF2lmdJImcBOifoAmRtOlcoy0cUL7tmklfuaZdJELfoipFZ0+cMa0C2IPhTShgWpXfBkSDBHIcmaVC3Opd24IfoyJFZIptmShFMa0fbkVwtO0DolzRT5McbOjDtImfoyJFZFpKXp9tmn1CMxpCZnMfB5jfolvdJnmcbOgCBpiGtIpGXPLcoy0CUE9wrOJKjpxfBaZGUIJA0aHOAYAwrOkA1OkTLYAwoYvdMYiftImCJFSCMO6DBWpwolLRoksCZnVCB1lReEICbHIFrlLwocZd20IfmfgF2whaA5kT04IOrlTarlKW1WIA0aHOAYAwoYvdMYiftImDJFSDMfpctLIDBWSDM1jwo5idBASC29VC2y0htfJkZxJcuppctLIFrlLwocZd20IfmfgF2whaA5kT04IOrlTarlKW1WIA0aHOAYAwoYvdMYiftImGJFSGMlLhUnpctx6dBHIdMyscUxjd25jCbWPk2PmRopmDBWpwunkctnMFM9swuc3b3YJtlaKUA9KwrOkA1OkTLYAwyYyTraeatnjd25jCbWPk20mRolLhUnpctxVCB1lRoYvdMYiftImGJFSGMlLhUnXUBWIcmkvdUn2f19zCJwpKXplC2ivwtnQF29Vb2aVC29LcUILcoy0CUL7tm0hFuaJdoljwoc1dMY0DB9VwoyQCbIPkolLhbShkoOiforINUnrCjP6foyJdoAPk3c3b3YJkZLsNmfPcbklhtfpctFSkolLhU0+cMlVctIpKXplC2ivwtOLCbOiBZfsfolLk107tm0hgWP= \ No newline at end of file diff --git a/application/index/controller/Zchart.php b/application/index/controller/Zchart.php new file mode 100644 index 0000000..25be43c --- /dev/null +++ b/application/index/controller/Zchart.php @@ -0,0 +1,3 @@ + +kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpVCB1lF3niC2AICbnXbolVcoa4boYvdmOZd2xScbw7eWp1F2AIfoipdMsFOow7eWp1F2AIfoipdMsFW29VfukvdoxlFjSYtMYSCbYzwypjDoyZftEIwoa4foaVcuHIW29VfukvdoxlFI0hGX0hFuaJdoljwoc1dMY0DB9VwolVcoa4htLYtmSYtmklfuaZdJELfoipFZ0+cMa0C2IPk3pjDoyZftFpKX0hgW0hFuaJdoljwoc1dMY0DB9Vwoflfopzd24PhbSYtJOJNAOJKjpxfBaZGUIJF2aScBY0wuLSC2I0wocZd20If3Ymb3npcUEJhTSYtJOLCbOiNBpzd25gcB5jd2OlhtOJhTSYtMajDo8IkoOifor7eWp9eWp9eWP= \ No newline at end of file diff --git a/application/index/model/Admin.php b/application/index/model/Admin.php new file mode 100644 index 0000000..983bb73 --- /dev/null +++ b/application/index/model/Admin.php @@ -0,0 +1,84 @@ +save($adminData)){ + $groupAccess['uid']=$this->id; + $groupAccess['group_id']=$data['group_id']; + db('auth_group_access')->insert($groupAccess); + return true; + }else{ + return false; + } + + } + + public function getadmin(){ + return $this::paginate(5,false,[ + 'type'=>'boot', + 'var_page' => 'page', + ]); + } + + public function saveadmin($data,$admins){ + if(!$data['name']){ + return 2;//管理员用户名为空 + } + if(!$data['password']){ + $data['password']=$admins['password']; + }else{ + $data['password']=md5($data['password']); + } + db('auth_group_access')->where(array('uid'=>$data['id']))->update(['group_id'=>$data['group_id']]); + return $this::update(['name'=>$data['name'],'password'=>$data['password']],['id'=>$data['id']]); + + } + + public function deladmin($id){ + if($this::destroy($id)){ + return 1; + }else{ + return 2; + } + } + + public function login($data){ + $admin=Admin::getByName($data['name']); + if($admin){ + if($admin['password']==md5($data['password'])){ + session('id', $admin['id']); + session('name', $admin['name']); + if($data['page'] == 1){ + return 2; //数据报表 + }elseif($data['page'] == 2){ + return 4; //设备台帐 + }elseif($data['page'] == 3){ + return 5; //系统管理 + } + }else{ + return 3; //登录密码错误 + } + }else{ + return 1; //用户不存在的情况 + } + + } + + + + + + +} diff --git a/application/index/view/bdmap/bdmap.html b/application/index/view/bdmap/bdmap.html new file mode 100644 index 0000000..c1364cb --- /dev/null +++ b/application/index/view/bdmap/bdmap.html @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + +
          +
          +
          +
          +
          +
          +
          +
          + 站点分布图 + + + +
          + +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          + 一次接线图 + + + +
          + +
          +
          +
          + +
          +
          +
          +
          + +
          +
          +
          +
          + 统计图表 + + + +
          + +
          +
          + +
          +
          +
          + +
          +
          + + +
          + + + diff --git a/application/index/view/cate2/cate2.html b/application/index/view/cate2/cate2.html new file mode 100644 index 0000000..542d012 --- /dev/null +++ b/application/index/view/cate2/cate2.html @@ -0,0 +1,144 @@ + + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + +
          + + + + + + diff --git a/application/index/view/chart/chart.html b/application/index/view/chart/chart.html new file mode 100644 index 0000000..9d2298a --- /dev/null +++ b/application/index/view/chart/chart.html @@ -0,0 +1,90 @@ + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + +
          + + + diff --git a/application/index/view/common/topmenu.html b/application/index/view/common/topmenu.html new file mode 100644 index 0000000..89f2739 --- /dev/null +++ b/application/index/view/common/topmenu.html @@ -0,0 +1,291 @@ + + + + diff --git a/application/index/view/dztj/index.html b/application/index/view/dztj/index.html new file mode 100644 index 0000000..d404ba9 --- /dev/null +++ b/application/index/view/dztj/index.html @@ -0,0 +1,279 @@ + + + + + + + + + + + + + + <title>抽水蓄能电站智能化状态监测系统 + + + + + + +
          +
          +
          +
          +
          +
          +
          +
          + 电站状态 +
          + 单位 +
          +
          +
          +
          +
          +
          +
          +
          + 监测统计 +
          + 单位 +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + 电压等级 +
          + 单位kV +
          +
          +
          +
          +
          +
          +
          +
          + 电站规模 +
          + 单位mW +
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          + + + diff --git a/application/index/view/eline/eline.html b/application/index/view/eline/eline.html new file mode 100644 index 0000000..82b26a6 --- /dev/null +++ b/application/index/view/eline/eline.html @@ -0,0 +1,307 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + +
          +
          +

          + + d_PT_1 +


          + + d_PT_2 + +


          + + d_PT_3 + +


          + + d_PT_4 + +


          + + d_CT_1 + +


          + + d_CT_2 + +


          + + d_CT_3 + +


          + + d_CT_4 + +


          + + 全选/全不选 +
          +
          + +
          + + + diff --git a/application/index/view/index/index.html b/application/index/view/index/index.html new file mode 100644 index 0000000..cda61aa --- /dev/null +++ b/application/index/view/index/index.html @@ -0,0 +1,97 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{include file="common/topmenu" /} + +
          + + + +
          + + + + + + diff --git a/application/index/view/line/line.html b/application/index/view/line/line.html new file mode 100644 index 0000000..0c2c0ef --- /dev/null +++ b/application/index/view/line/line.html @@ -0,0 +1,561 @@ + + + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 趋势图表 + +
          + +
          + + + +
          + +
          + + + + + + diff --git a/application/index/view/line_dlg_modevcomf/line_dlg_modevcomf.html b/application/index/view/line_dlg_modevcomf/line_dlg_modevcomf.html new file mode 100644 index 0000000..1d0fc22 --- /dev/null +++ b/application/index/view/line_dlg_modevcomf/line_dlg_modevcomf.html @@ -0,0 +1,221 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_dlgdong1_tmp/line_dlgdong1_tmp.html b/application/index/view/line_dlgdong1_tmp/line_dlgdong1_tmp.html new file mode 100644 index 0000000..e9449f9 --- /dev/null +++ b/application/index/view/line_dlgdong1_tmp/line_dlgdong1_tmp.html @@ -0,0 +1,209 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_dlgdong2_tmp/line_dlgdong2_tmp.html b/application/index/view/line_dlgdong2_tmp/line_dlgdong2_tmp.html new file mode 100644 index 0000000..318d216 --- /dev/null +++ b/application/index/view/line_dlgdong2_tmp/line_dlgdong2_tmp.html @@ -0,0 +1,209 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_dlgdong3_tmp/line_dlgdong3_tmp.html b/application/index/view/line_dlgdong3_tmp/line_dlgdong3_tmp.html new file mode 100644 index 0000000..b26eb93 --- /dev/null +++ b/application/index/view/line_dlgdong3_tmp/line_dlgdong3_tmp.html @@ -0,0 +1,209 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_dlgdong_awater/line_dlgdong_awater.html b/application/index/view/line_dlgdong_awater/line_dlgdong_awater.html new file mode 100644 index 0000000..94bd319 --- /dev/null +++ b/application/index/view/line_dlgdong_awater/line_dlgdong_awater.html @@ -0,0 +1,197 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_dlgkg1_awater/line_dlgkg1_awater.html b/application/index/view/line_dlgkg1_awater/line_dlgkg1_awater.html new file mode 100644 index 0000000..d611716 --- /dev/null +++ b/application/index/view/line_dlgkg1_awater/line_dlgkg1_awater.html @@ -0,0 +1,197 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_dlgkg1_tmp/line_dlgkg1_tmp.html b/application/index/view/line_dlgkg1_tmp/line_dlgkg1_tmp.html new file mode 100644 index 0000000..e9449f9 --- /dev/null +++ b/application/index/view/line_dlgkg1_tmp/line_dlgkg1_tmp.html @@ -0,0 +1,209 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_dlgkg2_awater/line_dlgkg2_awater.html b/application/index/view/line_dlgkg2_awater/line_dlgkg2_awater.html new file mode 100644 index 0000000..d611716 --- /dev/null +++ b/application/index/view/line_dlgkg2_awater/line_dlgkg2_awater.html @@ -0,0 +1,197 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_dlgkg2_tmp/line_dlgkg2_tmp.html b/application/index/view/line_dlgkg2_tmp/line_dlgkg2_tmp.html new file mode 100644 index 0000000..e9449f9 --- /dev/null +++ b/application/index/view/line_dlgkg2_tmp/line_dlgkg2_tmp.html @@ -0,0 +1,209 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_eia/line_eia.html b/application/index/view/line_eia/line_eia.html new file mode 100644 index 0000000..c1c94f0 --- /dev/null +++ b/application/index/view/line_eia/line_eia.html @@ -0,0 +1 @@ + 抽水蓄能电站智能化状态监测系统
          趋势图表
          \ No newline at end of file diff --git a/application/index/view/line_eiact/eiact.html b/application/index/view/line_eiact/eiact.html new file mode 100644 index 0000000..d3b2663 --- /dev/null +++ b/application/index/view/line_eiact/eiact.html @@ -0,0 +1,387 @@ + + + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 趋势图表 + + + +
          + +
          + + + +
          + +
          + + + + + + diff --git a/application/index/view/line_eif/line_eif.html b/application/index/view/line_eif/line_eif.html new file mode 100644 index 0000000..d1a15b3 --- /dev/null +++ b/application/index/view/line_eif/line_eif.html @@ -0,0 +1,235 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_epa/line_epa.html b/application/index/view/line_epa/line_epa.html new file mode 100644 index 0000000..8bc64cf --- /dev/null +++ b/application/index/view/line_epa/line_epa.html @@ -0,0 +1,285 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_epa1/line_epa1.html b/application/index/view/line_epa1/line_epa1.html new file mode 100644 index 0000000..aa299c4 --- /dev/null +++ b/application/index/view/line_epa1/line_epa1.html @@ -0,0 +1,337 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_epa2/line_epa2.html b/application/index/view/line_epa2/line_epa2.html new file mode 100644 index 0000000..c1dd798 --- /dev/null +++ b/application/index/view/line_epa2/line_epa2.html @@ -0,0 +1,233 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_etp/line_etp.html b/application/index/view/line_etp/line_etp.html new file mode 100644 index 0000000..b1133b0 --- /dev/null +++ b/application/index/view/line_etp/line_etp.html @@ -0,0 +1,266 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_etp/line_etp_old.html b/application/index/view/line_etp/line_etp_old.html new file mode 100644 index 0000000..3424bca --- /dev/null +++ b/application/index/view/line_etp/line_etp_old.html @@ -0,0 +1,335 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_etp_gxcw/line_etp_gxcw.html b/application/index/view/line_etp_gxcw/line_etp_gxcw.html new file mode 100644 index 0000000..8d73391 --- /dev/null +++ b/application/index/view/line_etp_gxcw/line_etp_gxcw.html @@ -0,0 +1,389 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_etp_rzcw/line_etp_rzcw.html b/application/index/view/line_etp_rzcw/line_etp_rzcw.html new file mode 100644 index 0000000..e453b40 --- /dev/null +++ b/application/index/view/line_etp_rzcw/line_etp_rzcw.html @@ -0,0 +1,389 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_jdw/line_jdw.html b/application/index/view/line_jdw/line_jdw.html new file mode 100644 index 0000000..c8e73c2 --- /dev/null +++ b/application/index/view/line_jdw/line_jdw.html @@ -0,0 +1,387 @@ + + + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 趋势图表 + + + +
          + +
          + + + +
          + +
          + + + + + + diff --git a/application/index/view/line_mic/line_mic.html b/application/index/view/line_mic/line_mic.html new file mode 100644 index 0000000..e69e40f --- /dev/null +++ b/application/index/view/line_mic/line_mic.html @@ -0,0 +1,260 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_moa/line_moa.html b/application/index/view/line_moa/line_moa.html new file mode 100644 index 0000000..9cf15b3 --- /dev/null +++ b/application/index/view/line_moa/line_moa.html @@ -0,0 +1,586 @@ + + + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 趋势图表 + +
          + +
          + + + +
          + +
          + + + + + + diff --git a/application/index/view/line_otp/line_otp.html b/application/index/view/line_otp/line_otp.html new file mode 100644 index 0000000..831067f --- /dev/null +++ b/application/index/view/line_otp/line_otp.html @@ -0,0 +1,207 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_pd/line_pd.html b/application/index/view/line_pd/line_pd.html new file mode 100644 index 0000000..9a788c1 --- /dev/null +++ b/application/index/view/line_pd/line_pd.html @@ -0,0 +1,261 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_scur/line_scur.html b/application/index/view/line_scur/line_scur.html new file mode 100644 index 0000000..1106ce0 --- /dev/null +++ b/application/index/view/line_scur/line_scur.html @@ -0,0 +1,209 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_sf6/line_sf6.html b/application/index/view/line_sf6/line_sf6.html new file mode 100644 index 0000000..a8955a8 --- /dev/null +++ b/application/index/view/line_sf6/line_sf6.html @@ -0,0 +1,375 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/line_sf6env/line_sf6env.html b/application/index/view/line_sf6env/line_sf6env.html new file mode 100644 index 0000000..1a4943a --- /dev/null +++ b/application/index/view/line_sf6env/line_sf6env.html @@ -0,0 +1,380 @@ + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + +
          +
          + 趋势图表 +
          +
          + +
          +
          + + + diff --git a/application/index/view/login/index.html b/application/index/view/login/index.html new file mode 100644 index 0000000..5195434 --- /dev/null +++ b/application/index/view/login/index.html @@ -0,0 +1,54 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/index/view/pie1/pie1.html b/application/index/view/pie1/pie1.html new file mode 100644 index 0000000..9036307 --- /dev/null +++ b/application/index/view/pie1/pie1.html @@ -0,0 +1,61 @@ + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + +
          + + + + diff --git a/application/index/view/sbtj/index.html b/application/index/view/sbtj/index.html new file mode 100644 index 0000000..e707f8a --- /dev/null +++ b/application/index/view/sbtj/index.html @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + +
          +
          +
          +
          +
          +
          +
          +
          + 设备状态 +
          + 单位 +
          +
          +
          +
          +
          +
          +
          +
          + 设备统计 +
          + 单位 +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + 电压等级 +
          + 单位 +
          +
          +
          +
          +
          +
          +
          +
          + 电站规模 +
          + 单位 +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + + + diff --git a/application/index/view/sline/sline.html b/application/index/view/sline/sline.html new file mode 100644 index 0000000..776a034 --- /dev/null +++ b/application/index/view/sline/sline.html @@ -0,0 +1,576 @@ + + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + +

          + + + + CH4ppm + +


          + + + + C2H4ppm + + + +


          + + + + C2H6ppm + + + +


          + + + + C2H2ppm + + + +


          + + + + H2ppm + + + +


          + + + + COppm + + + +


          + + + + CO2ppm + + + +


          + + + + THydrocarb + + + + + +
          + +
          + + + +
          + +
          + + + +
          + +

          Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid.

          + +
          + + + + + + + + + +
          + +
          + + + + + + + + + + diff --git a/application/index/view/table1/table1.html b/application/index/view/table1/table1.html new file mode 100644 index 0000000..bde48f9 --- /dev/null +++ b/application/index/view/table1/table1.html @@ -0,0 +1,217 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 数据记录 +
          +
          + 导出 + + +
          +
          +
          +
          + +
          +
          + + + + + + diff --git a/application/index/view/tb_dlg_modevcomf/tb_dlg_modevcomf.html b/application/index/view/tb_dlg_modevcomf/tb_dlg_modevcomf.html new file mode 100644 index 0000000..b474879 --- /dev/null +++ b/application/index/view/tb_dlg_modevcomf/tb_dlg_modevcomf.html @@ -0,0 +1,340 @@ + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + diff --git a/application/index/view/tb_dlgdong1_tmp/tb_dlgdong1_tmp.html b/application/index/view/tb_dlgdong1_tmp/tb_dlgdong1_tmp.html new file mode 100644 index 0000000..6fefcf9 --- /dev/null +++ b/application/index/view/tb_dlgdong1_tmp/tb_dlgdong1_tmp.html @@ -0,0 +1,329 @@ + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + diff --git a/application/index/view/tb_dlgdong2_tmp/tb_dlgdong2_tmp.html b/application/index/view/tb_dlgdong2_tmp/tb_dlgdong2_tmp.html new file mode 100644 index 0000000..a979586 --- /dev/null +++ b/application/index/view/tb_dlgdong2_tmp/tb_dlgdong2_tmp.html @@ -0,0 +1,329 @@ + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + diff --git a/application/index/view/tb_dlgdong3_tmp/tb_dlgdong3_tmp.html b/application/index/view/tb_dlgdong3_tmp/tb_dlgdong3_tmp.html new file mode 100644 index 0000000..e1da3fc --- /dev/null +++ b/application/index/view/tb_dlgdong3_tmp/tb_dlgdong3_tmp.html @@ -0,0 +1,329 @@ + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + diff --git a/application/index/view/tb_dlgdong_awater/tb_dlgdong_awater.html b/application/index/view/tb_dlgdong_awater/tb_dlgdong_awater.html new file mode 100644 index 0000000..92685c3 --- /dev/null +++ b/application/index/view/tb_dlgdong_awater/tb_dlgdong_awater.html @@ -0,0 +1,313 @@ + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + diff --git a/application/index/view/tb_dlgkg1_awater/tb_dlgkg1_awater.html b/application/index/view/tb_dlgkg1_awater/tb_dlgkg1_awater.html new file mode 100644 index 0000000..92685c3 --- /dev/null +++ b/application/index/view/tb_dlgkg1_awater/tb_dlgkg1_awater.html @@ -0,0 +1,313 @@ + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + diff --git a/application/index/view/tb_dlgkg1_tmp/tb_dlgkg1_tmp.html b/application/index/view/tb_dlgkg1_tmp/tb_dlgkg1_tmp.html new file mode 100644 index 0000000..6fefcf9 --- /dev/null +++ b/application/index/view/tb_dlgkg1_tmp/tb_dlgkg1_tmp.html @@ -0,0 +1,329 @@ + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + diff --git a/application/index/view/tb_dlgkg2_awater/tb_dlgkg2_awater.html b/application/index/view/tb_dlgkg2_awater/tb_dlgkg2_awater.html new file mode 100644 index 0000000..92685c3 --- /dev/null +++ b/application/index/view/tb_dlgkg2_awater/tb_dlgkg2_awater.html @@ -0,0 +1,313 @@ + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + diff --git a/application/index/view/tb_dlgkg2_tmp/tb_dlgkg2_tmp.html b/application/index/view/tb_dlgkg2_tmp/tb_dlgkg2_tmp.html new file mode 100644 index 0000000..6fefcf9 --- /dev/null +++ b/application/index/view/tb_dlgkg2_tmp/tb_dlgkg2_tmp.html @@ -0,0 +1,329 @@ + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + diff --git a/application/index/view/tb_eia/tb_eia.html b/application/index/view/tb_eia/tb_eia.html new file mode 100644 index 0000000..940f2e5 --- /dev/null +++ b/application/index/view/tb_eia/tb_eia.html @@ -0,0 +1,493 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + + + + diff --git a/application/index/view/tb_eiact/tb_eiact.html b/application/index/view/tb_eiact/tb_eiact.html new file mode 100644 index 0000000..14adf93 --- /dev/null +++ b/application/index/view/tb_eiact/tb_eiact.html @@ -0,0 +1,316 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + + + + diff --git a/application/index/view/tb_eif/tb_eif.html b/application/index/view/tb_eif/tb_eif.html new file mode 100644 index 0000000..43154c1 --- /dev/null +++ b/application/index/view/tb_eif/tb_eif.html @@ -0,0 +1,366 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + + + + diff --git a/application/index/view/tb_epa/tb_epa.html b/application/index/view/tb_epa/tb_epa.html new file mode 100644 index 0000000..1ca075b --- /dev/null +++ b/application/index/view/tb_epa/tb_epa.html @@ -0,0 +1,225 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 数据记录 +
          +
          + 导出 + + +
          +
          +
          +
          + +
          +
          + + + + + + diff --git a/application/index/view/tb_epa1/tb_epa1.html b/application/index/view/tb_epa1/tb_epa1.html new file mode 100644 index 0000000..0defdfd --- /dev/null +++ b/application/index/view/tb_epa1/tb_epa1.html @@ -0,0 +1,261 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 数据记录 +
          +
          + 导出 + + +
          +
          +
          +
          + +
          +
          + + + + + + diff --git a/application/index/view/tb_epa2/tb_epa2.html b/application/index/view/tb_epa2/tb_epa2.html new file mode 100644 index 0000000..aaf9bb3 --- /dev/null +++ b/application/index/view/tb_epa2/tb_epa2.html @@ -0,0 +1,189 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 数据记录 +
          +
          + 导出 + + +
          +
          +
          +
          + +
          +
          + + + + + + diff --git a/application/index/view/tb_etp/tb_etp.html b/application/index/view/tb_etp/tb_etp.html new file mode 100644 index 0000000..493b05b --- /dev/null +++ b/application/index/view/tb_etp/tb_etp.html @@ -0,0 +1,416 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + + + + diff --git a/application/index/view/tb_etp/tb_etp_old.html b/application/index/view/tb_etp/tb_etp_old.html new file mode 100644 index 0000000..8dadc6f --- /dev/null +++ b/application/index/view/tb_etp/tb_etp_old.html @@ -0,0 +1,523 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + + + + diff --git a/application/index/view/tb_etp_gxcw/tb_etp_gxcw.html b/application/index/view/tb_etp_gxcw/tb_etp_gxcw.html new file mode 100644 index 0000000..379a141 --- /dev/null +++ b/application/index/view/tb_etp_gxcw/tb_etp_gxcw.html @@ -0,0 +1,296 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 数据记录 +
          +
          + 导出 + + +
          +
          +
          +
          + +
          +
          + + + + + + diff --git a/application/index/view/tb_etp_rzcw/tb_etp_rzcw.html b/application/index/view/tb_etp_rzcw/tb_etp_rzcw.html new file mode 100644 index 0000000..379a141 --- /dev/null +++ b/application/index/view/tb_etp_rzcw/tb_etp_rzcw.html @@ -0,0 +1,296 @@ + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + +
          +
          + 数据记录 +
          +
          + 导出 + + +
          +
          +
          +
          + +
          +
          + + + + + + diff --git a/application/index/view/tb_jdw/tb_jdw.html b/application/index/view/tb_jdw/tb_jdw.html new file mode 100644 index 0000000..e1843d7 --- /dev/null +++ b/application/index/view/tb_jdw/tb_jdw.html @@ -0,0 +1,316 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + + + + diff --git a/application/index/view/tb_mic/tb_mic.html b/application/index/view/tb_mic/tb_mic.html new file mode 100644 index 0000000..0012fd5 --- /dev/null +++ b/application/index/view/tb_mic/tb_mic.html @@ -0,0 +1,416 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + + + + diff --git a/application/index/view/tb_moa/index.html b/application/index/view/tb_moa/index.html new file mode 100644 index 0000000..81eae32 --- /dev/null +++ b/application/index/view/tb_moa/index.html @@ -0,0 +1,541 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + + + + diff --git a/application/index/view/tb_otp/tb_otp.html b/application/index/view/tb_otp/tb_otp.html new file mode 100644 index 0000000..a76b722 --- /dev/null +++ b/application/index/view/tb_otp/tb_otp.html @@ -0,0 +1,346 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + + + + diff --git a/application/index/view/tb_pd/tb_pd.html b/application/index/view/tb_pd/tb_pd.html new file mode 100644 index 0000000..f3ef98a --- /dev/null +++ b/application/index/view/tb_pd/tb_pd.html @@ -0,0 +1,404 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + + + + diff --git a/application/index/view/tb_scur/tb_scur.html b/application/index/view/tb_scur/tb_scur.html new file mode 100644 index 0000000..39baa89 --- /dev/null +++ b/application/index/view/tb_scur/tb_scur.html @@ -0,0 +1,329 @@ + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + diff --git a/application/index/view/tb_sf6/tb_sf6.html b/application/index/view/tb_sf6/tb_sf6.html new file mode 100644 index 0000000..2b3772e --- /dev/null +++ b/application/index/view/tb_sf6/tb_sf6.html @@ -0,0 +1,543 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + + + + + + + diff --git a/application/index/view/tb_sf6env/tb_sf6env.html b/application/index/view/tb_sf6env/tb_sf6env.html new file mode 100644 index 0000000..f2cd354 --- /dev/null +++ b/application/index/view/tb_sf6env/tb_sf6env.html @@ -0,0 +1,456 @@ + + + + + + + 抽水蓄能电站智能化状态监测系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + 数据记录 + +
          + +
          + + 导出 + + + + + +
          + +
          + +
          + +
          + + + +
          + +
          + + + + + + diff --git a/application/index/view/topmenu/123.html b/application/index/view/topmenu/123.html new file mode 100644 index 0000000..e5a8545 --- /dev/null +++ b/application/index/view/topmenu/123.html @@ -0,0 +1,119 @@ + + + + +抽水蓄能电站智能化状态监测系统 + + + + + + + + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {$data} +
          + + + + diff --git a/application/index/view/topmenu/index.html b/application/index/view/topmenu/index.html new file mode 100644 index 0000000..dccac6e --- /dev/null +++ b/application/index/view/topmenu/index.html @@ -0,0 +1 @@ + 抽水蓄能电站智能化状态监测系统 \ No newline at end of file diff --git a/application/index/view/topmenu/jquery-1.7.1.js b/application/index/view/topmenu/jquery-1.7.1.js new file mode 100644 index 0000000..b4ec7f8 --- /dev/null +++ b/application/index/view/topmenu/jquery-1.7.1.js @@ -0,0 +1,9266 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Released under the the MIT License. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT and BSD Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function( window, undefined ) { + +// Use the correct document accordingly with window argument (sandbox) +var document = window.document, + navigator = window.navigator, + location = window.location; +var jQuery = (function() { + +// Define a local copy of jQuery +var jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // A central reference to the root jQuery(document) + rootjQuery, + + // A simple way to check for HTML strings or ID strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Check if a string has a non-whitespace character in it + rnotwhite = /\S/, + + // Used for trimming whitespace + trimLeft = /^\s+/, + trimRight = /\s+$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + + // Useragent RegExp + rwebkit = /(webkit)[ \/]([\w.]+)/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, + rmsie = /(msie) ([\w.]+)/, + rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + + // Matches dashed string for camelizing + rdashAlpha = /-([a-z]|[0-9])/ig, + rmsPrefix = /^-ms-/, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return ( letter + "" ).toUpperCase(); + }, + + // Keep a UserAgent string for use with jQuery.browser + userAgent = navigator.userAgent, + + // For matching the engine and version of the browser + browserMatch, + + // The deferred used on DOM ready + readyList, + + // The ready event handler + DOMContentLoaded, + + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + push = Array.prototype.push, + slice = Array.prototype.slice, + trim = String.prototype.trim, + indexOf = Array.prototype.indexOf, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // The body element only exists once, optimize finding it + if ( selector === "body" && !context && document.body ) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = ( context ? context.ownerDocument || context : document ); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); + selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes; + } + + return jQuery.merge( this, selector ); + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.7.1", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return slice.call( this, 0 ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = this.constructor(); + + if ( jQuery.isArray( elems ) ) { + push.apply( ret, elems ); + + } else { + jQuery.merge( ret, elems ); + } + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Attach the listeners + jQuery.bindReady(); + + // Add the callback + readyList.add( fn ); + + return this; + }, + + eq: function( i ) { + i = +i; + return i === -1 ? + this.slice( i ) : + this.slice( i, i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.fireWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).off( "ready" ); + } + } + }, + + bindReady: function() { + if ( readyList ) { + return; + } + + readyList = jQuery.Callbacks( "once memory" ); + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + return setTimeout( jQuery.ready, 1 ); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + // A crude way of determining if an object is a window + isWindow: function( obj ) { + return obj && typeof obj === "object" && "setInterval" in obj; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + for ( var name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction( object ); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } + + return object; + }, + + // Use native String.trim function wherever possible + trim: trim ? + function( text ) { + return text == null ? + "" : + trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); + }, + + // results is for internal usage only + makeArray: function( array, results ) { + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + var type = jQuery.type( array ); + + if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }, + + inArray: function( elem, array, i ) { + var len; + + if ( array ) { + if ( indexOf ) { + return indexOf.call( array, elem, i ); + } + + len = array.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in array && array[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var i = first.length, + j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var ret = [], retVal; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + var args = slice.call( arguments, 2 ), + proxy = function() { + return fn.apply( context, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + + return proxy; + }, + + // Mutifunctional method to get and set values to a collection + // The value/s can optionally be executed if it's a function + access: function( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + sub: function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }, + + browser: {} +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +// IE doesn't match non-breaking spaces with \s +if ( rnotwhite.test( "\xA0" ) ) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch(e) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +return jQuery; + +})(); + + +// String to Object flags format cache +var flagsCache = {}; + +// Convert String-formatted flags into Object-formatted ones and store in cache +function createFlags( flags ) { + var object = flagsCache[ flags ] = {}, + i, length; + flags = flags.split( /\s+/ ); + for ( i = 0, length = flags.length; i < length; i++ ) { + object[ flags[i] ] = true; + } + return object; +} + +/* + * Create a callback list using the following parameters: + * + * flags: an optional list of space-separated flags that will change how + * the callback list behaves + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible flags: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( flags ) { + + // Convert flags from String-formatted to Object-formatted + // (we check in cache first) + flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {}; + + var // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = [], + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Add one or several callbacks to the list + add = function( args ) { + var i, + length, + elem, + type, + actual; + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + // Inspect recursively + add( elem ); + } else if ( type === "function" ) { + // Add if not in unique mode and callback is not in + if ( !flags.unique || !self.has( elem ) ) { + list.push( elem ); + } + } + } + }, + // Fire callbacks + fire = function( context, args ) { + args = args || []; + memory = !flags.memory || [ context, args ]; + firing = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) { + memory = true; // Mark as halted + break; + } + } + firing = false; + if ( list ) { + if ( !flags.once ) { + if ( stack && stack.length ) { + memory = stack.shift(); + self.fireWith( memory[ 0 ], memory[ 1 ] ); + } + } else if ( memory === true ) { + self.disable(); + } else { + list = []; + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + var length = list.length; + add( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away, unless previous + // firing was halted (stopOnFalse) + } else if ( memory && memory !== true ) { + firingStart = length; + fire( memory[ 0 ], memory[ 1 ] ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + var args = arguments, + argIndex = 0, + argLength = args.length; + for ( ; argIndex < argLength ; argIndex++ ) { + for ( var i = 0; i < list.length; i++ ) { + if ( args[ argIndex ] === list[ i ] ) { + // Handle firingIndex and firingLength + if ( firing ) { + if ( i <= firingLength ) { + firingLength--; + if ( i <= firingIndex ) { + firingIndex--; + } + } + } + // Remove the element + list.splice( i--, 1 ); + // If we have some unicity property then + // we only need to do this once + if ( flags.unique ) { + break; + } + } + } + } + } + return this; + }, + // Control if a given callback is in the list + has: function( fn ) { + if ( list ) { + var i = 0, + length = list.length; + for ( ; i < length; i++ ) { + if ( fn === list[ i ] ) { + return true; + } + } + } + return false; + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory || memory === true ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( stack ) { + if ( firing ) { + if ( !flags.once ) { + stack.push( [ context, args ] ); + } + } else if ( !( flags.once && memory ) ) { + fire( context, args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!memory; + } + }; + + return self; +}; + + + + +var // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ + + Deferred: function( func ) { + var doneList = jQuery.Callbacks( "once memory" ), + failList = jQuery.Callbacks( "once memory" ), + progressList = jQuery.Callbacks( "memory" ), + state = "pending", + lists = { + resolve: doneList, + reject: failList, + notify: progressList + }, + promise = { + done: doneList.add, + fail: failList.add, + progress: progressList.add, + + state: function() { + return state; + }, + + // Deprecated + isResolved: doneList.fired, + isRejected: failList.fired, + + then: function( doneCallbacks, failCallbacks, progressCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks ); + return this; + }, + always: function() { + deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments ); + return this; + }, + pipe: function( fnDone, fnFail, fnProgress ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ], + progress: [ fnProgress, "notify" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + obj = promise; + } else { + for ( var key in promise ) { + obj[ key ] = promise[ key ]; + } + } + return obj; + } + }, + deferred = promise.promise({}), + key; + + for ( key in lists ) { + deferred[ key ] = lists[ key ].fire; + deferred[ key + "With" ] = lists[ key ].fireWith; + } + + // Handle state + deferred.done( function() { + state = "resolved"; + }, failList.disable, progressList.lock ).fail( function() { + state = "rejected"; + }, doneList.disable, progressList.lock ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( firstParam ) { + var args = sliceDeferred.call( arguments, 0 ), + i = 0, + length = args.length, + pValues = new Array( length ), + count = length, + pCount = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(), + promise = deferred.promise(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + deferred.resolveWith( deferred, args ); + } + }; + } + function progressFunc( i ) { + return function( value ) { + pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + deferred.notifyWith( promise, pValues ); + }; + } + if ( length > 1 ) { + for ( ; i < length; i++ ) { + if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return promise; + } +}); + + + + +jQuery.support = (function() { + + var support, + all, + a, + select, + opt, + input, + marginDiv, + fragment, + tds, + events, + eventName, + i, + isSupported, + div = document.createElement( "div" ), + documentElement = document.documentElement; + + // Preliminary tests + div.setAttribute("className", "t"); + div.innerHTML = "
          a"; + + all = div.getElementsByTagName( "*" ); + a = div.getElementsByTagName( "a" )[ 0 ]; + + // Can't get basic test support + if ( !all || !all.length || !a ) { + return {}; + } + + // First batch of supports tests + select = document.createElement( "select" ); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName( "input" )[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute("href") === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.55/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Tests for enctype support on a form(#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent( "onclick" ); + } + + // Check if a radio maintains its value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; + + input.setAttribute("checked", "checked"); + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.lastChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + fragment.removeChild( input ); + fragment.appendChild( div ); + + div.innerHTML = ""; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( window.getComputedStyle ) { + marginDiv = document.createElement( "div" ); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.style.width = "2px"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; + } + + // Technique from Juriy Zaytsev + // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for( i in { + submit: 1, + change: 1, + focusin: 1 + }) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + fragment.removeChild( div ); + + // Null elements to avoid leaks in IE + fragment = select = opt = marginDiv = div = input = null; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, outer, inner, table, td, offsetSupport, + conMarginTop, ptlm, vb, style, html, + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + conMarginTop = 1; + ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;"; + vb = "visibility:hidden;border:0;"; + style = "style='" + ptlm + "border:5px solid #000;padding:0;'"; + html = "
          " + + "" + + "
          "; + + container = document.createElement("div"); + container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px"; + body.insertBefore( container, body.firstChild ); + + // Construct the test element + div = document.createElement("div"); + container.appendChild( div ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + div.innerHTML = "
          t
          "; + tds = div.getElementsByTagName( "td" ); + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE <= 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Figure out if the W3C box model works as expected + div.innerHTML = ""; + div.style.width = div.style.paddingLeft = "1px"; + jQuery.boxModel = support.boxModel = div.offsetWidth === 2; + + if ( typeof div.style.zoom !== "undefined" ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = ""; + div.innerHTML = "
          "; + support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); + } + + div.style.cssText = ptlm + vb; + div.innerHTML = html; + + outer = div.firstChild; + inner = outer.firstChild; + td = outer.nextSibling.firstChild.firstChild; + + offsetSupport = { + doesNotAddBorder: ( inner.offsetTop !== 5 ), + doesAddBorderForTableAndCells: ( td.offsetTop === 5 ) + }; + + inner.style.position = "fixed"; + inner.style.top = "20px"; + + // safari subtracts parent border width here which is 5px + offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 ); + inner.style.position = inner.style.top = ""; + + outer.style.overflow = "hidden"; + outer.style.position = "relative"; + + offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 ); + offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop ); + + body.removeChild( container ); + div = container = null; + + jQuery.extend( support, offsetSupport ); + }); + + return support; +})(); + + + + +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([A-Z])/g; + +jQuery.extend({ + cache: {}, + + // Please use with caution + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var privateCache, thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey, + isEvents = name === "events"; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = ++jQuery.uuid; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + privateCache = thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Users should not attempt to inspect the internal events object using jQuery.data, + // it is undocumented and subject to change. But does anyone listen? No. + if ( isEvents && !thisCache[ name ] ) { + return privateCache.events; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, l, + + // Reference to internal data cache key + internalKey = jQuery.expando, + + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + + // See jQuery.data for more information + id = isNode ? elem[ internalKey ] : internalKey; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split( " " ); + } + } + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject(cache[ id ]) ) { + return; + } + } + + // Browsers that fail expando deletion also refuse to delete expandos on + // the window, but it will allow it on all other JS objects; other browsers + // don't care + // Ensure that `cache` is not a window object #10080 + if ( jQuery.support.deleteExpando || !cache.setInterval ) { + delete cache[ id ]; + } else { + cache[ id ] = null; + } + + // We destroyed the cache and need to eliminate the expando on the node to avoid + // false lookups in the cache for entries that no longer exist + if ( isNode ) { + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( jQuery.support.deleteExpando ) { + delete elem[ internalKey ]; + } else if ( elem.removeAttribute ) { + elem.removeAttribute( internalKey ); + } else { + elem[ internalKey ] = null; + } + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + if ( elem.nodeName ) { + var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; + + if ( match ) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + + return true; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var parts, attr, name, + data = null; + + if ( typeof key === "undefined" ) { + if ( this.length ) { + data = jQuery.data( this[0] ); + + if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) { + attr = this[0].attributes; + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( this[0], name, data[ name ] ); + } + } + jQuery._data( this[0], "parsedAttrs", true ); + } + } + + return data; + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + // Try to fetch any internally stored data first + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + data = dataAttr( this[0], key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + + } else { + return this.each(function() { + var self = jQuery( this ), + args = [ parts[0], value ]; + + self.triggerHandler( "setData" + parts[1] + "!", args ); + jQuery.data( this, key, value ); + self.triggerHandler( "changeData" + parts[1] + "!", args ); + }); + } + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + jQuery.isNumeric( data ) ? parseFloat( data ) : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + + + + +function handleQueueMarkDefer( elem, type, src ) { + var deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + defer = jQuery._data( elem, deferDataKey ); + if ( defer && + ( src === "queue" || !jQuery._data(elem, queueDataKey) ) && + ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) { + // Give room for hard-coded callbacks to fire first + // and eventually mark/queue something else on the element + setTimeout( function() { + if ( !jQuery._data( elem, queueDataKey ) && + !jQuery._data( elem, markDataKey ) ) { + jQuery.removeData( elem, deferDataKey, true ); + defer.fire(); + } + }, 0 ); + } +} + +jQuery.extend({ + + _mark: function( elem, type ) { + if ( elem ) { + type = ( type || "fx" ) + "mark"; + jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 ); + } + }, + + _unmark: function( force, elem, type ) { + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 ); + if ( count ) { + jQuery._data( elem, key, count ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }, + + queue: function( elem, type, data ) { + var q; + if ( elem ) { + type = ( type || "fx" ) + "queue"; + q = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + q.push( data ); + } + } + return q || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + hooks = {}; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + jQuery._data( elem, type + ".run", hooks ); + fn.call( elem, function() { + jQuery.dequeue( elem, type ); + }, hooks ); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue " + type + ".run", true ); + handleQueueMarkDefer( elem, type, "queue" ); + } + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function() { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, object ) { + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) { + count++; + tmp.add( resolve ); + } + } + resolve(); + return defer.promise(); + } +}); + + + + +var rclass = /[\n\t\r]/g, + rspace = /\s+/, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea)?$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + nodeHook, boolHook, fixSpecified; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.attr ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.prop ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classNames, i, l, elem, className, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + classNames = ( value || "" ).split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + className = (" " + elem.className + " ").replace( rclass, " " ); + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[ c ] + " ", " "); + } + elem.className = jQuery.trim( className ); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var self = jQuery(this), val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, i, max, option, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + i = one ? index : 0; + max = one ? index + 1 : options.length; + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + + attr: function( elem, name, value, pass ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var propName, attrNames, name, l, + i = 0; + + if ( value && elem.nodeType === 1 ) { + attrNames = value.toLowerCase().split( rspace ); + l = attrNames.length; + + for ( ; i < l; i++ ) { + name = attrNames[ i ]; + + if ( name ) { + propName = jQuery.propFix[ name ] || name; + + // See #9699 for explanation of this approach (setting first, then removal) + jQuery.attr( elem, name, "" ); + elem.removeAttribute( getSetAttribute ? name : propName ); + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && propName in elem ) { + elem[ propName ] = false; + } + } + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + // Use the value property for back compat + // Use the nodeHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional) +jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex; + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + // Fall back to attribute presence where some booleans are not supported + var attrNode, + property = jQuery.prop( elem, name ); + return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + fixSpecified = { + name: true, + id: true + }; + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ? + ret.nodeValue : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); + } + return ( ret.nodeValue = value + "" ); + } + }; + + // Apply the nodeHook to tabindex + jQuery.attrHooks.tabindex.set = nodeHook.set; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + if ( value === "" ) { + value = "false"; + } + nodeHook.set( elem, value, name ); + } + }; +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = "" + value ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); + + + + +var rformElems = /^(?:textarea|input|select)$/i, + rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/, + rhoverHack = /\bhover(\.\S+)?\b/, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, + quickParse = function( selector ) { + var quick = rquickIs.exec( selector ); + if ( quick ) { + // 0 1 2 3 + // [ _, tag, id, class ] + quick[1] = ( quick[1] || "" ).toLowerCase(); + quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" ); + } + return quick; + }, + quickIs = function( elem, m ) { + var attrs = elem.attributes || {}; + return ( + (!m[1] || elem.nodeName.toLowerCase() === m[1]) && + (!m[2] || (attrs.id || {}).value === m[2]) && + (!m[3] || m[3].test( (attrs[ "class" ] || {}).value )) + ); + }, + hoverHack = function( events ) { + return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); + }; + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + add: function( elem, types, handler, data, selector ) { + + var elemData, eventHandle, events, + t, tns, type, namespaces, handleObj, + handleObjIn, quick, handlers, special; + + // Don't attach events to noData or text/comment nodes (allow plain objects tho) + if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + events = elemData.events; + if ( !events ) { + elemData.events = events = {}; + } + eventHandle = elemData.handle; + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = jQuery.trim( hoverHack(types) ).split( " " ); + for ( t = 0; t < types.length; t++ ) { + + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = ( tns[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: tns[1], + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + quick: quickParse( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + handlers = events[ type ]; + if ( !handlers ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var elemData = jQuery.hasData( elem ) && jQuery._data( elem ), + t, tns, type, origType, namespaces, origCount, + j, events, special, handle, eventType, handleObj; + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = jQuery.trim( hoverHack( types || "" ) ).split(" "); + for ( t = 0; t < types.length; t++ ) { + tns = rtypenamespace.exec( types[t] ) || []; + type = origType = tns[1]; + namespaces = tns[2]; + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector? special.delegateType : special.bindType ) || type; + eventType = events[ type ] || []; + origCount = eventType.length; + namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + + // Remove matching events + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !namespaces || namespaces.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + eventType.splice( j--, 1 ); + + if ( handleObj.selector ) { + eventType.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( eventType.length === 0 && origCount !== eventType.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + handle = elemData.handle; + if ( handle ) { + handle.elem = null; + } + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery.removeData( elem, [ "events", "handle" ], true ); + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Don't do events on text and comment nodes + if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { + return; + } + + // Event object or event type + var type = event.type || event, + namespaces = [], + cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType; + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "!" ) >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf( "." ) >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.isTrigger = true; + event.exclusive = exclusive; + event.namespace = namespaces.join( "." ); + event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; + + // Handle a global trigger + if ( !elem ) { + + // TODO: Stop taunting the data cache; remove global events and always attach to document + cache = jQuery.cache; + for ( i in cache ) { + if ( cache[ i ].events && cache[ i ].events[ type ] ) { + jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); + } + } + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + eventPath = [[ elem, special.bindType || type ]]; + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; + old = null; + for ( ; cur; cur = cur.parentNode ) { + eventPath.push([ cur, bubbleType ]); + old = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( old && old === elem.ownerDocument ) { + eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); + } + } + + // Fire handlers on the event path + for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { + + cur = eventPath[i][0]; + event.type = eventPath[i][1]; + + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + // Note that this is a bare JS function and not a jQuery handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + // IE<9 dies on focus/blur to hidden element (#1486) + if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( old ) { + elem[ ontype ] = old; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event || window.event ); + + var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), + delegateCount = handlers.delegateCount, + args = [].slice.call( arguments, 0 ), + run_all = !event.exclusive && !event.namespace, + handlerQueue = [], + i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Determine handlers that should run if there are delegated events + // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) { + + // Pregenerate a single jQuery object for reuse with .is() + jqcur = jQuery(this); + jqcur.context = this.ownerDocument || this; + + for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { + selMatch = {}; + matches = []; + jqcur[0] = cur; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + sel = handleObj.selector; + + if ( selMatch[ sel ] === undefined ) { + selMatch[ sel ] = ( + handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel ) + ); + } + if ( selMatch[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, matches: matches }); + } + } + } + + // Add the remaining (directly-bound) handlers + if ( handlers.length > delegateCount ) { + handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); + } + + // Run delegates first; they may want to stop propagation beneath us + for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { + matched = handlerQueue[ i ]; + event.currentTarget = matched.elem; + + for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { + handleObj = matched.matches[ j ]; + + // Triggered event must either 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { + + event.data = handleObj.data; + event.handleObj = handleObj; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + return event.result; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** + props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, + originalEvent = event, + fixHook = jQuery.event.fixHooks[ event.type ] || {}, + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = jQuery.Event( originalEvent ); + + for ( i = copy.length; i; ) { + prop = copy[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Target should not be a text node (#504, Safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8) + if ( event.metaKey === undefined ) { + event.metaKey = event.ctrlKey; + } + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + ready: { + // Make sure the ready event is setup + setup: jQuery.bindReady + }, + + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + + focus: { + delegateType: "focusin" + }, + blur: { + delegateType: "focusout" + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +// Some plugins are using, but it's undocumented/deprecated and will be removed. +// The 1.7 special event interface should provide all the hooks needed now. +jQuery.event.handle = jQuery.event.dispatch; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + if ( elem.detachEvent ) { + elem.detachEvent( "on" + type, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var target = this, + related = event.relatedTarget, + handleObj = event.handleObj, + selector = handleObj.selector, + ret; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !form._submit_attached ) { + jQuery.event.add( form, "submit._submit", function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + }); + form._submit_attached = true; + } + }); + // return undefined since we don't need an event listener + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + jQuery.event.simulate( "change", this, event, true ); + } + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + elem._change_attached = true; + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on.call( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + var handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( var type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + live: function( types, data, fn ) { + jQuery( this.context ).on( types, this.selector, data, fn ); + return this; + }, + die: function( types, fn ) { + jQuery( this.context ).off( types, this.selector || "**", fn ); + return this; + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + + if ( jQuery.attrFn ) { + jQuery.attrFn[ name ] = true; + } + + if ( rkeyEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; + } + + if ( rmouseEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; + } +}); + + + +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + expando = "sizcache" + (Math.random() + '').replace('.', ''), + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true, + rBackslash = /\\/g, + rReturn = /\r\n/g, + rNonWord = /\W/; + +// Here we check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function() { + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function( selector, context, results, seed ) { + results = results || []; + context = context || document; + + var origContext = context; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var m, set, checkSet, extra, ret, cur, pop, i, + prune = true, + contextXML = Sizzle.isXML( context ), + parts = [], + soFar = selector; + + // Reset the position of the chunker regexp (start from head) + do { + chunker.exec( "" ); + m = chunker.exec( soFar ); + + if ( m ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + } while ( m ); + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context, seed ); + + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) { + selector += parts.shift(); + } + + set = posProcess( selector, set, seed ); + } + } + + } else { + // Take a shortcut and set the context if the root selector is an ID + // (but not if it'll be faster if the inner selector is an ID) + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + + ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? + Sizzle.filter( ret.expr, ret.set )[0] : + ret.set[0]; + } + + if ( context ) { + ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + + set = ret.expr ? + Sizzle.filter( ret.expr, ret.set ) : + ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray( set ); + + } else { + prune = false; + } + + while ( parts.length ) { + cur = parts.pop(); + pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + Sizzle.error( cur || selector ); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + + } else if ( context && context.nodeType === 1 ) { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + + } else { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function( results ) { + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; + +Sizzle.matches = function( expr, set ) { + return Sizzle( expr, null, null, set ); +}; + +Sizzle.matchesSelector = function( node, expr ) { + return Sizzle( expr, null, null, [node] ).length > 0; +}; + +Sizzle.find = function( expr, context, isXML ) { + var set, i, len, match, type, left; + + if ( !expr ) { + return []; + } + + for ( i = 0, len = Expr.order.length; i < len; i++ ) { + type = Expr.order[i]; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + left = match[1]; + match.splice( 1, 1 ); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace( rBackslash, "" ); + set = Expr.find[ type ]( match, context, isXML ); + + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( "*" ) : + []; + } + + return { set: set, expr: expr }; +}; + +Sizzle.filter = function( expr, set, inplace, not ) { + var match, anyFound, + type, found, item, filter, left, + i, pass, + old = expr, + result = [], + curLoop = set, + isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); + + while ( expr && set.length ) { + for ( type in Expr.filter ) { + if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { + filter = Expr.filter[ type ]; + left = match[1]; + + anyFound = false; + + match.splice(1,1); + + if ( left.substr( left.length - 1 ) === "\\" ) { + continue; + } + + if ( curLoop === result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + pass = not ^ found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + + } else { + curLoop[i] = false; + } + + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + // Improper expression + if ( expr === old ) { + if ( anyFound == null ) { + Sizzle.error( expr ); + + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Utility function for retreiving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +var getText = Sizzle.getText = function( elem ) { + var i, node, + nodeType = elem.nodeType, + ret = ""; + + if ( nodeType ) { + if ( nodeType === 1 || nodeType === 9 ) { + // Use textContent || innerText for elements + if ( typeof elem.textContent === 'string' ) { + return elem.textContent; + } else if ( typeof elem.innerText === 'string' ) { + // Replace IE's carriage returns + return elem.innerText.replace( rReturn, '' ); + } else { + // Traverse it's children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + } else { + + // If no nodeType, this is expected to be an array + for ( i = 0; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + if ( node.nodeType !== 8 ) { + ret += getText( node ); + } + } + } + return ret; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + + match: { + ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + + leftMatch: {}, + + attrMap: { + "class": "className", + "for": "htmlFor" + }, + + attrHandle: { + href: function( elem ) { + return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); + } + }, + + relative: { + "+": function(checkSet, part){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !rNonWord.test( part ), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag ) { + part = part.toLowerCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + + ">": function( checkSet, part ) { + var elem, + isPartStr = typeof part === "string", + i = 0, + l = checkSet.length; + + if ( isPartStr && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + + } else { + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + + "": function(checkSet, part, isXML){ + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); + }, + + "~": function( checkSet, part, isXML ) { + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); + } + }, + + find: { + ID: function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }, + + NAME: function( match, context ) { + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], + results = context.getElementsByName( match[1] ); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + + TAG: function( match, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( match[1] ); + } + } + }, + preFilter: { + CLASS: function( match, curLoop, inplace, result, not, isXML ) { + match = " " + match[1].replace( rBackslash, "" ) + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { + if ( !inplace ) { + result.push( elem ); + } + + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + + ID: function( match ) { + return match[1].replace( rBackslash, "" ); + }, + + TAG: function( match, curLoop ) { + return match[1].replace( rBackslash, "" ).toLowerCase(); + }, + + CHILD: function( match ) { + if ( match[1] === "nth" ) { + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + match[2] = match[2].replace(/^\+|\s*/g, ''); + + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( + match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + // calculate the numbers (first)n+(last) including if they are negative + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + // TODO: Move to normal caching system + match[0] = done++; + + return match; + }, + + ATTR: function( match, curLoop, inplace, result, not, isXML ) { + var name = match[1] = match[1].replace( rBackslash, "" ); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + // Handle if an un-quoted value was used + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + + PSEUDO: function( match, curLoop, inplace, result, not ) { + if ( match[1] === "not" ) { + // If we're dealing with a complex expression, or a simple one + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + + if ( !inplace ) { + result.push.apply( result, ret ); + } + + return false; + } + + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + + POS: function( match ) { + match.unshift( true ); + + return match; + } + }, + + filters: { + enabled: function( elem ) { + return elem.disabled === false && elem.type !== "hidden"; + }, + + disabled: function( elem ) { + return elem.disabled === true; + }, + + checked: function( elem ) { + return elem.checked === true; + }, + + selected: function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + parent: function( elem ) { + return !!elem.firstChild; + }, + + empty: function( elem ) { + return !elem.firstChild; + }, + + has: function( elem, i, match ) { + return !!Sizzle( match[3], elem ).length; + }, + + header: function( elem ) { + return (/h\d/i).test( elem.nodeName ); + }, + + text: function( elem ) { + var attr = elem.getAttribute( "type" ), type = elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); + }, + + radio: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; + }, + + checkbox: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; + }, + + file: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; + }, + + password: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; + }, + + submit: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; + }, + + image: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; + }, + + reset: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; + }, + + button: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; + }, + + input: function( elem ) { + return (/input|select|textarea|button/i).test( elem.nodeName ); + }, + + focus: function( elem ) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + first: function( elem, i ) { + return i === 0; + }, + + last: function( elem, i, match, array ) { + return i === array.length - 1; + }, + + even: function( elem, i ) { + return i % 2 === 0; + }, + + odd: function( elem, i ) { + return i % 2 === 1; + }, + + lt: function( elem, i, match ) { + return i < match[3] - 0; + }, + + gt: function( elem, i, match ) { + return i > match[3] - 0; + }, + + nth: function( elem, i, match ) { + return match[3] - 0 === i; + }, + + eq: function( elem, i, match ) { + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function( elem, match, i, array ) { + var name = match[1], + filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; + + } else if ( name === "not" ) { + var not = match[3]; + + for ( var j = 0, l = not.length; j < l; j++ ) { + if ( not[j] === elem ) { + return false; + } + } + + return true; + + } else { + Sizzle.error( name ); + } + }, + + CHILD: function( elem, match ) { + var first, last, + doneName, parent, cache, + count, diff, + type = match[1], + node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + + case "nth": + first = match[2]; + last = match[3]; + + if ( first === 1 && last === 0 ) { + return true; + } + + doneName = match[0]; + parent = elem.parentNode; + + if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) { + count = 0; + + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + + parent[ expando ] = doneName; + } + + diff = elem.nodeIndex - last; + + if ( first === 0 ) { + return diff === 0; + + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + } + }, + + ID: function( elem, match ) { + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + + TAG: function( elem, match ) { + return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match; + }, + + CLASS: function( elem, match ) { + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + + ATTR: function( elem, match ) { + var name = match[1], + result = Sizzle.attr ? + Sizzle.attr( elem, name ) : + Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + !type && Sizzle.attr ? + result != null : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value !== check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + + POS: function( elem, match, i, array ) { + var name = match[2], + filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS, + fescape = function(all, num){ + return "\\" + (num - 0 + 1); + }; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); +} + +var makeArray = function( array, results ) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +// Perform a simple check to determine if the browser is capable of +// converting a NodeList to an array using builtin methods. +// Also verifies that the returned array holds DOM nodes +// (which is not the case in the Blackberry browser) +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; + +// Provide a fallback method if it does not work +} catch( e ) { + makeArray = function( array, results ) { + var i = 0, + ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + + } else { + if ( typeof array.length === "number" ) { + for ( var l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + + } else { + for ( ; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder, siblingCheck; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + return a.compareDocumentPosition ? -1 : 1; + } + + return a.compareDocumentPosition(b) & 4 ? -1 : 1; + }; + +} else { + sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + + siblingCheck = function( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + }; +} + +// Check to see if the browser returns elements by name when +// querying by getElementById (and provide a workaround) +(function(){ + // We're going to inject a fake input element with a specified name + var form = document.createElement("div"), + id = "script" + (new Date()).getTime(), + root = document.documentElement; + + form.innerHTML = ""; + + // Inject it into the root element, check its status, and remove it quickly + root.insertBefore( form, root.firstChild ); + + // The workaround has to do additional checks after a getElementById + // Which slows things down for other browsers (hence the branching) + if ( document.getElementById( id ) ) { + Expr.find.ID = function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + + return m ? + m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? + [m] : + undefined : + []; + } + }; + + Expr.filter.ID = function( elem, match ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + + root.removeChild( form ); + + // release memory in IE + root = form = null; +})(); + +(function(){ + // Check to see if the browser returns only elements + // when doing getElementsByTagName("*") + + // Create a fake element + var div = document.createElement("div"); + div.appendChild( document.createComment("") ); + + // Make sure no comments are found + if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function( match, context ) { + var results = context.getElementsByTagName( match[1] ); + + // Filter out possible comments + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + } + + // Check to see if an attribute returns normalized href attributes + div.innerHTML = ""; + + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + div.firstChild.getAttribute("href") !== "#" ) { + + Expr.attrHandle.href = function( elem ) { + return elem.getAttribute( "href", 2 ); + }; + } + + // release memory in IE + div = null; +})(); + +if ( document.querySelectorAll ) { + (function(){ + var oldSizzle = Sizzle, + div = document.createElement("div"), + id = "__sizzle__"; + + div.innerHTML = "

          "; + + // Safari can't handle uppercase or unicode characters when + // in quirks mode. + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function( query, context, extra, seed ) { + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && !Sizzle.isXML(context) ) { + // See if we find a selector to speed up + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); + + if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { + // Speed-up: Sizzle("TAG") + if ( match[1] ) { + return makeArray( context.getElementsByTagName( query ), extra ); + + // Speed-up: Sizzle(".CLASS") + } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { + return makeArray( context.getElementsByClassName( match[2] ), extra ); + } + } + + if ( context.nodeType === 9 ) { + // Speed-up: Sizzle("body") + // The body element only exists once, optimize finding it + if ( query === "body" && context.body ) { + return makeArray( [ context.body ], extra ); + + // Speed-up: Sizzle("#ID") + } else if ( match && match[3] ) { + var elem = context.getElementById( match[3] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id === match[3] ) { + return makeArray( [ elem ], extra ); + } + + } else { + return makeArray( [], extra ); + } + } + + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(qsaError) {} + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || id, + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if ( !old ) { + context.setAttribute( "id", nid ); + } else { + nid = nid.replace( /'/g, "\\$&" ); + } + if ( relativeHierarchySelector && hasParent ) { + context = context.parentNode; + } + + try { + if ( !relativeHierarchySelector || hasParent ) { + return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); + } + + } catch(pseudoError) { + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } + } + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + // release memory in IE + div = null; + })(); +} + +(function(){ + var html = document.documentElement, + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; + + if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); + + } catch( pseudoError ) { + pseudoWorks = true; + } + + Sizzle.matchesSelector = function( node, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + + if ( !Sizzle.isXML( node ) ) { + try { + if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } + } + } catch(e) {} + } + + return Sizzle(expr, null, null, [node]).length > 0; + }; + } +})(); + +(function(){ + var div = document.createElement("div"); + + div.innerHTML = "
          "; + + // Opera can't find a second classname (in 9.6) + // Also, make sure that getElementsByClassName actually exists + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) { + return; + } + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function( match, context, isXML ) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + // release memory in IE + div = null; +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( elem.nodeName.toLowerCase() === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +if ( document.documentElement.contains ) { + Sizzle.contains = function( a, b ) { + return a !== b && (a.contains ? a.contains(b) : true); + }; + +} else if ( document.documentElement.compareDocumentPosition ) { + Sizzle.contains = function( a, b ) { + return !!(a.compareDocumentPosition(b) & 16); + }; + +} else { + Sizzle.contains = function() { + return false; + }; +} + +Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +var posProcess = function( selector, context, seed ) { + var match, + tmpSet = [], + later = "", + root = context.nodeType ? [context] : context; + + // Position selectors must be done after the filter + // And so must :not(positional) so we move all PSEUDOs to the end + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet, seed ); + } + + return Sizzle.filter( later, tmpSet ); +}; + +// EXPOSE +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +Sizzle.selectors.attrMap = {}; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.filters; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})(); + + +var runtil = /Until$/, + rparentsprev = /^(?:parents|prevUntil|prevAll)/, + // Note: This RegExp should be improved, or likely pulled from Sizzle + rmultiselector = /,/, + isSimple = /^.[^:#\[\.,]*$/, + slice = Array.prototype.slice, + POS = jQuery.expr.match.POS, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + var ret = this.pushStack( "", "find", selector ), + length, n, r; + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + POS.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var ret = [], i, l, cur = this[0]; + + // Array (deprecated as of jQuery 1.7) + if ( jQuery.isArray( selectors ) ) { + var level = 1; + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( i = 0; i < selectors.length; i++ ) { + + if ( jQuery( cur ).is( selectors[ i ] ) ) { + ret.push({ selector: selectors[ i ], elem: cur, level: level }); + } + } + + cur = cur.parentNode; + level++; + } + + return ret; + } + + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( i = 0, l = this.length; i < l; i++ ) { + cur = this[i]; + + while ( cur ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + + } else { + cur = cur.parentNode; + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { + break; + } + } + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + andSelf: function() { + return this.add( this.prevObject ); + } +}); + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return jQuery.nth( elem, 2, "nextSibling" ); + }, + prev: function( elem ) { + return jQuery.nth( elem, 2, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( elem.parentNode.firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.makeArray( elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, slice.call( arguments ).join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + nth: function( cur, result, dir, elem ) { + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} + + + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, + rtagName = /<([\w:]+)/, + rtbody = /", "" ], + legend: [ 1, "
          ", "
          " ], + thead: [ 1, "", "
          " ], + tr: [ 2, "", "
          " ], + td: [ 3, "", "
          " ], + col: [ 2, "", "
          " ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }, + safeFragment = createSafeFragment( document ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE can't serialize and + + + + + + + + + + +
          +{include file="common/topmenu" /} +
          +
          +
          +
          + 设备列表 +
          +
          +
            +
            +
            +
            +
            +
            + 数据展示 + +
            + 开始时间 +     + 结束时间 +       + +       +
            +
            +
            +
            +
            +
            + +
            + +
            + +
            +
            + + +
            +
            +
            +
            +
            +
            + + + diff --git a/application/index/view/zchart/zchart.html b/application/index/view/zchart/zchart.html new file mode 100644 index 0000000..a070fed --- /dev/null +++ b/application/index/view/zchart/zchart.html @@ -0,0 +1 @@ + 抽水蓄能电站智能化状态监测系统
            \ No newline at end of file diff --git a/application/map/controller/Bdmap.php b/application/map/controller/Bdmap.php new file mode 100644 index 0000000..80cfd9a --- /dev/null +++ b/application/map/controller/Bdmap.php @@ -0,0 +1,13 @@ + +// +---------------------------------------------------------------------- + +return [ + '__pattern__' => [ + 'name' => '\w+', + ], + '[hello]' => [ + ':id' => ['index/hello', ['method' => 'get'], ['id' => '\d+']], + ':name' => ['index/hello', ['method' => 'post']], + ], + +]; diff --git a/application/tags.php b/application/tags.php new file mode 100644 index 0000000..e213e0a --- /dev/null +++ b/application/tags.php @@ -0,0 +1,28 @@ + +// +---------------------------------------------------------------------- + +// 应用行为扩展定义文件 +return [ + // 应用初始化 + 'app_init' => [], + // 应用开始 + 'app_begin' => [], + // 模块初始化 + 'module_init' => [], + // 操作开始执行 + 'action_begin' => [], + // 视图内容过滤 + 'view_filter' => [], + // 日志写入 + 'log_write' => [], + // 应用结束 + 'app_end' => [], +]; diff --git a/build.php b/build.php new file mode 100644 index 0000000..b37d3ab --- /dev/null +++ b/build.php @@ -0,0 +1,25 @@ + +// +---------------------------------------------------------------------- + +return [ + // 生成应用公共文件 + '__file__' => ['common.php', 'config.php', 'database.php'], + + // 定义demo模块的自动生成 (按照实际定义的文件名生成) + 'demo' => [ + '__file__' => ['common.php'], + '__dir__' => ['behavior', 'controller', 'model', 'view'], + 'controller' => ['Index', 'Test', 'UserType'], + 'model' => ['User', 'UserType'], + 'view' => ['index/index'], + ], + // 其他更多的模块定义 +]; diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..8375ed3 --- /dev/null +++ b/composer.json @@ -0,0 +1,38 @@ +{ + "name": "topthink/think", + "description": "the new thinkphp framework", + "type": "project", + "keywords": [ + "framework", + "thinkphp", + "ORM" + ], + "homepage": "http://thinkphp.cn/", + "license": "Apache-2.0", + "authors": [ + { + "name": "liu21st", + "email": "liu21st@gmail.com" + } + ], + "require": { + "php": ">=5.4.0", + "topthink/framework": "~5.0.0", + "topthink/think-captcha": "1.*", + "topthink/think-migration": "1.*", + "topthink/think-mongo": "1.*", + "topthink/think-queue": "1.*", + "topthink/think-image": "1.*" + }, + "autoload": { + "psr-4": { + "app\\": "application" + } + }, + "extra": { + "think-path": "thinkphp" + }, + "config": { + "preferred-install": "dist" + } +} diff --git a/extend/.gitignore b/extend/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/extend/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/fan.sql b/fan.sql new file mode 100644 index 0000000..b4bdfcb --- /dev/null +++ b/fan.sql @@ -0,0 +1,156 @@ +-- phpMyAdmin SQL Dump +-- version phpStudy 2014 +-- http://www.phpmyadmin.net +-- +-- 主机: 192.168.1.188 +-- 生成日期: 2018 年 01 月 10 日 03:30 +-- 服务器版本: 5.7.20 +-- PHP 版本: 5.4.45 + +SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; + +-- +-- 数据库: `fan` +-- + +-- -------------------------------------------------------- + +-- +-- 表的结构 `tp_admin` +-- + +CREATE TABLE IF NOT EXISTS `tp_admin` ( + `id` mediumint(9) NOT NULL AUTO_INCREMENT, + `username` varchar(30) NOT NULL, + `password` varchar(20) NOT NULL, + PRIMARY KEY (`id`) USING HASH +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=29 ; + +-- +-- 转存表中的数据 `tp_admin` +-- + +INSERT INTO `tp_admin` (`id`, `username`, `password`) VALUES +(21, '我我我呵呵呵', '123'), +(20, '瓜沥源', '123456'), +(22, '沃维汉', '111'), +(23, '喔哦哦', '111'), +(24, '你是', '1233'), +(25, 'fan', '123'), +(26, '11', '11'), +(27, 'ee', '123'), +(28, '33', '33'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `tp_auth_group` +-- + +CREATE TABLE IF NOT EXISTS `tp_auth_group` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `title` char(100) NOT NULL DEFAULT '', + `status` tinyint(1) NOT NULL DEFAULT '1', + `rules` char(80) NOT NULL DEFAULT '', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=15 ; + +-- +-- 转存表中的数据 `tp_auth_group` +-- + +INSERT INTO `tp_auth_group` (`id`, `title`, `status`, `rules`) VALUES +(2, '管理员11', 0, ''), +(1, '超级管理员预案', 1, ''), +(14, 'wo', 1, ''), +(12, '我', 1, ''); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `tp_auth_group_access` +-- + +CREATE TABLE IF NOT EXISTS `tp_auth_group_access` ( + `uid` mediumint(8) unsigned NOT NULL, + `group_id` mediumint(8) unsigned NOT NULL, + UNIQUE KEY `uid_group_id` (`uid`,`group_id`), + KEY `uid` (`uid`), + KEY `group_id` (`group_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- 转存表中的数据 `tp_auth_group_access` +-- + +INSERT INTO `tp_auth_group_access` (`uid`, `group_id`) VALUES +(21, 2), +(22, 2), +(26, 2); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `tp_auth_group_rule` +-- + +CREATE TABLE IF NOT EXISTS `tp_auth_group_rule` ( + `group_id` mediumint(8) unsigned NOT NULL, + `rid` mediumint(8) unsigned NOT NULL, + UNIQUE KEY `uid_group_id` (`group_id`,`rid`), + KEY `uid` (`group_id`), + KEY `group_id` (`rid`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- 转存表中的数据 `tp_auth_group_rule` +-- + +INSERT INTO `tp_auth_group_rule` (`group_id`, `rid`) VALUES +(1, 1), +(1, 6), +(2, 1), +(2, 7), +(2, 9); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `tp_auth_rule` +-- + +CREATE TABLE IF NOT EXISTS `tp_auth_rule` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` char(80) NOT NULL DEFAULT '', + `title` char(20) NOT NULL DEFAULT '', + `type` tinyint(1) NOT NULL DEFAULT '1', + `status` tinyint(1) NOT NULL DEFAULT '1', + `condition` char(100) NOT NULL DEFAULT '', + `pid` mediumint(9) NOT NULL DEFAULT '1', + `level` tinyint(1) NOT NULL DEFAULT '0', + `sort` int(5) NOT NULL DEFAULT '50', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ; + +-- +-- 转存表中的数据 `tp_auth_rule` +-- + +INSERT INTO `tp_auth_rule` (`id`, `name`, `title`, `type`, `status`, `condition`, `pid`, `level`, `sort`) VALUES +(1, 'sys', '系统设置', 1, 1, '', 0, 0, 50), +(9, 'ww', 'ww', 1, 1, '', 0, 0, 50), +(7, 'w', '我', 1, 1, '', 0, 0, 50), +(8, '1', '你', 1, 1, '', 0, 0, 50), +(10, 'e', 'EE', 1, 1, '', 1, 0, 50); + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/nbproject/private/config.properties b/nbproject/private/config.properties new file mode 100644 index 0000000..e69de29 diff --git a/nbproject/private/private.properties b/nbproject/private/private.properties new file mode 100644 index 0000000..882bb01 --- /dev/null +++ b/nbproject/private/private.properties @@ -0,0 +1,2 @@ +auxiliary.org-netbeans-modules-php-phpdoc.enabled=true +url=http://localhost/ diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml new file mode 100644 index 0000000..6807a2b --- /dev/null +++ b/nbproject/private/private.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/nbproject/project.properties b/nbproject/project.properties new file mode 100644 index 0000000..79bf1bf --- /dev/null +++ b/nbproject/project.properties @@ -0,0 +1,8 @@ +auxiliary.org-netbeans-modules-php-smarty.smarty-framework=true +include.path=${php.global.include.path} +php.version=PHP_74 +source.encoding=UTF-8 +src.dir=. +tags.asp=false +tags.short=false +web.root=. diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 0000000..8113417 --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,9 @@ + + + org.netbeans.modules.php.project + + + think_project + + + diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..5a41bcf --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,21 @@ + + + + + ./tests/ + + + + + application/ + + + diff --git a/public/.db.php.swp b/public/.db.php.swp new file mode 100644 index 0000000..8aa3883 Binary files /dev/null and b/public/.db.php.swp differ diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..cbc7868 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,8 @@ + + Options +FollowSymlinks -Multiviews + RewriteEngine On + + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] + diff --git a/public/db.php b/public/db.php new file mode 100644 index 0000000..a64c3b5 --- /dev/null +++ b/public/db.php @@ -0,0 +1,8 @@ + diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..e71815a Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/htaccess.txt b/public/htaccess.txt new file mode 100644 index 0000000..b87ddd7 --- /dev/null +++ b/public/htaccess.txt @@ -0,0 +1 @@ +c038a86a9811e741a4f910be7 \ No newline at end of file diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..f4c9195 --- /dev/null +++ b/public/index.php @@ -0,0 +1,20 @@ + +// +---------------------------------------------------------------------- + +// [ 应用入口文件 ] + +// 定义应用目录 +define('APP_PATH', __DIR__ . '/../application/'); +//定义网站根目录 +define('SITE_URL', 'http://'.$_SERVER['HTTP_HOST']); +// 加载框架引导文件 +require __DIR__ . '/../thinkphp/start.php'; + \ No newline at end of file diff --git a/public/login_test.html b/public/login_test.html new file mode 100644 index 0000000..d60e5bd --- /dev/null +++ b/public/login_test.html @@ -0,0 +1,29 @@ + + + + + TODO supply a title + + + + + + + + diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/public/router.php b/public/router.php new file mode 100644 index 0000000..647c9bf --- /dev/null +++ b/public/router.php @@ -0,0 +1,20 @@ + +// +---------------------------------------------------------------------- +// $Id$ + +if (is_file($_SERVER["DOCUMENT_ROOT"] . $_SERVER["SCRIPT_NAME"])) { + return false; +} else { + if (!isset($_SERVER['PATH_INFO'])) { + $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI']; + } + require __DIR__ . "/index.php"; +} diff --git a/public/static/admin/css/combo.select.css b/public/static/admin/css/combo.select.css new file mode 100644 index 0000000..c6b9623 --- /dev/null +++ b/public/static/admin/css/combo.select.css @@ -0,0 +1,177 @@ +/** + * Variables + */ +/** + * Wrapper + */ +.combo-select { + position: relative; + max-width: 400px; + font: 100% Helvetica, Arial, Sans-serif; + border: 1px #ccc solid; + border-radius: 3px; } + .combo-select .combo-input { + margin-bottom: 0; } + +/** + * Input field + */ +.combo-input { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + margin: 0; + text-overflow: ellipsis; + white-space: nowrap; + border: none; + width: 100%; + box-sizing: border-box; + padding: 4px; + padding-right: 60px; + border-radius: 3px; } + .combo-input:focus { + outline: none; } + +/** + * Arrow + */ +.combo-arrow { + position: absolute; + right: 0; + top: 0; + height: 100%; + cursor: pointer; + text-align: center; + font-size: 14px; + width: 40px; + font-size: 12px; + color: #999999; } + .combo-arrow:before { + content: " "; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid #cccccc; + display: block; + width: 0; + height: 0; + top: 0; + right: 15px; + bottom: 0; + position: absolute; + margin: auto 0; } + +/** + * When opened + */ +.combo-open .combo-arrow { + border-color: #51A7E8; } + .combo-open .combo-arrow:before { + border-top: none; + border-bottom: 5px solid #cccccc; } + +/** + * When focused + */ +.combo-focus { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); + border-color: #51A7E8; } + .combo-focus input { + border-color: #51A7E8; } + +/** + * Hide native select + */ +.combo-select select { + position: absolute; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + -webkit-appearance: none; + opacity: 0; } + +@media only screen and (min-width: 960px) { + .combo-select select { + left: -1px; + top: -1px; + width: 0; + height: 0; + margin: 0; } } +/** + * Selected option + */ +.option-selected { + background-color: #eee; } + +/** + * Hovered option + */ +.option-hover { + background-color: #006eab; + color: #fff; } + +/** + * Option item + */ +.option-item { + cursor: pointer; + border-bottom: 1px #e3e3e3 solid; } + .option-item:hover { + background-color: #006eab; + color: #fff; } + .option-item:last-child { + border-bottom: none; } + +/** + * Disabled and optgroups + */ +.option-group { + cursor: text; + font-weight: 600; + background: #e1e1e1; + border: 1px #ccc solid; + border-width: 1px 0; } + +/** + * Disabled + */ +.option-disabled { + opacity: 0.5; } + +/** + * Dropdown + */ +.combo-dropdown { + position: absolute; + z-index: 1; + top: 100%; + left: 0; + min-width: 100%; + max-width: 300px; + max-height: 300px; + margin: 0; + padding: 0; + display: none; + overflow-y: auto; + background: #fff; + border: 1px solid #999999; + border-radius: 0; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); + box-sizing: border-box; } + .combo-dropdown li { + list-style: none; + padding: 8px 1em; + margin: 0; } + +/** + * On Active + */ +.combo-open .combo-dropdown { + display: block; } + +/** + * Search marker + */ +.combo-marker { + text-decoration: underline; } diff --git a/public/static/admin/css/style.css b/public/static/admin/css/style.css new file mode 100644 index 0000000..3c7c07f --- /dev/null +++ b/public/static/admin/css/style.css @@ -0,0 +1,58 @@ +html,body,div,ul,li,a{ + margin: 0px; + padding: 0px; +} +body{ + font-size: 14px; + font-family: "微软雅黑"; + background: #333; +} +ul{ + list-style: none; +} +a{ + text-decoration: none; +} +.header{ + height: 50px; + background: #128a28; +} +.header .nav{ + width: 1000px; + height: 50px; + line-height: 50px; + margin: 0 auto; + position: relative; + z-index: 111; +} +.header .nav li{ + float: left; + width: 14.28%; + height: 50px; + line-height: 50px; + text-align: center; +} +.header .nav li a{ + color: #fff; +} +.header .nav li .second-nav{ + width: 150px; + display: none; + position: relative; +} +.header .nav li .second-nav li{ + position: relative; + width: 100%; + height: 40px; + line-height: 40px; + background: #128A28; + border-top: 1px solid #097d1f; +} +.header .nav li .second-nav li .third-nav{ + /*position: absolute;*/ + width: 150px; + height: 200px; + display: none; + margin-left: 100%; + margin-top: -40px; +} diff --git a/public/static/admin/css/topmenu.css b/public/static/admin/css/topmenu.css new file mode 100644 index 0000000..bfe85a2 --- /dev/null +++ b/public/static/admin/css/topmenu.css @@ -0,0 +1,60 @@ +ul.topnav { + list-style: none; + padding: 0 20px; + margin: 0; + float: left; + width: 920px; + background: #222; + font-size: 1.2em; + background: url(topnav_bg.gif) repeat-x; +} +ul.topnav li { + float: left; + margin: 0; + padding: 0 15px 0 0; + position: relative; /*--Declare X and Y axis base for sub navigation--*/ +} +ul.topnav li a{ + padding: 10px 5px; + color: #fff; + display: block; + text-decoration: none; + float: left; +} +ul.topnav li a:hover{ + background: url(topnav_hover.gif) no-repeat center top; +} +ul.topnav li span { /*--Drop down trigger styles--*/ + width: 17px; + height: 35px; + float: left; + background: url(subnav_btn.gif) no-repeat center top; +} +ul.topnav li span.subhover {background-position: center bottom; cursor: pointer;} /*--Hover effect for trigger--*/ +ul.topnav li ul.subnav { + list-style: none; + position: absolute; /*--Important - Keeps subnav from affecting main navigation flow--*/ + left: 0; top: 35px; + background: #333; + margin: 0; padding: 0; + display: none; + float: left; + width: 170px; + border: 1px solid #111; +} +ul.topnav li ul.subnav li{ + margin: 0; padding: 0; + border-top: 1px solid #252525; /*--Create bevel effect--*/ + border-bottom: 1px solid #444; /*--Create bevel effect--*/ + clear: both; + width: 170px; +} +html ul.topnav li ul.subnav li a { + float: left; + width: 145px; + background: #333 url(dropdown_linkbg.gif) no-repeat 10px center; + padding-left: 20px; +} +html ul.topnav li ul.subnav li a:hover { /*--Hover effect for subnav links--*/ + background: #222 url(dropdown_linkbg.gif) no-repeat 10px center; +} \ No newline at end of file diff --git a/public/static/admin/fonts/fontawesome-webfont.eot b/public/static/admin/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..6cfd566 Binary files /dev/null and b/public/static/admin/fonts/fontawesome-webfont.eot differ diff --git a/public/static/admin/fonts/fontawesome-webfont.svg b/public/static/admin/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..a9f8469 --- /dev/null +++ b/public/static/admin/fonts/fontawesome-webfont.svg @@ -0,0 +1,504 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/static/admin/fonts/fontawesome-webfont.ttf b/public/static/admin/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..5cd6cff Binary files /dev/null and b/public/static/admin/fonts/fontawesome-webfont.ttf differ diff --git a/public/static/admin/fonts/fontawesome-webfont.woff b/public/static/admin/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..9eaecb3 Binary files /dev/null and b/public/static/admin/fonts/fontawesome-webfont.woff differ diff --git a/public/static/admin/fonts/glyphicons-halflings-regular.eot b/public/static/admin/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000..423bd5d Binary files /dev/null and b/public/static/admin/fonts/glyphicons-halflings-regular.eot differ diff --git a/public/static/admin/fonts/glyphicons-halflings-regular.svg b/public/static/admin/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..4469488 --- /dev/null +++ b/public/static/admin/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/static/admin/fonts/glyphicons-halflings-regular.ttf b/public/static/admin/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000..a498ef4 Binary files /dev/null and b/public/static/admin/fonts/glyphicons-halflings-regular.ttf differ diff --git a/public/static/admin/fonts/glyphicons-halflings-regular.woff b/public/static/admin/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..d83c539 Binary files /dev/null and b/public/static/admin/fonts/glyphicons-halflings-regular.woff differ diff --git a/public/static/admin/fonts/typicons.eot b/public/static/admin/fonts/typicons.eot new file mode 100644 index 0000000..57849d8 Binary files /dev/null and b/public/static/admin/fonts/typicons.eot differ diff --git a/public/static/admin/fonts/typicons.svg b/public/static/admin/fonts/typicons.svg new file mode 100644 index 0000000..22d032b --- /dev/null +++ b/public/static/admin/fonts/typicons.svg @@ -0,0 +1,1180 @@ + + + + +Created by FontForge 20120731 at Tue Jan 28 14:48:39 2014 + By Stephen Hutchings +(c) Stephen Hutchings 2012 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/admin/fonts/typicons.ttf b/public/static/admin/fonts/typicons.ttf new file mode 100644 index 0000000..91c02b3 Binary files /dev/null and b/public/static/admin/fonts/typicons.ttf differ diff --git a/public/static/admin/fonts/typicons.woff b/public/static/admin/fonts/typicons.woff new file mode 100644 index 0000000..1d5c583 Binary files /dev/null and b/public/static/admin/fonts/typicons.woff differ diff --git a/public/static/admin/fonts/weathericons-regular-webfont.eot b/public/static/admin/fonts/weathericons-regular-webfont.eot new file mode 100644 index 0000000..d9f8a71 Binary files /dev/null and b/public/static/admin/fonts/weathericons-regular-webfont.eot differ diff --git a/public/static/admin/fonts/weathericons-regular-webfont.svg b/public/static/admin/fonts/weathericons-regular-webfont.svg new file mode 100644 index 0000000..9c8d899 --- /dev/null +++ b/public/static/admin/fonts/weathericons-regular-webfont.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/static/admin/fonts/weathericons-regular-webfont.ttf b/public/static/admin/fonts/weathericons-regular-webfont.ttf new file mode 100644 index 0000000..e10fbc8 Binary files /dev/null and b/public/static/admin/fonts/weathericons-regular-webfont.ttf differ diff --git a/public/static/admin/fonts/weathericons-regular-webfont.woff b/public/static/admin/fonts/weathericons-regular-webfont.woff new file mode 100644 index 0000000..af1d7bb Binary files /dev/null and b/public/static/admin/fonts/weathericons-regular-webfont.woff differ diff --git a/public/static/admin/images/adam-jansen.jpg b/public/static/admin/images/adam-jansen.jpg new file mode 100644 index 0000000..29df975 Binary files /dev/null and b/public/static/admin/images/adam-jansen.jpg differ diff --git a/public/static/admin/images/bg_CAC.png b/public/static/admin/images/bg_CAC.png new file mode 100644 index 0000000..565736a Binary files /dev/null and b/public/static/admin/images/bg_CAC.png differ diff --git a/public/static/admin/images/logo.png b/public/static/admin/images/logo.png new file mode 100644 index 0000000..45909ee Binary files /dev/null and b/public/static/admin/images/logo.png differ diff --git a/public/static/admin/js/beyond.js b/public/static/admin/js/beyond.js new file mode 100644 index 0000000..09b420c --- /dev/null +++ b/public/static/admin/js/beyond.js @@ -0,0 +1,337 @@ +/*Sets Themed Colors Based on Themes*/ + +var themeprimary = getThemeColorFromCss('themeprimary'); +var themesecondary = getThemeColorFromCss('themesecondary'); +var themethirdcolor = getThemeColorFromCss('themethirdcolor'); +var themefourthcolor = getThemeColorFromCss('themefourthcolor'); +var themefifthcolor = getThemeColorFromCss('themefifthcolor'); + +//Gets Theme Colors From Selected Skin To Use For Drawing Charts +function getThemeColorFromCss(style) { + var $span = $("").hide().appendTo("body"); + $span.addClass(style); + var color = $span.css("color"); + $span.remove(); + return color; +} + + +/*Loading*/ +$(window) + .load(function () { + setTimeout(function () { + $('.loading-container') + .addClass('loading-inactive'); + }, 1000); + }); + + +/*Account Area --> Setting Button*/ +$('#btn-setting') + .on('click', function (e) { + $('.navbar-account') + .toggleClass('setting-open'); + }); + +/*Toggle FullScreen*/ +$('#fullscreen-toggler') + .on('click', function (e) { + var element = document.documentElement; + if (!$('body') + .hasClass("full-screen")) { + + $('body') + .addClass("full-screen"); + $('#fullscreen-toggler') + .addClass("active"); + if (element.requestFullscreen) { + element.requestFullscreen(); + } else if (element.mozRequestFullScreen) { + element.mozRequestFullScreen(); + } else if (element.webkitRequestFullscreen) { + element.webkitRequestFullscreen(); + } else if (element.msRequestFullscreen) { + element.msRequestFullscreen(); + } + + } else { + + $('body') + .removeClass("full-screen"); + $('#fullscreen-toggler') + .removeClass("active"); + + if (document.exitFullscreen) { + document.exitFullscreen(); + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } + + } + }); + +/*Handles Popovers*/ +var popovers = $('[data-toggle=popover]'); +$.each(popovers, function () { + $(this) + .popover({ + html: true, + template: '

            Popover right

            ' + }); +}); + +var hoverpopovers = $('[data-toggle=popover-hover]'); +$.each(hoverpopovers, function () { + $(this) + .popover({ + html: true, + template: '

            Popover right

            ', + trigger: "hover" + }); +}); + + +/*Handles ToolTips*/ +$("[data-toggle=tooltip]") + .tooltip({ + html: true + }); + +InitiateSideMenu(); +InitiateWidgets(); + +function InitiateSideMenu() { + + //Sidebar Toggler + $(".sidebar-toggler").on('click', function () { + $("#sidebar").toggleClass("hide"); + $(".sidebar-toggler").toggleClass("active"); + return false; + }); + //End Sidebar Toggler + + //Sidebar Collapse + var b = $("#sidebar").hasClass("menu-compact"); + $("#sidebar-collapse").on('click', function () { + if (!$('#sidebar').is(':visible')) + $("#sidebar").toggleClass("hide"); + $("#sidebar").toggleClass("menu-compact"); + $(".sidebar-collapse").toggleClass("active"); + b = $("#sidebar").hasClass("menu-compact"); + + if ($(".sidebar-menu").closest("div").hasClass("slimScrollDiv")) { + $(".sidebar-menu").slimScroll({ destroy: true }); + $(".sidebar-menu").attr('style', ''); + } + if (b) { + $(".open > .submenu") + .removeClass("open"); + } else { + if ($('.page-sidebar').hasClass('sidebar-fixed')) { + var position = (readCookie("rtl-support") || location.pathname == "/index-rtl-fa.html" || location.pathname == "/index-rtl-ar.html") ? 'right' : 'left'; + $('.sidebar-menu').slimscroll({ + height: 'auto', + position: position, + size: '3px', + color: themeprimary + }); + } + } + //Slim Scroll Handle + + + + }); + //End Sidebar Collapse + + + //Sidebar Menu Handle + $(".sidebar-menu").on('click', function (e) { + var menuLink = $(e.target).closest("a"); + if (!menuLink || menuLink.length == 0) + return; + if (!menuLink.hasClass("menu-dropdown")) { + if (b && menuLink.get(0).parentNode.parentNode == this) { + var menuText = menuLink.find(".menu-text").get(0); + if (e.target != menuText && !$.contains(menuText, e.target)) { + return false; + } + } + return; + } + var submenu = menuLink.next().get(0); + if (!$(submenu).is(":visible")) { + var c = $(submenu.parentNode).closest("ul"); + if (b && c.hasClass("sidebar-menu")) + return; + c.find("> .open > .submenu") + .each(function () { + if (this != submenu && !$(this.parentNode).hasClass("active")) + $(this).slideUp(200).parent().removeClass("open"); + }); + } + if (b && $(submenu.parentNode.parentNode).hasClass("sidebar-menu")) + return false; + $(submenu).slideToggle(200).parent().toggleClass("open"); + return false; + }); + //End Sidebar Menu Handle +} + +function InitiateWidgets() { + $('.widget-buttons *[data-toggle="maximize"]').on("click", function (event) { + event.preventDefault(); + var widget = $(this).parents(".widget").eq(0); + var button = $(this).find("i").eq(0); + var compress = "fa-compress"; + var expand = "fa-expand"; + if (widget.hasClass("maximized")) { + if (button) { + button.addClass(expand).removeClass(compress); + } + widget.removeClass("maximized"); + widget.find(".widget-body").css("height", "auto"); + } else { + if (button) { + button.addClass(compress).removeClass(expand); + } + widget.addClass("maximized"); + maximize(widget); + } + }); + + $('.widget-buttons *[data-toggle="collapse"]').on("click", function (event) { + event.preventDefault(); + var widget = $(this).parents(".widget").eq(0); + var body = widget.find(".widget-body"); + var button = $(this).find("i"); + var down = "fa-plus"; + var up = "fa-minus"; + var slidedowninterval = 300; + var slideupinterval = 200; + if (widget.hasClass("collapsed")) { + if (button) { + button.addClass(up).removeClass(down); + } + widget.removeClass("collapsed"); + body.slideUp(0, function () { + body.slideDown(slidedowninterval); + }); + } else { + if (button) { + button.addClass(down) + .removeClass(up); + } + body.slideUp(slideupinterval, function () { + widget.addClass("collapsed"); + }); + } + }); + + $('.widget-buttons *[data-toggle="dispose"]').on("click", function (event) { + event.preventDefault(); + var toolbarLink = $(this); + var widget = toolbarLink.parents(".widget").eq(0); + var disposeinterval = 300; + widget.hide(disposeinterval, function () { + widget.remove(); + }); + }); +} + +// Fullscreen Widget +function maximize(widgetbox) { + if (widgetbox) { + var windowHeight = $(window).height(); + var headerHeight = widgetbox.find(".widget-header").height(); + widgetbox.find(".widget-body").height(windowHeight - headerHeight); + } +} + +/* Scroll To */ +function scrollTo(el, offeset) { + var pos = (el && el.size() > 0) ? el.offset().top : 0; + jQuery('html,body').animate({ scrollTop: pos + (offeset ? offeset : 0) }, 'slow'); +} + +/*Show Notification*/ +function Notify(message, position, timeout, theme, icon, closable) { + toastr.options.positionClass = 'toast-' + position; + toastr.options.extendedTimeOut = 0; //1000; + toastr.options.timeOut = timeout; + toastr.options.closeButton = closable; + toastr.options.iconClass = icon + ' toast-' + theme; + toastr['custom'](message); +} + + + +//Switch Classes Function +function switchClasses(firstClass, secondClass) { + + var firstclasses = document.getElementsByClassName(firstClass); + + for (i = firstclasses.length - 1; i >= 0; i--) { + if (!hasClass(firstclasses[i], 'dropdown-menu')) { + addClass(firstclasses[i], firstClass + '-temp'); + removeClass(firstclasses[i], firstClass); + } + } + + var secondclasses = document.getElementsByClassName(secondClass); + + for (i = secondclasses.length - 1; i >= 0; i--) { + if (!hasClass(secondclasses[i], 'dropdown-menu')) { + addClass(secondclasses[i], firstClass); + removeClass(secondclasses[i], secondClass); + } + } + + tempClasses = document.getElementsByClassName(firstClass + '-temp'); + + for (i = tempClasses.length - 1; i >= 0; i--) { + if (!hasClass(tempClasses[i], 'dropdown-menu')) { + addClass(tempClasses[i], secondClass); + removeClass(tempClasses[i], firstClass + '-temp'); + } + } +} + + +//Add Classes Function +function addClass(elem, cls) { + var oldCls = elem.className; + if (oldCls) { + oldCls += " "; + } + elem.className = oldCls + cls; +} + +//Remove Classes Function +function removeClass(elem, cls) { + var str = " " + elem.className + " "; + elem.className = str.replace(" " + cls, "").replace(/^\s+/g, "").replace(/\s+$/g, ""); +} + +//Has Classes Function +function hasClass(elem, cls) { + var str = " " + elem.className + " "; + var testCls = " " + cls + " "; + return (str.indexOf(testCls) != -1); +} + +function warning(info, url){ + if(window.confirm(info)){ + window.location.href = url; + } +} diff --git a/public/static/admin/js/bootstrap.js b/public/static/admin/js/bootstrap.js new file mode 100644 index 0000000..c8f82e5 --- /dev/null +++ b/public/static/admin/js/bootstrap.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.4 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.4",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.4",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.4",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.4",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport),this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-mp.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.4",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.4",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.4",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a(document.body).height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/public/static/admin/js/jquery-1.7.1.js b/public/static/admin/js/jquery-1.7.1.js new file mode 100644 index 0000000..b4ec7f8 --- /dev/null +++ b/public/static/admin/js/jquery-1.7.1.js @@ -0,0 +1,9266 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Released under the the MIT License. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT and BSD Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function( window, undefined ) { + +// Use the correct document accordingly with window argument (sandbox) +var document = window.document, + navigator = window.navigator, + location = window.location; +var jQuery = (function() { + +// Define a local copy of jQuery +var jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // A central reference to the root jQuery(document) + rootjQuery, + + // A simple way to check for HTML strings or ID strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Check if a string has a non-whitespace character in it + rnotwhite = /\S/, + + // Used for trimming whitespace + trimLeft = /^\s+/, + trimRight = /\s+$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + + // Useragent RegExp + rwebkit = /(webkit)[ \/]([\w.]+)/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, + rmsie = /(msie) ([\w.]+)/, + rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + + // Matches dashed string for camelizing + rdashAlpha = /-([a-z]|[0-9])/ig, + rmsPrefix = /^-ms-/, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return ( letter + "" ).toUpperCase(); + }, + + // Keep a UserAgent string for use with jQuery.browser + userAgent = navigator.userAgent, + + // For matching the engine and version of the browser + browserMatch, + + // The deferred used on DOM ready + readyList, + + // The ready event handler + DOMContentLoaded, + + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + push = Array.prototype.push, + slice = Array.prototype.slice, + trim = String.prototype.trim, + indexOf = Array.prototype.indexOf, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // The body element only exists once, optimize finding it + if ( selector === "body" && !context && document.body ) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = ( context ? context.ownerDocument || context : document ); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); + selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes; + } + + return jQuery.merge( this, selector ); + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.7.1", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return slice.call( this, 0 ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = this.constructor(); + + if ( jQuery.isArray( elems ) ) { + push.apply( ret, elems ); + + } else { + jQuery.merge( ret, elems ); + } + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Attach the listeners + jQuery.bindReady(); + + // Add the callback + readyList.add( fn ); + + return this; + }, + + eq: function( i ) { + i = +i; + return i === -1 ? + this.slice( i ) : + this.slice( i, i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.fireWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).off( "ready" ); + } + } + }, + + bindReady: function() { + if ( readyList ) { + return; + } + + readyList = jQuery.Callbacks( "once memory" ); + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + return setTimeout( jQuery.ready, 1 ); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + // A crude way of determining if an object is a window + isWindow: function( obj ) { + return obj && typeof obj === "object" && "setInterval" in obj; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + for ( var name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction( object ); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } + + return object; + }, + + // Use native String.trim function wherever possible + trim: trim ? + function( text ) { + return text == null ? + "" : + trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); + }, + + // results is for internal usage only + makeArray: function( array, results ) { + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + var type = jQuery.type( array ); + + if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }, + + inArray: function( elem, array, i ) { + var len; + + if ( array ) { + if ( indexOf ) { + return indexOf.call( array, elem, i ); + } + + len = array.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in array && array[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var i = first.length, + j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var ret = [], retVal; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + var args = slice.call( arguments, 2 ), + proxy = function() { + return fn.apply( context, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + + return proxy; + }, + + // Mutifunctional method to get and set values to a collection + // The value/s can optionally be executed if it's a function + access: function( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + sub: function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }, + + browser: {} +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +// IE doesn't match non-breaking spaces with \s +if ( rnotwhite.test( "\xA0" ) ) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch(e) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +return jQuery; + +})(); + + +// String to Object flags format cache +var flagsCache = {}; + +// Convert String-formatted flags into Object-formatted ones and store in cache +function createFlags( flags ) { + var object = flagsCache[ flags ] = {}, + i, length; + flags = flags.split( /\s+/ ); + for ( i = 0, length = flags.length; i < length; i++ ) { + object[ flags[i] ] = true; + } + return object; +} + +/* + * Create a callback list using the following parameters: + * + * flags: an optional list of space-separated flags that will change how + * the callback list behaves + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible flags: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( flags ) { + + // Convert flags from String-formatted to Object-formatted + // (we check in cache first) + flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {}; + + var // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = [], + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Add one or several callbacks to the list + add = function( args ) { + var i, + length, + elem, + type, + actual; + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + // Inspect recursively + add( elem ); + } else if ( type === "function" ) { + // Add if not in unique mode and callback is not in + if ( !flags.unique || !self.has( elem ) ) { + list.push( elem ); + } + } + } + }, + // Fire callbacks + fire = function( context, args ) { + args = args || []; + memory = !flags.memory || [ context, args ]; + firing = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) { + memory = true; // Mark as halted + break; + } + } + firing = false; + if ( list ) { + if ( !flags.once ) { + if ( stack && stack.length ) { + memory = stack.shift(); + self.fireWith( memory[ 0 ], memory[ 1 ] ); + } + } else if ( memory === true ) { + self.disable(); + } else { + list = []; + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + var length = list.length; + add( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away, unless previous + // firing was halted (stopOnFalse) + } else if ( memory && memory !== true ) { + firingStart = length; + fire( memory[ 0 ], memory[ 1 ] ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + var args = arguments, + argIndex = 0, + argLength = args.length; + for ( ; argIndex < argLength ; argIndex++ ) { + for ( var i = 0; i < list.length; i++ ) { + if ( args[ argIndex ] === list[ i ] ) { + // Handle firingIndex and firingLength + if ( firing ) { + if ( i <= firingLength ) { + firingLength--; + if ( i <= firingIndex ) { + firingIndex--; + } + } + } + // Remove the element + list.splice( i--, 1 ); + // If we have some unicity property then + // we only need to do this once + if ( flags.unique ) { + break; + } + } + } + } + } + return this; + }, + // Control if a given callback is in the list + has: function( fn ) { + if ( list ) { + var i = 0, + length = list.length; + for ( ; i < length; i++ ) { + if ( fn === list[ i ] ) { + return true; + } + } + } + return false; + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory || memory === true ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( stack ) { + if ( firing ) { + if ( !flags.once ) { + stack.push( [ context, args ] ); + } + } else if ( !( flags.once && memory ) ) { + fire( context, args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!memory; + } + }; + + return self; +}; + + + + +var // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ + + Deferred: function( func ) { + var doneList = jQuery.Callbacks( "once memory" ), + failList = jQuery.Callbacks( "once memory" ), + progressList = jQuery.Callbacks( "memory" ), + state = "pending", + lists = { + resolve: doneList, + reject: failList, + notify: progressList + }, + promise = { + done: doneList.add, + fail: failList.add, + progress: progressList.add, + + state: function() { + return state; + }, + + // Deprecated + isResolved: doneList.fired, + isRejected: failList.fired, + + then: function( doneCallbacks, failCallbacks, progressCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks ); + return this; + }, + always: function() { + deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments ); + return this; + }, + pipe: function( fnDone, fnFail, fnProgress ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ], + progress: [ fnProgress, "notify" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + obj = promise; + } else { + for ( var key in promise ) { + obj[ key ] = promise[ key ]; + } + } + return obj; + } + }, + deferred = promise.promise({}), + key; + + for ( key in lists ) { + deferred[ key ] = lists[ key ].fire; + deferred[ key + "With" ] = lists[ key ].fireWith; + } + + // Handle state + deferred.done( function() { + state = "resolved"; + }, failList.disable, progressList.lock ).fail( function() { + state = "rejected"; + }, doneList.disable, progressList.lock ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( firstParam ) { + var args = sliceDeferred.call( arguments, 0 ), + i = 0, + length = args.length, + pValues = new Array( length ), + count = length, + pCount = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(), + promise = deferred.promise(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + deferred.resolveWith( deferred, args ); + } + }; + } + function progressFunc( i ) { + return function( value ) { + pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + deferred.notifyWith( promise, pValues ); + }; + } + if ( length > 1 ) { + for ( ; i < length; i++ ) { + if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return promise; + } +}); + + + + +jQuery.support = (function() { + + var support, + all, + a, + select, + opt, + input, + marginDiv, + fragment, + tds, + events, + eventName, + i, + isSupported, + div = document.createElement( "div" ), + documentElement = document.documentElement; + + // Preliminary tests + div.setAttribute("className", "t"); + div.innerHTML = "
            a"; + + all = div.getElementsByTagName( "*" ); + a = div.getElementsByTagName( "a" )[ 0 ]; + + // Can't get basic test support + if ( !all || !all.length || !a ) { + return {}; + } + + // First batch of supports tests + select = document.createElement( "select" ); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName( "input" )[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute("href") === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.55/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Tests for enctype support on a form(#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent( "onclick" ); + } + + // Check if a radio maintains its value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; + + input.setAttribute("checked", "checked"); + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.lastChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + fragment.removeChild( input ); + fragment.appendChild( div ); + + div.innerHTML = ""; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( window.getComputedStyle ) { + marginDiv = document.createElement( "div" ); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.style.width = "2px"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; + } + + // Technique from Juriy Zaytsev + // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for( i in { + submit: 1, + change: 1, + focusin: 1 + }) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + fragment.removeChild( div ); + + // Null elements to avoid leaks in IE + fragment = select = opt = marginDiv = div = input = null; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, outer, inner, table, td, offsetSupport, + conMarginTop, ptlm, vb, style, html, + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + conMarginTop = 1; + ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;"; + vb = "visibility:hidden;border:0;"; + style = "style='" + ptlm + "border:5px solid #000;padding:0;'"; + html = "
            " + + "" + + "
            "; + + container = document.createElement("div"); + container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px"; + body.insertBefore( container, body.firstChild ); + + // Construct the test element + div = document.createElement("div"); + container.appendChild( div ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + div.innerHTML = "
            t
            "; + tds = div.getElementsByTagName( "td" ); + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE <= 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Figure out if the W3C box model works as expected + div.innerHTML = ""; + div.style.width = div.style.paddingLeft = "1px"; + jQuery.boxModel = support.boxModel = div.offsetWidth === 2; + + if ( typeof div.style.zoom !== "undefined" ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = ""; + div.innerHTML = "
            "; + support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); + } + + div.style.cssText = ptlm + vb; + div.innerHTML = html; + + outer = div.firstChild; + inner = outer.firstChild; + td = outer.nextSibling.firstChild.firstChild; + + offsetSupport = { + doesNotAddBorder: ( inner.offsetTop !== 5 ), + doesAddBorderForTableAndCells: ( td.offsetTop === 5 ) + }; + + inner.style.position = "fixed"; + inner.style.top = "20px"; + + // safari subtracts parent border width here which is 5px + offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 ); + inner.style.position = inner.style.top = ""; + + outer.style.overflow = "hidden"; + outer.style.position = "relative"; + + offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 ); + offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop ); + + body.removeChild( container ); + div = container = null; + + jQuery.extend( support, offsetSupport ); + }); + + return support; +})(); + + + + +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([A-Z])/g; + +jQuery.extend({ + cache: {}, + + // Please use with caution + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var privateCache, thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey, + isEvents = name === "events"; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = ++jQuery.uuid; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + privateCache = thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Users should not attempt to inspect the internal events object using jQuery.data, + // it is undocumented and subject to change. But does anyone listen? No. + if ( isEvents && !thisCache[ name ] ) { + return privateCache.events; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, l, + + // Reference to internal data cache key + internalKey = jQuery.expando, + + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + + // See jQuery.data for more information + id = isNode ? elem[ internalKey ] : internalKey; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split( " " ); + } + } + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject(cache[ id ]) ) { + return; + } + } + + // Browsers that fail expando deletion also refuse to delete expandos on + // the window, but it will allow it on all other JS objects; other browsers + // don't care + // Ensure that `cache` is not a window object #10080 + if ( jQuery.support.deleteExpando || !cache.setInterval ) { + delete cache[ id ]; + } else { + cache[ id ] = null; + } + + // We destroyed the cache and need to eliminate the expando on the node to avoid + // false lookups in the cache for entries that no longer exist + if ( isNode ) { + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( jQuery.support.deleteExpando ) { + delete elem[ internalKey ]; + } else if ( elem.removeAttribute ) { + elem.removeAttribute( internalKey ); + } else { + elem[ internalKey ] = null; + } + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + if ( elem.nodeName ) { + var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; + + if ( match ) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + + return true; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var parts, attr, name, + data = null; + + if ( typeof key === "undefined" ) { + if ( this.length ) { + data = jQuery.data( this[0] ); + + if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) { + attr = this[0].attributes; + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( this[0], name, data[ name ] ); + } + } + jQuery._data( this[0], "parsedAttrs", true ); + } + } + + return data; + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + // Try to fetch any internally stored data first + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + data = dataAttr( this[0], key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + + } else { + return this.each(function() { + var self = jQuery( this ), + args = [ parts[0], value ]; + + self.triggerHandler( "setData" + parts[1] + "!", args ); + jQuery.data( this, key, value ); + self.triggerHandler( "changeData" + parts[1] + "!", args ); + }); + } + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + jQuery.isNumeric( data ) ? parseFloat( data ) : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + + + + +function handleQueueMarkDefer( elem, type, src ) { + var deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + defer = jQuery._data( elem, deferDataKey ); + if ( defer && + ( src === "queue" || !jQuery._data(elem, queueDataKey) ) && + ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) { + // Give room for hard-coded callbacks to fire first + // and eventually mark/queue something else on the element + setTimeout( function() { + if ( !jQuery._data( elem, queueDataKey ) && + !jQuery._data( elem, markDataKey ) ) { + jQuery.removeData( elem, deferDataKey, true ); + defer.fire(); + } + }, 0 ); + } +} + +jQuery.extend({ + + _mark: function( elem, type ) { + if ( elem ) { + type = ( type || "fx" ) + "mark"; + jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 ); + } + }, + + _unmark: function( force, elem, type ) { + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 ); + if ( count ) { + jQuery._data( elem, key, count ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }, + + queue: function( elem, type, data ) { + var q; + if ( elem ) { + type = ( type || "fx" ) + "queue"; + q = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + q.push( data ); + } + } + return q || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + hooks = {}; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + jQuery._data( elem, type + ".run", hooks ); + fn.call( elem, function() { + jQuery.dequeue( elem, type ); + }, hooks ); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue " + type + ".run", true ); + handleQueueMarkDefer( elem, type, "queue" ); + } + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function() { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, object ) { + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) { + count++; + tmp.add( resolve ); + } + } + resolve(); + return defer.promise(); + } +}); + + + + +var rclass = /[\n\t\r]/g, + rspace = /\s+/, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea)?$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + nodeHook, boolHook, fixSpecified; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.attr ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.prop ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classNames, i, l, elem, className, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + classNames = ( value || "" ).split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + className = (" " + elem.className + " ").replace( rclass, " " ); + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[ c ] + " ", " "); + } + elem.className = jQuery.trim( className ); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var self = jQuery(this), val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, i, max, option, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + i = one ? index : 0; + max = one ? index + 1 : options.length; + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + + attr: function( elem, name, value, pass ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var propName, attrNames, name, l, + i = 0; + + if ( value && elem.nodeType === 1 ) { + attrNames = value.toLowerCase().split( rspace ); + l = attrNames.length; + + for ( ; i < l; i++ ) { + name = attrNames[ i ]; + + if ( name ) { + propName = jQuery.propFix[ name ] || name; + + // See #9699 for explanation of this approach (setting first, then removal) + jQuery.attr( elem, name, "" ); + elem.removeAttribute( getSetAttribute ? name : propName ); + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && propName in elem ) { + elem[ propName ] = false; + } + } + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + // Use the value property for back compat + // Use the nodeHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional) +jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex; + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + // Fall back to attribute presence where some booleans are not supported + var attrNode, + property = jQuery.prop( elem, name ); + return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + fixSpecified = { + name: true, + id: true + }; + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ? + ret.nodeValue : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); + } + return ( ret.nodeValue = value + "" ); + } + }; + + // Apply the nodeHook to tabindex + jQuery.attrHooks.tabindex.set = nodeHook.set; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + if ( value === "" ) { + value = "false"; + } + nodeHook.set( elem, value, name ); + } + }; +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = "" + value ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); + + + + +var rformElems = /^(?:textarea|input|select)$/i, + rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/, + rhoverHack = /\bhover(\.\S+)?\b/, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, + quickParse = function( selector ) { + var quick = rquickIs.exec( selector ); + if ( quick ) { + // 0 1 2 3 + // [ _, tag, id, class ] + quick[1] = ( quick[1] || "" ).toLowerCase(); + quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" ); + } + return quick; + }, + quickIs = function( elem, m ) { + var attrs = elem.attributes || {}; + return ( + (!m[1] || elem.nodeName.toLowerCase() === m[1]) && + (!m[2] || (attrs.id || {}).value === m[2]) && + (!m[3] || m[3].test( (attrs[ "class" ] || {}).value )) + ); + }, + hoverHack = function( events ) { + return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); + }; + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + add: function( elem, types, handler, data, selector ) { + + var elemData, eventHandle, events, + t, tns, type, namespaces, handleObj, + handleObjIn, quick, handlers, special; + + // Don't attach events to noData or text/comment nodes (allow plain objects tho) + if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + events = elemData.events; + if ( !events ) { + elemData.events = events = {}; + } + eventHandle = elemData.handle; + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = jQuery.trim( hoverHack(types) ).split( " " ); + for ( t = 0; t < types.length; t++ ) { + + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = ( tns[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: tns[1], + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + quick: quickParse( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + handlers = events[ type ]; + if ( !handlers ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var elemData = jQuery.hasData( elem ) && jQuery._data( elem ), + t, tns, type, origType, namespaces, origCount, + j, events, special, handle, eventType, handleObj; + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = jQuery.trim( hoverHack( types || "" ) ).split(" "); + for ( t = 0; t < types.length; t++ ) { + tns = rtypenamespace.exec( types[t] ) || []; + type = origType = tns[1]; + namespaces = tns[2]; + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector? special.delegateType : special.bindType ) || type; + eventType = events[ type ] || []; + origCount = eventType.length; + namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + + // Remove matching events + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !namespaces || namespaces.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + eventType.splice( j--, 1 ); + + if ( handleObj.selector ) { + eventType.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( eventType.length === 0 && origCount !== eventType.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + handle = elemData.handle; + if ( handle ) { + handle.elem = null; + } + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery.removeData( elem, [ "events", "handle" ], true ); + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Don't do events on text and comment nodes + if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { + return; + } + + // Event object or event type + var type = event.type || event, + namespaces = [], + cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType; + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "!" ) >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf( "." ) >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.isTrigger = true; + event.exclusive = exclusive; + event.namespace = namespaces.join( "." ); + event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; + + // Handle a global trigger + if ( !elem ) { + + // TODO: Stop taunting the data cache; remove global events and always attach to document + cache = jQuery.cache; + for ( i in cache ) { + if ( cache[ i ].events && cache[ i ].events[ type ] ) { + jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); + } + } + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + eventPath = [[ elem, special.bindType || type ]]; + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; + old = null; + for ( ; cur; cur = cur.parentNode ) { + eventPath.push([ cur, bubbleType ]); + old = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( old && old === elem.ownerDocument ) { + eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); + } + } + + // Fire handlers on the event path + for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { + + cur = eventPath[i][0]; + event.type = eventPath[i][1]; + + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + // Note that this is a bare JS function and not a jQuery handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + // IE<9 dies on focus/blur to hidden element (#1486) + if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( old ) { + elem[ ontype ] = old; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event || window.event ); + + var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), + delegateCount = handlers.delegateCount, + args = [].slice.call( arguments, 0 ), + run_all = !event.exclusive && !event.namespace, + handlerQueue = [], + i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Determine handlers that should run if there are delegated events + // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) { + + // Pregenerate a single jQuery object for reuse with .is() + jqcur = jQuery(this); + jqcur.context = this.ownerDocument || this; + + for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { + selMatch = {}; + matches = []; + jqcur[0] = cur; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + sel = handleObj.selector; + + if ( selMatch[ sel ] === undefined ) { + selMatch[ sel ] = ( + handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel ) + ); + } + if ( selMatch[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, matches: matches }); + } + } + } + + // Add the remaining (directly-bound) handlers + if ( handlers.length > delegateCount ) { + handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); + } + + // Run delegates first; they may want to stop propagation beneath us + for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { + matched = handlerQueue[ i ]; + event.currentTarget = matched.elem; + + for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { + handleObj = matched.matches[ j ]; + + // Triggered event must either 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { + + event.data = handleObj.data; + event.handleObj = handleObj; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + return event.result; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** + props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, + originalEvent = event, + fixHook = jQuery.event.fixHooks[ event.type ] || {}, + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = jQuery.Event( originalEvent ); + + for ( i = copy.length; i; ) { + prop = copy[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Target should not be a text node (#504, Safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8) + if ( event.metaKey === undefined ) { + event.metaKey = event.ctrlKey; + } + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + ready: { + // Make sure the ready event is setup + setup: jQuery.bindReady + }, + + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + + focus: { + delegateType: "focusin" + }, + blur: { + delegateType: "focusout" + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +// Some plugins are using, but it's undocumented/deprecated and will be removed. +// The 1.7 special event interface should provide all the hooks needed now. +jQuery.event.handle = jQuery.event.dispatch; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + if ( elem.detachEvent ) { + elem.detachEvent( "on" + type, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var target = this, + related = event.relatedTarget, + handleObj = event.handleObj, + selector = handleObj.selector, + ret; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !form._submit_attached ) { + jQuery.event.add( form, "submit._submit", function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + }); + form._submit_attached = true; + } + }); + // return undefined since we don't need an event listener + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + jQuery.event.simulate( "change", this, event, true ); + } + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + elem._change_attached = true; + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on.call( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + var handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( var type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + live: function( types, data, fn ) { + jQuery( this.context ).on( types, this.selector, data, fn ); + return this; + }, + die: function( types, fn ) { + jQuery( this.context ).off( types, this.selector || "**", fn ); + return this; + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + + if ( jQuery.attrFn ) { + jQuery.attrFn[ name ] = true; + } + + if ( rkeyEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; + } + + if ( rmouseEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; + } +}); + + + +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + expando = "sizcache" + (Math.random() + '').replace('.', ''), + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true, + rBackslash = /\\/g, + rReturn = /\r\n/g, + rNonWord = /\W/; + +// Here we check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function() { + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function( selector, context, results, seed ) { + results = results || []; + context = context || document; + + var origContext = context; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var m, set, checkSet, extra, ret, cur, pop, i, + prune = true, + contextXML = Sizzle.isXML( context ), + parts = [], + soFar = selector; + + // Reset the position of the chunker regexp (start from head) + do { + chunker.exec( "" ); + m = chunker.exec( soFar ); + + if ( m ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + } while ( m ); + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context, seed ); + + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) { + selector += parts.shift(); + } + + set = posProcess( selector, set, seed ); + } + } + + } else { + // Take a shortcut and set the context if the root selector is an ID + // (but not if it'll be faster if the inner selector is an ID) + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + + ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? + Sizzle.filter( ret.expr, ret.set )[0] : + ret.set[0]; + } + + if ( context ) { + ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + + set = ret.expr ? + Sizzle.filter( ret.expr, ret.set ) : + ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray( set ); + + } else { + prune = false; + } + + while ( parts.length ) { + cur = parts.pop(); + pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + Sizzle.error( cur || selector ); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + + } else if ( context && context.nodeType === 1 ) { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + + } else { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function( results ) { + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; + +Sizzle.matches = function( expr, set ) { + return Sizzle( expr, null, null, set ); +}; + +Sizzle.matchesSelector = function( node, expr ) { + return Sizzle( expr, null, null, [node] ).length > 0; +}; + +Sizzle.find = function( expr, context, isXML ) { + var set, i, len, match, type, left; + + if ( !expr ) { + return []; + } + + for ( i = 0, len = Expr.order.length; i < len; i++ ) { + type = Expr.order[i]; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + left = match[1]; + match.splice( 1, 1 ); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace( rBackslash, "" ); + set = Expr.find[ type ]( match, context, isXML ); + + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( "*" ) : + []; + } + + return { set: set, expr: expr }; +}; + +Sizzle.filter = function( expr, set, inplace, not ) { + var match, anyFound, + type, found, item, filter, left, + i, pass, + old = expr, + result = [], + curLoop = set, + isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); + + while ( expr && set.length ) { + for ( type in Expr.filter ) { + if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { + filter = Expr.filter[ type ]; + left = match[1]; + + anyFound = false; + + match.splice(1,1); + + if ( left.substr( left.length - 1 ) === "\\" ) { + continue; + } + + if ( curLoop === result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + pass = not ^ found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + + } else { + curLoop[i] = false; + } + + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + // Improper expression + if ( expr === old ) { + if ( anyFound == null ) { + Sizzle.error( expr ); + + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Utility function for retreiving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +var getText = Sizzle.getText = function( elem ) { + var i, node, + nodeType = elem.nodeType, + ret = ""; + + if ( nodeType ) { + if ( nodeType === 1 || nodeType === 9 ) { + // Use textContent || innerText for elements + if ( typeof elem.textContent === 'string' ) { + return elem.textContent; + } else if ( typeof elem.innerText === 'string' ) { + // Replace IE's carriage returns + return elem.innerText.replace( rReturn, '' ); + } else { + // Traverse it's children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + } else { + + // If no nodeType, this is expected to be an array + for ( i = 0; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + if ( node.nodeType !== 8 ) { + ret += getText( node ); + } + } + } + return ret; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + + match: { + ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + + leftMatch: {}, + + attrMap: { + "class": "className", + "for": "htmlFor" + }, + + attrHandle: { + href: function( elem ) { + return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); + } + }, + + relative: { + "+": function(checkSet, part){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !rNonWord.test( part ), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag ) { + part = part.toLowerCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + + ">": function( checkSet, part ) { + var elem, + isPartStr = typeof part === "string", + i = 0, + l = checkSet.length; + + if ( isPartStr && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + + } else { + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + + "": function(checkSet, part, isXML){ + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); + }, + + "~": function( checkSet, part, isXML ) { + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); + } + }, + + find: { + ID: function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }, + + NAME: function( match, context ) { + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], + results = context.getElementsByName( match[1] ); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + + TAG: function( match, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( match[1] ); + } + } + }, + preFilter: { + CLASS: function( match, curLoop, inplace, result, not, isXML ) { + match = " " + match[1].replace( rBackslash, "" ) + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { + if ( !inplace ) { + result.push( elem ); + } + + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + + ID: function( match ) { + return match[1].replace( rBackslash, "" ); + }, + + TAG: function( match, curLoop ) { + return match[1].replace( rBackslash, "" ).toLowerCase(); + }, + + CHILD: function( match ) { + if ( match[1] === "nth" ) { + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + match[2] = match[2].replace(/^\+|\s*/g, ''); + + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( + match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + // calculate the numbers (first)n+(last) including if they are negative + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + // TODO: Move to normal caching system + match[0] = done++; + + return match; + }, + + ATTR: function( match, curLoop, inplace, result, not, isXML ) { + var name = match[1] = match[1].replace( rBackslash, "" ); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + // Handle if an un-quoted value was used + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + + PSEUDO: function( match, curLoop, inplace, result, not ) { + if ( match[1] === "not" ) { + // If we're dealing with a complex expression, or a simple one + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + + if ( !inplace ) { + result.push.apply( result, ret ); + } + + return false; + } + + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + + POS: function( match ) { + match.unshift( true ); + + return match; + } + }, + + filters: { + enabled: function( elem ) { + return elem.disabled === false && elem.type !== "hidden"; + }, + + disabled: function( elem ) { + return elem.disabled === true; + }, + + checked: function( elem ) { + return elem.checked === true; + }, + + selected: function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + parent: function( elem ) { + return !!elem.firstChild; + }, + + empty: function( elem ) { + return !elem.firstChild; + }, + + has: function( elem, i, match ) { + return !!Sizzle( match[3], elem ).length; + }, + + header: function( elem ) { + return (/h\d/i).test( elem.nodeName ); + }, + + text: function( elem ) { + var attr = elem.getAttribute( "type" ), type = elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); + }, + + radio: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; + }, + + checkbox: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; + }, + + file: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; + }, + + password: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; + }, + + submit: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; + }, + + image: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; + }, + + reset: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; + }, + + button: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; + }, + + input: function( elem ) { + return (/input|select|textarea|button/i).test( elem.nodeName ); + }, + + focus: function( elem ) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + first: function( elem, i ) { + return i === 0; + }, + + last: function( elem, i, match, array ) { + return i === array.length - 1; + }, + + even: function( elem, i ) { + return i % 2 === 0; + }, + + odd: function( elem, i ) { + return i % 2 === 1; + }, + + lt: function( elem, i, match ) { + return i < match[3] - 0; + }, + + gt: function( elem, i, match ) { + return i > match[3] - 0; + }, + + nth: function( elem, i, match ) { + return match[3] - 0 === i; + }, + + eq: function( elem, i, match ) { + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function( elem, match, i, array ) { + var name = match[1], + filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; + + } else if ( name === "not" ) { + var not = match[3]; + + for ( var j = 0, l = not.length; j < l; j++ ) { + if ( not[j] === elem ) { + return false; + } + } + + return true; + + } else { + Sizzle.error( name ); + } + }, + + CHILD: function( elem, match ) { + var first, last, + doneName, parent, cache, + count, diff, + type = match[1], + node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + + case "nth": + first = match[2]; + last = match[3]; + + if ( first === 1 && last === 0 ) { + return true; + } + + doneName = match[0]; + parent = elem.parentNode; + + if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) { + count = 0; + + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + + parent[ expando ] = doneName; + } + + diff = elem.nodeIndex - last; + + if ( first === 0 ) { + return diff === 0; + + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + } + }, + + ID: function( elem, match ) { + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + + TAG: function( elem, match ) { + return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match; + }, + + CLASS: function( elem, match ) { + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + + ATTR: function( elem, match ) { + var name = match[1], + result = Sizzle.attr ? + Sizzle.attr( elem, name ) : + Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + !type && Sizzle.attr ? + result != null : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value !== check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + + POS: function( elem, match, i, array ) { + var name = match[2], + filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS, + fescape = function(all, num){ + return "\\" + (num - 0 + 1); + }; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); +} + +var makeArray = function( array, results ) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +// Perform a simple check to determine if the browser is capable of +// converting a NodeList to an array using builtin methods. +// Also verifies that the returned array holds DOM nodes +// (which is not the case in the Blackberry browser) +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; + +// Provide a fallback method if it does not work +} catch( e ) { + makeArray = function( array, results ) { + var i = 0, + ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + + } else { + if ( typeof array.length === "number" ) { + for ( var l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + + } else { + for ( ; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder, siblingCheck; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + return a.compareDocumentPosition ? -1 : 1; + } + + return a.compareDocumentPosition(b) & 4 ? -1 : 1; + }; + +} else { + sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + + siblingCheck = function( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + }; +} + +// Check to see if the browser returns elements by name when +// querying by getElementById (and provide a workaround) +(function(){ + // We're going to inject a fake input element with a specified name + var form = document.createElement("div"), + id = "script" + (new Date()).getTime(), + root = document.documentElement; + + form.innerHTML = ""; + + // Inject it into the root element, check its status, and remove it quickly + root.insertBefore( form, root.firstChild ); + + // The workaround has to do additional checks after a getElementById + // Which slows things down for other browsers (hence the branching) + if ( document.getElementById( id ) ) { + Expr.find.ID = function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + + return m ? + m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? + [m] : + undefined : + []; + } + }; + + Expr.filter.ID = function( elem, match ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + + root.removeChild( form ); + + // release memory in IE + root = form = null; +})(); + +(function(){ + // Check to see if the browser returns only elements + // when doing getElementsByTagName("*") + + // Create a fake element + var div = document.createElement("div"); + div.appendChild( document.createComment("") ); + + // Make sure no comments are found + if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function( match, context ) { + var results = context.getElementsByTagName( match[1] ); + + // Filter out possible comments + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + } + + // Check to see if an attribute returns normalized href attributes + div.innerHTML = ""; + + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + div.firstChild.getAttribute("href") !== "#" ) { + + Expr.attrHandle.href = function( elem ) { + return elem.getAttribute( "href", 2 ); + }; + } + + // release memory in IE + div = null; +})(); + +if ( document.querySelectorAll ) { + (function(){ + var oldSizzle = Sizzle, + div = document.createElement("div"), + id = "__sizzle__"; + + div.innerHTML = "

            "; + + // Safari can't handle uppercase or unicode characters when + // in quirks mode. + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function( query, context, extra, seed ) { + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && !Sizzle.isXML(context) ) { + // See if we find a selector to speed up + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); + + if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { + // Speed-up: Sizzle("TAG") + if ( match[1] ) { + return makeArray( context.getElementsByTagName( query ), extra ); + + // Speed-up: Sizzle(".CLASS") + } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { + return makeArray( context.getElementsByClassName( match[2] ), extra ); + } + } + + if ( context.nodeType === 9 ) { + // Speed-up: Sizzle("body") + // The body element only exists once, optimize finding it + if ( query === "body" && context.body ) { + return makeArray( [ context.body ], extra ); + + // Speed-up: Sizzle("#ID") + } else if ( match && match[3] ) { + var elem = context.getElementById( match[3] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id === match[3] ) { + return makeArray( [ elem ], extra ); + } + + } else { + return makeArray( [], extra ); + } + } + + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(qsaError) {} + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || id, + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if ( !old ) { + context.setAttribute( "id", nid ); + } else { + nid = nid.replace( /'/g, "\\$&" ); + } + if ( relativeHierarchySelector && hasParent ) { + context = context.parentNode; + } + + try { + if ( !relativeHierarchySelector || hasParent ) { + return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); + } + + } catch(pseudoError) { + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } + } + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + // release memory in IE + div = null; + })(); +} + +(function(){ + var html = document.documentElement, + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; + + if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); + + } catch( pseudoError ) { + pseudoWorks = true; + } + + Sizzle.matchesSelector = function( node, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + + if ( !Sizzle.isXML( node ) ) { + try { + if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } + } + } catch(e) {} + } + + return Sizzle(expr, null, null, [node]).length > 0; + }; + } +})(); + +(function(){ + var div = document.createElement("div"); + + div.innerHTML = "
            "; + + // Opera can't find a second classname (in 9.6) + // Also, make sure that getElementsByClassName actually exists + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) { + return; + } + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function( match, context, isXML ) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + // release memory in IE + div = null; +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( elem.nodeName.toLowerCase() === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +if ( document.documentElement.contains ) { + Sizzle.contains = function( a, b ) { + return a !== b && (a.contains ? a.contains(b) : true); + }; + +} else if ( document.documentElement.compareDocumentPosition ) { + Sizzle.contains = function( a, b ) { + return !!(a.compareDocumentPosition(b) & 16); + }; + +} else { + Sizzle.contains = function() { + return false; + }; +} + +Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +var posProcess = function( selector, context, seed ) { + var match, + tmpSet = [], + later = "", + root = context.nodeType ? [context] : context; + + // Position selectors must be done after the filter + // And so must :not(positional) so we move all PSEUDOs to the end + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet, seed ); + } + + return Sizzle.filter( later, tmpSet ); +}; + +// EXPOSE +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +Sizzle.selectors.attrMap = {}; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.filters; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})(); + + +var runtil = /Until$/, + rparentsprev = /^(?:parents|prevUntil|prevAll)/, + // Note: This RegExp should be improved, or likely pulled from Sizzle + rmultiselector = /,/, + isSimple = /^.[^:#\[\.,]*$/, + slice = Array.prototype.slice, + POS = jQuery.expr.match.POS, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + var ret = this.pushStack( "", "find", selector ), + length, n, r; + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + POS.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var ret = [], i, l, cur = this[0]; + + // Array (deprecated as of jQuery 1.7) + if ( jQuery.isArray( selectors ) ) { + var level = 1; + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( i = 0; i < selectors.length; i++ ) { + + if ( jQuery( cur ).is( selectors[ i ] ) ) { + ret.push({ selector: selectors[ i ], elem: cur, level: level }); + } + } + + cur = cur.parentNode; + level++; + } + + return ret; + } + + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( i = 0, l = this.length; i < l; i++ ) { + cur = this[i]; + + while ( cur ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + + } else { + cur = cur.parentNode; + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { + break; + } + } + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + andSelf: function() { + return this.add( this.prevObject ); + } +}); + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return jQuery.nth( elem, 2, "nextSibling" ); + }, + prev: function( elem ) { + return jQuery.nth( elem, 2, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( elem.parentNode.firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.makeArray( elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, slice.call( arguments ).join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + nth: function( cur, result, dir, elem ) { + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} + + + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, + rtagName = /<([\w:]+)/, + rtbody = /", "" ], + legend: [ 1, "
            ", "
            " ], + thead: [ 1, "", "
            " ], + tr: [ 2, "", "
            " ], + td: [ 3, "", "
            " ], + col: [ 2, "", "
            " ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }, + safeFragment = createSafeFragment( document ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE can't serialize and + + + + + +
            + + + + + \ No newline at end of file diff --git a/public/static/bdmap/css/bmap.css b/public/static/bdmap/css/bmap.css new file mode 100644 index 0000000..5cd1e96 --- /dev/null +++ b/public/static/bdmap/css/bmap.css @@ -0,0 +1 @@ +.BMap_mask{background:transparent url(../images/blank.gif);}.BMap_noscreen{display:none;}.BMap_button{cursor:pointer;}.BMap_zoomer{background-image:url(../images/mapctrls1d3.gif);background-repeat:no-repeat;overflow:hidden;font-size:1px;position:absolute;width:7px;height:7px;}.BMap_stdMpCtrl div{position:absolute;}.BMap_stdMpPan{width:44px;height:44px;overflow:hidden;background:url(../images/mapctrls2d0.png) no-repeat;}.BMap_ie6 .BMap_stdMpPan{background:none;}.BMap_ie6 .BMap_smcbg{left:0;width:44px;height:464px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/mapctrls2d0.png');}.BMap_ie6 .BMap_stdMpPanBg{z-index:-1;}.BMap_stdMpPan .BMap_button{height:15px;width:15px;}.BMap_panN,.BMap_panW,.BMap_panE,.BMap_panS{overflow:hidden;}.BMap_panN{left:14px;top:0;}.BMap_panW{left:1px;top:12px;}.BMap_panE{left:27px;top:12px;}.BMap_panS{left:14px;top:25px;}.BMap_stdMpZoom{top:45px;overflow:hidden;}.BMap_stdMpZoom .BMap_button{width:22px;height:21px;left:12px;overflow:hidden;background-image:url(../images/mapctrls2d0.png);background-repeat:no-repeat;z-index:10;}.BMap_ie6 .BMap_stdMpZoom .BMap_button{background:none;}.BMap_stdMpZoomIn{background-position:0 -221px;}.BMap_stdMpZoomOut{background-position:0 -265px;}.BMap_ie6 .BMap_stdMpZoomIn div{left:0;top:-221px;}.BMap_ie6 .BMap_stdMpZoomOut div{left:0;top:-265px;}.BMap_stdMpSlider{width:37px;top:18px;}.BMap_stdMpSliderBgTop{left:18px;width:10px;overflow:hidden;background:url(../images/mapctrls2d0.png) no-repeat -23px -226px;}.BMap_stdMpSliderBgBot{left:19px;height:8px;width:10px;top:124px;overflow:hidden;background:url(../images/mapctrls2d0.png) no-repeat -33px bottom;}.BMap_ie6 .BMap_stdMpSliderBgTop,.BMap_ie6 .BMap_stdMpSliderBgBot{background:none;}.BMap_ie6 .BMap_stdMpSliderBgTop div{left:-23px;top:-226px;}.BMap_ie6 .BMap_stdMpSliderBgBot div{left:-33px;bottom:0;}.BMap_stdMpSliderMask{height:100%;width:24px;left:10px;cursor:pointer;}.BMap_stdMpSliderBar{height:11px;width:19px;left:13px;top:80px;overflow:hidden;background:url(../images/mapctrls2d0.png) no-repeat 0 -309px;}.BMap_stdMpSliderBar.h{background:url(../images/mapctrls2d0.png) no-repeat 0 -320px;}.BMap_ie6 .BMap_stdMpSliderBar,.BMap_ie6 .BMap_stdMpSliderBar.h{background:none;}.BMap_ie6 .BMap_stdMpSliderBar div{top:-309px;}.BMap_ie6 .BMap_stdMpSliderBar.h div{top:-320px;}.BMap_zlSt,.BMap_zlCity,.BMap_zlProv,.BMap_zlCountry{position:absolute;left:34px;height:21px;width:28px;background-image:url(../images/mapctrls2d0.png);background-repeat:no-repeat;font-size:0;cursor:pointer;}.BMap_ie6 .BMap_zlSt,.BMap_ie6 .BMap_zlCity,.BMap_ie6 .BMap_zlProv,.BMap_ie6 .BMap_zlCountry{background:none;overflow:hidden;}.BMap_zlHolder{display:none;position:absolute;top:0;}.BMap_zlHolder.hvr{display:block;}.BMap_zlSt{background-position:0 -380px;top:21px;}.BMap_zlCity{background-position:0 -401px;top:57px;}.BMap_zlProv{background-position:0 -422px;top:81px;}.BMap_zlCountry{background-position:0 -443px;top:105px;}.BMap_ie6 .BMap_zlSt div{top:-380px;}.BMap_ie6 .BMap_zlCity div{top:-401px;}.BMap_ie6 .BMap_zlProv div{top:-422px;}.BMap_ie6 .BMap_zlCountry div{top:-443px;}.BMap_stdMpType1 .BMap_stdMpSlider,.BMap_stdMpType2 .BMap_stdMpSlider,.BMap_stdMpType3 .BMap_stdMpSlider,.BMap_stdMpType2 .BMap_stdMpZoom,.BMap_stdMpType3 .BMap_stdMpPan{display:none;}.BMap_stdMpType3 .BMap_stdMpZoom{top:0;}.BMap_cpyCtrl a{font-size:11px;color:#7979CC;}.BMap_scaleCtrl{height:23px;overflow:hidden;}.BMap_scaleCtrl div.BMap_scaleTxt{font-size:11px;font-family:Arial,sans-serif;}.BMap_scaleCtrl div{position:absolute;overflow:hidden;}.BMap_scaleHBar img,.BMap_scaleLBar img,.BMap_scaleRBar img{position:absolute;width:37px;height:442px;left:0;}.BMap_scaleHBar{width:100%;height:5px;font-size:0;bottom:0;}.BMap_scaleHBar img{top:-437px;width:100%;}.BMap_scaleLBar,.BMap_scaleRBar{width:3px;height:9px;bottom:0;font-size:0;z-index:1;}.BMap_scaleLBar img{top:-427px;left:0;}.BMap_scaleRBar img{top:-427px;left:-5px;}.BMap_scaleLBar{left:0;}.BMap_scaleRBar{right:0;}.BMap_scaleTxt{text-align:center;width:100%;cursor:default;line-height:18px;}.BMap_omCtrl{background-color:#fff;overflow:hidden;}.BMap_omOutFrame{position:absolute;width:100%;height:100%;left:0;top:0;}.BMap_omInnFrame{position:absolute;border:1px solid #999;background-color:#ccc;overflow:hidden;}.BMap_omMapContainer{position:absolute;overflow:hidden;width:100%;height:100%;left:0;top:0;}.BMap_omViewMv{border-width:1px;border-style:solid;border-left-color:#84b0df;border-top-color:#adcff4;border-right-color:#274b8b;border-bottom-color:#274b8b;position:absolute;z-index:600;}.BMap_omViewInnFrame{border:1px solid #3e6bb8;}.BMap_omViewMask{width:1000px;height:1000px;position:absolute;left:0;top:0;background-color:#68c;opacity:.2;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=20);}.BMap_omBtn{height:13px;width:13px;position:absolute;cursor:pointer;overflow:hidden;background:url(../images/mapctrls1d3.gif) no-repeat;z-index:1210;}.anchorBR .BMap_omOutFrame{border-top:1px solid #999;border-left:1px solid #999;}.quad4 .BMap_omBtn{background-position:-26px -27px;}.quad4 .BMap_omBtn.hover{background-position:0 -27px;}.quad4 .BMap_omBtn.BMap_omBtnClosed{background-position:-39px -27px;}.quad4 .BMap_omBtn.BMap_omBtnClosed.hover{background-position:-13px -27px;}.anchorTR .BMap_omOutFrame{border-bottom:1px solid #999;border-left:1px solid #999;}.quad1 .BMap_omBtn{background-position:-39px -41px;}.quad1 .BMap_omBtn.hover{background-position:-13px -41px;}.quad1 .BMap_omBtn.BMap_omBtnClosed{background-position:-26px -41px;}.quad1 .BMap_omBtn.BMap_omBtnClosed.hover{background-position:0 -41px;}.anchorBL .BMap_omOutFrame{border-top:1px solid #999;border-right:1px solid #999;}.quad3 .BMap_omBtn{background-position:-27px -40px;}.quad3 .BMap_omBtn.hover{background-position:-1px -40px;}.quad3 .BMap_omBtn.BMap_omBtnClosed{background-position:-40px -40px;}.quad3 .BMap_omBtn.BMap_omBtnClosed.hover{background-position:-14px -40px;}.anchorTL .BMap_omOutFrame{border-bottom:1px solid #999;border-right:1px solid #999;}.quad2 .BMap_omBtn{background-position:-40px -28px;}.quad2 .BMap_omBtn.hover{background-position:-14px -28px;}.quad2 .BMap_omBtn.BMap_omBtnClosed{background-position:-27px -28px;}.quad2 .BMap_omBtn.BMap_omBtnClosed.hover{background-position:-1px -28px;}.anchorR .BMap_omOutFrame{border-bottom:1px solid #999;border-left:1px solid #999;border-top:1px solid #999;}.anchorL .BMap_omOutFrame{border-bottom:1px solid #999;border-right:1px solid #999;border-top:1px solid #999;}.anchorB .BMap_omOutFrame{border-top:1px solid #999;border-left:1px solid #999;border-right:1px solid #999;}.anchorT .BMap_omOutFrame{border-bottom:1px solid #999;border-right:1px solid #999;border-left:1px solid #999;}.anchorNon .BMap_omOutFrame,.withOffset .BMap_omOutFrame{border:1px solid #999;}.BMap_zoomMask0,.BMap_zoomMask1{position:absolute;left:0;top:0;width:100%;height:100%;background:transparent url(../images/blank.gif);z-index:1000;}.BMap_contextMenu{position:absolute;border-top:1px solid #adbfe4;border-left:1px solid #adbfe4;border-right:1px solid #8ba4d8;border-bottom:1px solid #8ba4d8;padding:0;margin:0;width:auto;visibility:hidden;background:#fff;z-index:10000000;}.BMap_cmShadow{position:absolute;background:#000;opacity:.3;filter:alpha(opacity=30);visibility:hidden;z-index:9000000;}div.BMap_cmDivider{border-bottom:1px solid #adbfe4;font-size:0;padding:1px;margin:0 6px;}div.BMap_cmFstItem{margin-top:2px;}div.BMap_cmLstItem{margin-bottom:2px;}.BMap_shadow img{border:0 none;margin:0;padding:0;position:absolute;height:370px;width:1144px;}.BMap_pop .BMap_top{border-top:1px solid #ababab;background-color:#fff;}.BMap_pop .BMap_center{border-left:1px solid #ababab;border-right:1px solid #ababab;background-color:#fff;}.BMap_pop .BMap_bottom{border-bottom:1px solid #ababab;background-color:#fff;}.BMap_shadow,.BMap_shadow img,.BMap_shadow div{-moz-user-select:none;-webkit-user-select:none;}.BMap_checkbox{background:url(../images/mapctrls1d3.gif);vertical-align:middle;display:inline-block;width:11px;height:11px;margin-right:4px;background-position:-14px 90px;}.BMap_checkbox.checked{background-position:-2px 90px;}.BMap_pop .BMap_top img,.BMap_pop .BMap_center img,.BMap_pop .BMap_bottom img{display:none;}@media print{.BMap_noprint{display:none;}.BMap_noscreen{display:block;}.BMap_mask{background:none;}.BMap_pop .BMap_top img,.BMap_pop .BMap_center img,.BMap_pop .BMap_bottom img{display:block;}} \ No newline at end of file diff --git a/public/static/bdmap/foot.html b/public/static/bdmap/foot.html new file mode 100644 index 0000000..3764b8c --- /dev/null +++ b/public/static/bdmap/foot.html @@ -0,0 +1,5 @@ +
            + +
            \ No newline at end of file diff --git a/public/static/bdmap/header.html b/public/static/bdmap/header.html new file mode 100644 index 0000000..5f74022 --- /dev/null +++ b/public/static/bdmap/header.html @@ -0,0 +1,21 @@ +
            + +
            + diff --git a/public/static/bdmap/hongping.html b/public/static/bdmap/hongping.html new file mode 100644 index 0000000..49bcefa --- /dev/null +++ b/public/static/bdmap/hongping.html @@ -0,0 +1,15325 @@ + + + + + SVG Zooming + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/static/bdmap/images/blank.gif b/public/static/bdmap/images/blank.gif new file mode 100644 index 0000000..71cb4ee Binary files /dev/null and b/public/static/bdmap/images/blank.gif differ diff --git a/public/static/bdmap/images/closedhand.cur b/public/static/bdmap/images/closedhand.cur new file mode 100644 index 0000000..ef36639 Binary files /dev/null and b/public/static/bdmap/images/closedhand.cur differ diff --git a/public/static/bdmap/images/copyright_logo.png b/public/static/bdmap/images/copyright_logo.png new file mode 100644 index 0000000..2461ed0 Binary files /dev/null and b/public/static/bdmap/images/copyright_logo.png differ diff --git a/public/static/bdmap/images/iw3.png b/public/static/bdmap/images/iw3.png new file mode 100644 index 0000000..50b19ae Binary files /dev/null and b/public/static/bdmap/images/iw3.png differ diff --git a/public/static/bdmap/images/iw_close1d3.gif b/public/static/bdmap/images/iw_close1d3.gif new file mode 100644 index 0000000..f9f0f50 Binary files /dev/null and b/public/static/bdmap/images/iw_close1d3.gif differ diff --git a/public/static/bdmap/images/iw_minus.gif b/public/static/bdmap/images/iw_minus.gif new file mode 100644 index 0000000..3fb0c72 Binary files /dev/null and b/public/static/bdmap/images/iw_minus.gif differ diff --git a/public/static/bdmap/images/iw_plus.gif b/public/static/bdmap/images/iw_plus.gif new file mode 100644 index 0000000..244763b Binary files /dev/null and b/public/static/bdmap/images/iw_plus.gif differ diff --git a/public/static/bdmap/images/iw_plus1d3.gif b/public/static/bdmap/images/iw_plus1d3.gif new file mode 100644 index 0000000..3efc8b5 Binary files /dev/null and b/public/static/bdmap/images/iw_plus1d3.gif differ diff --git a/public/static/bdmap/images/iws3.png b/public/static/bdmap/images/iws3.png new file mode 100644 index 0000000..4c28596 Binary files /dev/null and b/public/static/bdmap/images/iws3.png differ diff --git a/public/static/bdmap/images/mapctrls1d3.gif b/public/static/bdmap/images/mapctrls1d3.gif new file mode 100644 index 0000000..522c6f8 Binary files /dev/null and b/public/static/bdmap/images/mapctrls1d3.gif differ diff --git a/public/static/bdmap/images/mapctrls2d0.gif b/public/static/bdmap/images/mapctrls2d0.gif new file mode 100644 index 0000000..b02291f Binary files /dev/null and b/public/static/bdmap/images/mapctrls2d0.gif differ diff --git a/public/static/bdmap/images/mapctrls2d0.png b/public/static/bdmap/images/mapctrls2d0.png new file mode 100644 index 0000000..fc6b518 Binary files /dev/null and b/public/static/bdmap/images/mapctrls2d0.png differ diff --git a/public/static/bdmap/images/marker_red_hd.png b/public/static/bdmap/images/marker_red_hd.png new file mode 100644 index 0000000..38a5900 Binary files /dev/null and b/public/static/bdmap/images/marker_red_hd.png differ diff --git a/public/static/bdmap/images/marker_red_sprite.png b/public/static/bdmap/images/marker_red_sprite.png new file mode 100644 index 0000000..38a5900 Binary files /dev/null and b/public/static/bdmap/images/marker_red_sprite.png differ diff --git a/public/static/bdmap/images/openhand.cur b/public/static/bdmap/images/openhand.cur new file mode 100644 index 0000000..cb444f9 Binary files /dev/null and b/public/static/bdmap/images/openhand.cur differ diff --git a/public/static/bdmap/images/ruler.cur b/public/static/bdmap/images/ruler.cur new file mode 100644 index 0000000..1a900be Binary files /dev/null and b/public/static/bdmap/images/ruler.cur differ diff --git a/public/static/bdmap/images/stop_icon.png b/public/static/bdmap/images/stop_icon.png new file mode 100644 index 0000000..de909a9 Binary files /dev/null and b/public/static/bdmap/images/stop_icon.png differ diff --git a/public/static/bdmap/js/apiv2.0.min.js b/public/static/bdmap/js/apiv2.0.min.js new file mode 100644 index 0000000..48f1f82 --- /dev/null +++ b/public/static/bdmap/js/apiv2.0.min.js @@ -0,0 +1,8618 @@ +window.TILE_VERSION = { + "ditu": { + "normal": { + "version": "088", + "updateDate": "20180118" + }, + "satellite": { + "version": "009", + "updateDate": "20180118" + }, + "normalTraffic": { + "version": "081", + "updateDate": "20180118" + }, + "satelliteTraffic": { + "version": "083", + "updateDate": "20180118" + }, + "mapJS": { + "version": "104", + "updateDate": "20180118" + }, + "satelliteStreet": { + "version": "083", + "updateDate": "20180118" + }, + "panoClick": { + "version": "1033", + "updateDate": "20180122" + }, + "panoUdt": { + "version": "20180122", + "updateDate": "20180122" + }, + "panoSwfAPI": { + "version": "20150123", + "updateDate": "20150123" + }, + "panoSwfPlace": { + "version": "20141112", + "updateDate": "20141112" + }, + "earthVector": { + "version": "001", + "updateDate": "20180118" + } + }, + "webapp": { + "high_normal": { + "version": "001", + "updateDate": "20180118" + }, + "lower_normal": { + "version": "002", + "updateDate": "20180118" + } + }, + "api_for_mobile": { + "vector": { + "version": "002", + "updateDate": "20180118" + }, + "vectorIcon": { + "version": "002", + "updateDate": "20180118" + } + } +}; +window.BMAP_AUTHENTIC_KEY = "yEzsq3DGfYdUhhfDgkw5BmQyTxZUtNVu"; (function() { + function aa(a) { + throw a; + } + var j = void 0, + o = !0, + p = null, + q = !1; + function s() { + return function() {} + } + function ba(a) { + return function(b) { + this[a] = b + } + } + function u(a) { + return function() { + return this[a] + } + } + function ca(a) { + return function() { + return a + } + } + var da, ga = []; + function ha(a) { + return function() { + return ga[a].apply(this, arguments) + } + } + function ia(a, b) { + return ga[a] = b + } + var ja, x = ja = x || { + version: "1.3.4" + }; + x.ba = "$BAIDU$"; + window[x.ba] = window[x.ba] || {}; + x.object = x.object || {}; + x.extend = x.object.extend = function(a, b) { + for (var c in b) b.hasOwnProperty(c) && (a[c] = b[c]); + return a + }; + x.D = x.D || {}; + x.D.$ = function(a) { + return "string" == typeof a || a instanceof String ? document.getElementById(a) : a && a.nodeName && (1 == a.nodeType || 9 == a.nodeType) ? a: p + }; + x.$ = x.Dc = x.D.$; + x.D.U = function(a) { + a = x.D.$(a); + if (a === p) return a; + a.style.display = "none"; + return a + }; + x.U = x.D.U; + x.lang = x.lang || {}; + x.lang.tg = function(a) { + return "[object String]" == Object.prototype.toString.call(a) + }; + x.tg = x.lang.tg; + x.D.Pj = function(a) { + return x.lang.tg(a) ? document.getElementById(a) : a + }; + x.Pj = x.D.Pj; + x.D.getElementsByClassName = function(a, b) { + var c; + if (a.getElementsByClassName) c = a.getElementsByClassName(b); + else { + var d = a; + d == p && (d = document); + c = []; + var d = d.getElementsByTagName("*"), + e = d.length, + f = RegExp("(^|\\s)" + b + "(\\s|$)"), + g, + i; + for (i = g = 0; g < e; g++) f.test(d[g].className) && (c[i] = d[g], i++) + } + return c + }; + x.getElementsByClassName = x.D.getElementsByClassName; + x.D.contains = function(a, b) { + var c = x.D.Pj, + a = c(a), + b = c(b); + return a.contains ? a != b && a.contains(b) : !!(a.compareDocumentPosition(b) & 16) + }; + x.da = x.da || {}; + /msie (\d+\.\d)/i.test(navigator.userAgent) && (x.da.la = x.la = document.documentMode || +RegExp.$1); + var ka = { + cellpadding: "cellPadding", + cellspacing: "cellSpacing", + colspan: "colSpan", + rowspan: "rowSpan", + valign: "vAlign", + usemap: "useMap", + frameborder: "frameBorder" + }; + 8 > x.da.la ? (ka["for"] = "htmlFor", ka["class"] = "className") : (ka.htmlFor = "for", ka.className = "class"); + x.D.BG = ka; + x.D.nF = function(a, b, c) { + a = x.D.$(a); + if (a === p) return a; + if ("style" == b) a.style.cssText = c; + else { + b = x.D.BG[b] || b; + a.setAttribute(b, c) + } + return a + }; + x.nF = x.D.nF; + x.D.oF = function(a, b) { + a = x.D.$(a); + if (a === p) return a; + for (var c in b) x.D.nF(a, c, b[c]); + return a + }; + x.oF = x.D.oF; + x.Rk = x.Rk || {}; (function() { + var a = RegExp("(^[\\s\\t\\xa0\\u3000]+)|([\\u3000\\xa0\\s\\t]+$)", "g"); + x.Rk.trim = function(b) { + return ("" + b).replace(a, "") + } + })(); + x.trim = x.Rk.trim; + x.Rk.To = function(a, b) { + var a = "" + a, + c = Array.prototype.slice.call(arguments, 1), + d = Object.prototype.toString; + if (c.length) { + c = c.length == 1 ? b !== p && /\[object Array\]|\[object Object\]/.test(d.call(b)) ? b: c: c; + return a.replace(/#\{(.+?)\}/g, + function(a, b) { + var g = c[b]; + "[object Function]" == d.call(g) && (g = g(b)); + return "undefined" == typeof g ? "": g + }) + } + return a + }; + x.To = x.Rk.To; + x.D.Sb = function(a, b) { + a = x.D.$(a); + if (a === p) return a; + for (var c = a.className.split(/\s+/), d = b.split(/\s+/), e, f = d.length, g, i = 0; i < f; ++i) { + g = 0; + for (e = c.length; g < e; ++g) if (c[g] == d[i]) { + c.splice(g, 1); + break + } + } + a.className = c.join(" "); + return a + }; + x.Sb = x.D.Sb; + x.D.Jx = function(a, b, c) { + a = x.D.$(a); + if (a === p) return a; + var d; + if (a.insertAdjacentHTML) a.insertAdjacentHTML(b, c); + else { + d = a.ownerDocument.createRange(); + b = b.toUpperCase(); + if (b == "AFTERBEGIN" || b == "BEFOREEND") { + d.selectNodeContents(a); + d.collapse(b == "AFTERBEGIN") + } else { + b = b == "BEFOREBEGIN"; + d[b ? "setStartBefore": "setEndAfter"](a); + d.collapse(b) + } + d.insertNode(d.createContextualFragment(c)) + } + return a + }; + x.Jx = x.D.Jx; + x.D.show = function(a) { + a = x.D.$(a); + if (a === p) return a; + a.style.display = ""; + return a + }; + x.show = x.D.show; + x.D.FD = function(a) { + a = x.D.$(a); + return a === p ? a: a.nodeType == 9 ? a: a.ownerDocument || a.document + }; + x.D.Ua = function(a, b) { + a = x.D.$(a); + if (a === p) return a; + for (var c = b.split(/\s+/), d = a.className, e = " " + d + " ", f = 0, g = c.length; f < g; f++) e.indexOf(" " + c[f] + " ") < 0 && (d = d + (" " + c[f])); + a.className = d; + return a + }; + x.Ua = x.D.Ua; + x.D.DB = x.D.DB || {}; + x.D.Ll = x.D.Ll || []; + x.D.Ll.filter = function(a, b, c) { + for (var d = 0, + e = x.D.Ll, + f; f = e[d]; d++) if (f = f[c]) b = f(a, b); + return b + }; + x.Rk.sO = function(a) { + return a.indexOf("-") < 0 && a.indexOf("_") < 0 ? a: a.replace(/[-_][^-_]/g, + function(a) { + return a.charAt(1).toUpperCase() + }) + }; + x.D.E_ = function(a) { + x.D.bt(a, "expand") ? x.D.Sb(a, "expand") : x.D.Ua(a, "expand") + }; + x.D.bt = function(a) { + if (arguments.length <= 0 || typeof a === "function") return this; + if (this.size() <= 0) return q; + var a = a.replace(/^\s+/g, "").replace(/\s+$/g, "").replace(/\s+/g, " "), + b = a.split(" "), + c; + x.forEach(this, + function(a) { + for (var a = a.className, + e = 0; e < b.length; e++) if (!~ (" " + a + " ").indexOf(" " + b[e] + " ")) { + c = q; + return + } + c !== q && (c = o) + }); + return c + }; + x.D.sj = function(a, b) { + var c = x.D, + a = c.$(a); + if (a === p) return a; + var b = x.Rk.sO(b), + d = a.style[b]; + if (!d) var e = c.DB[b], + d = a.currentStyle || (x.da.la ? a.style: getComputedStyle(a, p)), + d = e && e.get ? e.get(a, d) : d[e || b]; + if (e = c.Ll) d = e.filter(b, d, "get"); + return d + }; + x.sj = x.D.sj; + /opera\/(\d+\.\d)/i.test(navigator.userAgent) && (x.da.opera = +RegExp.$1); + x.da.lM = /webkit/i.test(navigator.userAgent); + x.da.mY = /gecko/i.test(navigator.userAgent) && !/like gecko/i.test(navigator.userAgent); + x.da.rE = "CSS1Compat" == document.compatMode; + x.D.ha = function(a) { + a = x.D.$(a); + if (a === p) return a; + var b = x.D.FD(a), + c = x.da, + d = x.D.sj; + c.mY > 0 && b.getBoxObjectFor && d(a, "position"); + var e = { + left: 0, + top: 0 + }, + f; + if (a == (c.la && !c.rE ? b.body: b.documentElement)) return e; + if (a.getBoundingClientRect) { + a = a.getBoundingClientRect(); + e.left = Math.floor(a.left) + Math.max(b.documentElement.scrollLeft, b.body.scrollLeft); + e.top = Math.floor(a.top) + Math.max(b.documentElement.scrollTop, b.body.scrollTop); + e.left = e.left - b.documentElement.clientLeft; + e.top = e.top - b.documentElement.clientTop; + a = b.body; + b = parseInt(d(a, "borderLeftWidth")); + d = parseInt(d(a, "borderTopWidth")); + if (c.la && !c.rE) { + e.left = e.left - (isNaN(b) ? 2 : b); + e.top = e.top - (isNaN(d) ? 2 : d) + } + } else { + f = a; + do { + e.left = e.left + f.offsetLeft; + e.top = e.top + f.offsetTop; + if (c.lM > 0 && d(f, "position") == "fixed") { + e.left = e.left + b.body.scrollLeft; + e.top = e.top + b.body.scrollTop; + break + } + f = f.offsetParent + } while ( f && f != a ); + if (c.opera > 0 || c.lM > 0 && d(a, "position") == "absolute") e.top = e.top - b.body.offsetTop; + for (f = a.offsetParent; f && f != b.body;) { + e.left = e.left - f.scrollLeft; + if (!c.opera || f.tagName != "TR") e.top = e.top - f.scrollTop; + f = f.offsetParent + } + } + return e + }; + /firefox\/(\d+\.\d)/i.test(navigator.userAgent) && (x.da.nf = +RegExp.$1); + /BIDUBrowser/i.test(navigator.userAgent) && (x.da.v1 = o); + var la = navigator.userAgent; + /(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(la) && !/chrome/i.test(la) && (x.da.hF = +(RegExp.$1 || RegExp.$2)); + /chrome\/(\d+\.\d)/i.test(navigator.userAgent) && (x.da.dC = +RegExp.$1); + x.kc = x.kc || {}; + x.kc.Gb = function(a, b) { + var c, d, e = a.length; + if ("function" == typeof b) for (d = 0; d < e; d++) { + c = a[d]; + c = b.call(a, c, d); + if (c === q) break + } + return a + }; + x.Gb = x.kc.Gb; + x.lang.ba = function() { + return "TANGRAM__" + (window[x.ba]._counter++).toString(36) + }; + window[x.ba]._counter = window[x.ba]._counter || 1; + window[x.ba]._instances = window[x.ba]._instances || {}; + x.lang.lt = function(a) { + return "[object Function]" == Object.prototype.toString.call(a) + }; + x.lang.Ca = function(a) { + this.ba = a || x.lang.ba(); + window[x.ba]._instances[this.ba] = this + }; + window[x.ba]._instances = window[x.ba]._instances || {}; + x.lang.Ca.prototype.gi = ha(0); + x.lang.Ca.prototype.toString = function() { + return "[object " + (this.xQ || "Object") + "]" + }; + x.lang.Yy = function(a, b) { + this.type = a; + this.returnValue = o; + this.target = b || p; + this.currentTarget = p + }; + x.lang.Ca.prototype.addEventListener = function(a, b, c) { + if (x.lang.lt(b)) { ! b.bl && (b.bl = {}); ! this.Gi && (this.Gi = {}); + var d = this.Gi, + e; + if (typeof c == "string" && c) { / [ ^ \w\ - ] / .test(c) && aa("nonstandard key:" + c); + e = b.Bx = c + } + a.indexOf("on") != 0 && (a = "on" + a); + typeof d[a] != "object" && (d[a] = {}); + typeof b.bl[a] != "object" && (b.bl[a] = {}); + e = e || x.lang.ba(); + b.bl[a].Bx = e; + d[a][e] = b + } + }; + x.lang.Ca.prototype.removeEventListener = function(a, b) { + a.indexOf("on") != 0 && (a = "on" + a); + if (x.lang.lt(b)) { + if (!b.bl || !b.bl[a]) return; + b = b.bl[a].Bx + } else if (!x.lang.tg(b)) return; ! this.Gi && (this.Gi = {}); + var c = this.Gi; + c[a] && c[a][b] && delete c[a][b] + }; + x.lang.Ca.prototype.dispatchEvent = function(a, b) { + x.lang.tg(a) && (a = new x.lang.Yy(a)); ! this.Gi && (this.Gi = {}); + var b = b || {}, + c; + for (c in b) a[c] = b[c]; + var d = this.Gi, + e = a.type; + a.target = a.target || this; + a.currentTarget = this; + e.indexOf("on") != 0 && (e = "on" + e); + x.lang.lt(this[e]) && this[e].apply(this, arguments); + if (typeof d[e] == "object") for (c in d[e]) d[e][c].apply(this, arguments); + return a.returnValue + }; + x.lang.ua = function(a, b, c) { + var d, e, f = a.prototype; + e = new Function; + e.prototype = b.prototype; + e = a.prototype = new e; + for (d in f) e[d] = f[d]; + a.prototype.constructor = a; + a.v_ = b.prototype; + if ("string" == typeof c) e.xQ = c + }; + x.ua = x.lang.ua; + x.lang.Kc = function(a) { + return window[x.ba]._instances[a] || p + }; + x.platform = x.platform || {}; + x.platform.eM = /macintosh/i.test(navigator.userAgent); + x.platform.i3 = /MicroMessenger/i.test(navigator.userAgent); + x.platform.mM = /windows/i.test(navigator.userAgent); + x.platform.uY = /x11/i.test(navigator.userAgent); + x.platform.Im = /android/i.test(navigator.userAgent); + /android (\d+\.\d)/i.test(navigator.userAgent) && (x.platform.PJ = x.PJ = RegExp.$1); + x.platform.oY = /ipad/i.test(navigator.userAgent); + x.platform.nE = /iphone/i.test(navigator.userAgent); + function ma(a, b) { + a.domEvent = b = window.event || b; + a.clientX = b.clientX || b.pageX; + a.clientY = b.clientY || b.pageY; + a.offsetX = b.offsetX || b.layerX; + a.offsetY = b.offsetY || b.layerY; + a.screenX = b.screenX; + a.screenY = b.screenY; + a.ctrlKey = b.ctrlKey || b.metaKey; + a.shiftKey = b.shiftKey; + a.altKey = b.altKey; + if (b.touches) { + a.touches = []; + for (var c = 0; c < b.touches.length; c++) a.touches.push({ + clientX: b.touches[c].clientX, + clientY: b.touches[c].clientY, + screenX: b.touches[c].screenX, + screenY: b.touches[c].screenY, + pageX: b.touches[c].pageX, + pageY: b.touches[c].pageY, + target: b.touches[c].target, + identifier: b.touches[c].identifier + }) + } + if (b.changedTouches) { + a.changedTouches = []; + for (c = 0; c < b.changedTouches.length; c++) a.changedTouches.push({ + clientX: b.changedTouches[c].clientX, + clientY: b.changedTouches[c].clientY, + screenX: b.changedTouches[c].screenX, + screenY: b.changedTouches[c].screenY, + pageX: b.changedTouches[c].pageX, + pageY: b.changedTouches[c].pageY, + target: b.changedTouches[c].target, + identifier: b.changedTouches[c].identifier + }) + } + if (b.targetTouches) { + a.targetTouches = []; + for (c = 0; c < b.targetTouches.length; c++) a.targetTouches.push({ + clientX: b.targetTouches[c].clientX, + clientY: b.targetTouches[c].clientY, + screenX: b.targetTouches[c].screenX, + screenY: b.targetTouches[c].screenY, + pageX: b.targetTouches[c].pageX, + pageY: b.targetTouches[c].pageY, + target: b.targetTouches[c].target, + identifier: b.targetTouches[c].identifier + }) + } + a.rotation = b.rotation; + a.scale = b.scale; + return a + } + x.lang.Tw = function(a) { + var b = window[x.ba]; + b.IS && delete b.IS[a] + }; + x.event = {}; + x.M = x.event.M = function(a, b, c) { + if (! (a = x.$(a))) return a; + b = b.replace(/^on/, ""); + a.addEventListener ? a.addEventListener(b, c, q) : a.attachEvent && a.attachEvent("on" + b, c); + return a + }; + x.bd = x.event.bd = function(a, b, c) { + if (! (a = x.$(a))) return a; + b = b.replace(/^on/, ""); + a.removeEventListener ? a.removeEventListener(b, c, q) : a.detachEvent && a.detachEvent("on" + b, c); + return a + }; + x.D.bt = function(a, b) { + if (!a || !a.className || typeof a.className != "string") return q; + var c = -1; + try { + c = a.className == b || a.className.search(RegExp("(\\s|^)" + b + "(\\s|$)")) + } catch(d) { + return q + } + return c > -1 + }; + x.TK = function() { + function a(a) { + document.addEventListener && (this.element = a, this.WK = this.yk ? "touchstart": "mousedown", this.nD = this.yk ? "touchmove": "mousemove", this.mD = this.yk ? "touchend": "mouseup", this.ph = q, this.gu = this.fu = 0, this.element.addEventListener(this.WK, this, q), ja.M(this.element, "mousedown", s()), this.handleEvent(p)) + } + a.prototype = { + yk: "ontouchstart" in window || "createTouch" in document, + start: function(a) { + na(a); + this.ph = q; + this.fu = this.yk ? a.touches[0].clientX: a.clientX; + this.gu = this.yk ? a.touches[0].clientY: a.clientY; + this.element.addEventListener(this.nD, this, q); + this.element.addEventListener(this.mD, this, q) + }, + move: function(a) { + oa(a); + var c = this.yk ? a.touches[0].clientY: a.clientY; + if (10 < Math.abs((this.yk ? a.touches[0].clientX: a.clientX) - this.fu) || 10 < Math.abs(c - this.gu)) this.ph = o + }, + end: function(a) { + oa(a); + this.ph || (a = document.createEvent("Event"), a.initEvent("tap", q, o), this.element.dispatchEvent(a)); + this.element.removeEventListener(this.nD, this, q); + this.element.removeEventListener(this.mD, this, q) + }, + handleEvent: function(a) { + if (a) switch (a.type) { + case this.WK: + this.start(a); + break; + case this.nD: + this.move(a); + break; + case this.mD: + this.end(a) + } + } + }; + return function(b) { + return new a(b) + } + } (); + var z = window.BMap || {}; + z.version = "2.0"; + z.HU = 0.34 > Math.random(); + 0 <= z.version.indexOf("#") && (z.version = "2.0"); + z.Dr = []; + z.Ue = function(a) { + this.Dr.push(a) + }; + z.tr = []; + z.Um = function(a) { + this.tr.push(a) + }; + z.VU = z.apiLoad || + function() { + z.version && z.version >= 1.5 && pa(z.wc + "?qt=verify&ak=" + qa, + function(a) { + if (a && a.error !== 0) { + if (typeof map !== "undefined") { + map.Na().innerHTML = ""; + map.Gi = {} + } + z = p; + var b = "\u767e\u5ea6\u672a\u6388\u6743\u4f7f\u7528\u5730\u56feAPI\uff0c\u53ef\u80fd\u662f\u56e0\u4e3a\u60a8\u63d0\u4f9b\u7684\u5bc6\u94a5\u4e0d\u662f\u6709\u6548\u7684\u767e\u5ea6LBS\u5f00\u653e\u5e73\u53f0\u5bc6\u94a5\uff0c\u6216\u6b64\u5bc6\u94a5\u672a\u5bf9\u672c\u5e94\u7528\u7684\u767e\u5ea6\u5730\u56feJavaScriptAPI\u6388\u6743\u3002\u60a8\u53ef\u4ee5\u8bbf\u95ee\u5982\u4e0b\u7f51\u5740\u4e86\u89e3\u5982\u4f55\u83b7\u53d6\u6709\u6548\u7684\u5bc6\u94a5\uff1ahttp://lbsyun.baidu.com/apiconsole/key#\u3002"; + switch (a.error) { + case 101: + b = "\u5f00\u53d1\u8005\u7981\u7528\u4e86\u8be5ak\u7684jsapi\u670d\u52a1\u6743\u9650\u3002\u60a8\u53ef\u4ee5\u8bbf\u95ee\u5982\u4e0b\u7f51\u5740\u4e86\u89e3\u5982\u4f55\u83b7\u53d6\u6709\u6548\u7684\u5bc6\u94a5\uff1ahttp://lbsyun.baidu.com/apiconsole/key#\u3002"; + break; + case 102: + b = "\u5f00\u53d1\u8005Referer\u4e0d\u6b63\u786e\u3002\u60a8\u53ef\u4ee5\u8bbf\u95ee\u5982\u4e0b\u7f51\u5740\u4e86\u89e3\u5982\u4f55\u83b7\u53d6\u6709\u6548\u7684\u5bc6\u94a5\uff1ahttp://lbsyun.baidu.com/apiconsole/key#\u3002" + } + alert(b) + } + }) + }; + var qa = window.BMAP_AUTHENTIC_KEY; + window.BMAP_AUTHENTIC_KEY = p; + var ra = window.BMap_loadScriptTime, + sa = (new Date).getTime(), + ta = p, + ua = o, + va = 5042, + wa = 5002, + xa = 5003, + ya = "load_mapclick", + za = 5038, + Ba = 5041, + Ca = 5047, + Da = 5036, + Fa = 5039, + Ga = 5037, + Ha = 5040, + Ia = 5011, + Ja = 7E3; + var Ka = 0; + function La(a, b) { + if (a = x.$(a)) { + var c = this; + x.lang.Ca.call(c); + b = b || {}; + c.K = { + jC: 200, + Yb: o, + $w: q, + fD: o, + Qo: o, + Ro: b.enableWheelZoom || q, + RK: o, + hD: o, + Hs: o, + Gs: o, + mm: o, + Oo: b.enable3DBuilding || q, + Gc: 25, + n0: 240, + JU: 450, + Xb: E.Xb, + Fd: E.Fd, + Mx: !!b.Mx, + gc: Math.round(b.minZoom) || 1, + $b: Math.round(b.maxZoom) || 19, + Ib: b.mapType || Ma, + Z3: q, + NK: b.drawer || Ka, + Zw: o, + Xw: 500, + vW: b.enableHighResolution !== q, + lj: b.enableMapClick !== q, + devicePixelRatio: b.devicePixelRatio || window.devicePixelRatio || 1, + SF: 99, + ue: b.mapStyle || p, + CY: b.logoControl === q ? q: o, + bV: [], + zw: b.beforeClickIcon || p + }; + c.K.ue && (this.dY(c.K.ue.controls), this.ZL(c.K.ue.geotableId)); + c.K.ue && c.K.ue.styleId && c.S2(c.K.ue.styleId); + c.K.em = { + dark: { + backColor: "#2D2D2D", + textColor: "#bfbfbf", + iconUrl: "dicons" + }, + normal: { + backColor: "#F3F1EC", + textColor: "#c61b1b", + iconUrl: "icons" + }, + light: { + backColor: "#EBF8FC", + textColor: "#017fb4", + iconUrl: "licons" + } + }; + b.enableAutoResize && (c.K.Gs = b.enableAutoResize); + b.enableStreetEntrance === q && (c.K.mm = b.enableStreetEntrance); + b.enableDeepZoom === q && (c.K.RK = b.enableDeepZoom); + var d = c.K.bV; + if (G()) for (var e = 0, + f = d.length; e < f; e++) if (x.da[d[e]]) { + c.K.devicePixelRatio = 1; + break + } + d = -1 < navigator.userAgent.toLowerCase().indexOf("android"); + e = -1 < navigator.userAgent.toLowerCase().indexOf("mqqbrowser"); + if ( - 1 < navigator.userAgent.toLowerCase().indexOf("UCBrowser") || d && e) c.K.SF = 99; + c.Va = a; + c.wB(a); + a.unselectable = "on"; + a.innerHTML = ""; + a.appendChild(c.va()); + b.size && this.ye(b.size); + d = c.Bb(); + c.width = d.width; + c.height = d.height; + c.offsetX = 0; + c.offsetY = 0; + c.platform = a.firstChild; + c.ve = c.platform.firstChild; + c.ve.style.width = c.width + "px"; + c.ve.style.height = c.height + "px"; + c.Vd = {}; + c.gf = new H(0, 0); + c.mc = new H(0, 0); + c.Oa = 3; + c.Lc = 0; + c.BC = p; + c.AC = p; + c.Wb = ""; + c.Fw = ""; + c.Oh = {}; + c.Oh.custom = {}; + c.Ta = 0; + b.useWebGL === q && Na(q); + c.P = new Oa(a, { + Pf: "api", + NS: o + }); + c.P.U(); + c.P.sF(c); + b = b || {}; + d = c.Ib = c.K.Ib; + c.xe = d.dp(); + d === Pa && Ra(wa); + d === Sa && Ra(xa); + d = c.K; + d.KO = Math.round(b.minZoom); + d.JO = Math.round(b.maxZoom); + c.Uu(); + c.R = { + Hc: q, + lc: 0, + ut: 0, + qM: 0, + m3: 0, + aC: q, + $E: -1, + Pe: [] + }; + c.platform.style.cursor = c.K.Xb; + for (e = 0; e < z.Dr.length; e++) z.Dr[e](c); + c.R.$E = e; + c.ca(); + I.load("map", + function() { + c.yb() + }); + c.K.lj && (setTimeout(function() { + Ra(ya) + }, + 1E3), I.load("mapclick", + function() { + window.MPC_Mgr = window.MPC_Mgr || {}; + window.MPC_Mgr[c.ba] = new Ta(c) + }, + o)); + Va() && I.load("oppc", + function() { + c.qz() + }); + G() && I.load("opmb", + function() { + c.qz() + }); + a = p; + c.KB = [] + } + } + x.lang.ua(La, x.lang.Ca, "Map"); + x.extend(La.prototype, { + va: function() { + var a = M("div"), + b = a.style; + b.overflow = "visible"; + b.position = "absolute"; + b.zIndex = "0"; + b.top = b.left = "0px"; + var b = M("div", { + "class": "BMap_mask" + }), + c = b.style; + c.position = "absolute"; + c.top = c.left = "0px"; + c.zIndex = "9"; + c.overflow = "hidden"; + c.WebkitUserSelect = "none"; + a.appendChild(b); + return a + }, + wB: function(a) { + var b = a.style; + b.overflow = "hidden"; + "absolute" !== Wa(a).position && (b.position = "relative", b.zIndex = 0); + b.backgroundColor = "#F3F1EC"; + b.color = "#000"; + b.textAlign = "left" + }, + ca: function() { + var a = this; + a.to = function() { + var b = a.Bb(); + if (a.width !== b.width || a.height !== b.height) { + var c = new N(a.width, a.height), + d = new O("onbeforeresize"); + d.size = c; + a.dispatchEvent(d); + a.hk((b.width - a.width) / 2, (b.height - a.height) / 2); + a.ve.style.width = (a.width = b.width) + "px"; + a.ve.style.height = (a.height = b.height) + "px"; + c = new O("onresize"); + c.size = b; + a.dispatchEvent(c) + } + }; + a.K.Gs && (a.R.Xl = setInterval(a.to, 80)) + }, + hk: function(a, b, c, d) { + var e = this.pa().Bc(this.fa()), + f = this.xe, + g = o; + c && H.dM(c) && (this.gf = new H(c.lng, c.lat), g = q); + if (c = c && d ? f.Lm(c, this.Wb) : this.mc) if (this.mc = new H(c.lng + a * e, c.lat - b * e), (a = f.oh(this.mc, this.Wb)) && g) this.gf = a + }, + Dg: function(a, b) { + if (Xa(a) && (this.Uu(), this.dispatchEvent(new O("onzoomstart")), a = this.Wn(a).zoom, a !== this.Oa)) { + this.Lc = this.Oa; + this.Oa = a; + var c; + b ? c = b: this.hh() && (c = this.hh().ha()); + c && (c = this.bc(c, this.Lc), this.hk(this.width / 2 - c.x, this.height / 2 - c.y, this.wb(c, this.Lc), o)); + this.dispatchEvent(new O("onzoomstartcode")) + } + }, + Nc: function(a) { + this.Dg(a) + }, + WF: function(a) { + this.Dg(this.Oa + 1, a) + }, + XF: function(a) { + this.Dg(this.Oa - 1, a) + }, + ui: function(a) { + a instanceof H && (this.mc = this.xe.Lm(a, this.Wb), this.gf = H.dM(a) ? new H(a.lng, a.lat) : this.xe.oh(this.mc, this.Wb)) + }, + xg: function(a, b) { + a = Math.round(a) || 0; + b = Math.round(b) || 0; + this.hk( - a, -b) + }, + ow: function(a) { + a && Ya(a.Ee) && (a.Ee(this), this.dispatchEvent(new O("onaddcontrol", a))) + }, + AN: function(a) { + a && Ya(a.remove) && (a.remove(), this.dispatchEvent(new O("onremovecontrol", a))) + }, + wo: function(a) { + a && Ya(a.ra) && (a.ra(this), this.dispatchEvent(new O("onaddcontextmenu", a))) + }, + Cp: function(a) { + a && Ya(a.remove) && (this.dispatchEvent(new O("onremovecontextmenu", a)), a.remove()) + }, + Ja: function(a) { + a && Ya(a.Ee) && (a.Ee(this), this.dispatchEvent(new O("onaddoverlay", a))) + }, + Tb: function(a) { + a && Ya(a.remove) && (a.remove(), this.dispatchEvent(new O("onremoveoverlay", a))) + }, + iK: function() { + this.dispatchEvent(new O("onclearoverlays")) + }, + Wg: function(a) { + a && this.dispatchEvent(new O("onaddtilelayer", a)) + }, + xh: function(a) { + a && this.dispatchEvent(new O("onremovetilelayer", a)) + }, + Ag: function(a) { + if (this.Ib !== a) { + var b = new O("onsetmaptype"); + b.Q3 = this.Ib; + this.Ib = this.K.Ib = a; + this.xe = this.Ib.dp(); + this.hk(0, 0, this.Ka(), o); + this.Uu(); + var c = this.Wn(this.fa()).zoom; + this.Dg(c); + this.dispatchEvent(b); + b = new O("onmaptypechange"); + b.Oa = c; + b.Ib = a; + this.dispatchEvent(b); (a === Za || a === Sa) && Ra(xa) + } + }, + Wf: function(a) { + var b = this; + if (a instanceof H) b.ui(a, { + noAnimation: o + }); + else if ($a(a)) if (b.Ib === Pa) { + var c = E.fC[a]; + c && (pt = c.m, b.Wf(pt)) + } else { + var d = this.IH(); + d.vF(function(c) { + 0 === d.wm() && 2 === d.Fa.result.type && (b.Wf(c.wk(0).point), Pa.sk(a) && b.pF(a)) + }); + d.search(a, { + log: "center" + }) + } + }, + Dd: function(a, b) { + "[object Undefined]" !== Object.prototype.toString.call(b) && (b = parseInt(b)); + z.Dn("cus.fire", "time", { + z_loadscripttime: sa - ra + }); + var c = this; + if ($a(a)) if (c.Ib === Pa) { + var d = E.fC[a]; + d && (pt = d.m, c.Dd(pt, b)) + } else { + var e = c.IH(); + e.vF(function(d) { + if (0 === e.wm() && (2 === e.Fa.result.type || 11 === e.Fa.result.type)) { + var d = d.wk(0).point, + f = b || P.dx(e.Fa.content.level, c); + c.Dd(d, f); + Pa.sk(a) && c.pF(a) + } + }); + e.search(a, { + log: "center" + }) + } else if (a instanceof H && b) { + b = c.Wn(b).zoom; + c.Lc = c.Oa || b; + c.Oa = b; + d = c.gf; + c.gf = new H(a.lng, a.lat); + c.mc = c.xe.Lm(c.gf, c.Wb); + c.BC = c.BC || c.Oa; + c.AC = c.AC || c.gf; + var f = new O("onload"), + g = new O("onloadcode"); + f.point = new H(a.lng, a.lat); + f.pixel = c.bc(c.gf, c.Oa); + f.zoom = b; + c.loaded || (c.loaded = o, c.dispatchEvent(f), ta || (ta = ab())); + c.dispatchEvent(g); + f = new O("onmoveend"); + f.kH = "centerAndZoom"; + d.nb(c.gf) || c.dispatchEvent(f); + c.dispatchEvent(new O("onmoveend")); + c.Lc !== c.Oa && (d = new O("onzoomend"), d.kH = "centerAndZoom", c.dispatchEvent(d)); + c.K.Oo && c.Oo() + } + }, + IH: function() { + this.R.AM || (this.R.AM = new bb(1)); + return this.R.AM + }, + reset: function() { + this.Dd(this.AC, this.BC, o) + }, + enableDragging: function() { + this.K.Yb = o + }, + disableDragging: function() { + this.K.Yb = q + }, + enableInertialDragging: function() { + this.K.Zw = o + }, + disableInertialDragging: function() { + this.K.Zw = q + }, + enableScrollWheelZoom: function() { + this.K.Ro = o + }, + disableScrollWheelZoom: function() { + this.K.Ro = q + }, + enableContinuousZoom: function() { + this.K.Qo = o + }, + disableContinuousZoom: function() { + this.K.Qo = q + }, + enableDoubleClickZoom: function() { + this.K.fD = o + }, + disableDoubleClickZoom: function() { + this.K.fD = q + }, + enableKeyboard: function() { + this.K.$w = o + }, + disableKeyboard: function() { + this.K.$w = q + }, + enablePinchToZoom: function() { + this.K.Hs = o + }, + disablePinchToZoom: function() { + this.K.Hs = q + }, + enableAutoResize: function() { + this.K.Gs = o; + this.to(); + this.R.Xl || (this.R.Xl = setInterval(this.to, 80)) + }, + disableAutoResize: function() { + this.K.Gs = q; + this.R.Xl && (clearInterval(this.R.Xl), this.R.Xl = p) + }, + Oo: function() { + this.K.Oo = o; + this.Ln || (this.Ln = new cb({ + $K: o + }), this.Wg(this.Ln)) + }, + fW: function() { + this.K.Oo = q; + this.Ln && (this.xh(this.Ln), this.Ln = p, delete this.Ln) + }, + Bb: function() { + return this.os && this.os instanceof N ? new N(this.os.width, this.os.height) : new N(this.Va.clientWidth, this.Va.clientHeight) + }, + ye: function(a) { + a && a instanceof N ? (this.os = a, this.Va.style.width = a.width + "px", this.Va.style.height = a.height + "px") : this.os = p + }, + Ka: u("gf"), + fa: u("Oa"), + wV: function() { + this.to() + }, + Wn: function(a) { + var b = this.K.gc, + c = this.K.$b, + d = q, + a = Math.round(a); + a < b && (d = o, a = b); + a > c && (d = o, a = c); + return { + zoom: a, + oD: d + } + }, + Na: u("Va"), + bc: function(a, b) { + b = b || this.fa(); + return this.xe.bc(a, b, this.mc, this.Bb(), this.Wb) + }, + wb: function(a, b) { + b = b || this.fa(); + return this.xe.wb(a, b, this.mc, this.Bb(), this.Wb) + }, + Te: function(a, b) { + if (a) { + var c = this.bc(new H(a.lng, a.lat), b); + c.x -= this.offsetX; + c.y -= this.offsetY; + return c + } + }, + oN: function(a, b) { + if (a) { + var c = new Q(a.x, a.y); + c.x += this.offsetX; + c.y += this.offsetY; + return this.wb(c, b) + } + }, + pointToPixelFor3D: function(a, b) { + var c = map.Wb; + this.Ib === Pa && c && db.oK(a, this, b) + }, + K3: function(a, b) { + var c = map.Wb; + this.Ib === Pa && c && db.nK(a, this, b) + }, + L3: function(a, b) { + var c = this, + d = map.Wb; + c.Ib === Pa && d && db.oK(a, c, + function(a) { + a.x -= c.offsetX; + a.y -= c.offsetY; + b && b(a) + }) + }, + I3: function(a, b) { + var c = map.Wb; + this.Ib === Pa && c && (a.x += this.offsetX, a.y += this.offsetY, db.nK(a, this, b)) + }, + Hd: function(a) { + if (!this.Lx()) return new eb; + var b = a || {}, + a = b.margins || [0, 0, 0, 0], + c = b.zoom || p, + b = this.wb({ + x: a[3], + y: this.height - a[2] + }, + c), + a = this.wb({ + x: this.width - a[1], + y: a[0] + }, + c); + return new eb(b, a) + }, + Lx: function() { + return !! this.loaded + }, + PR: function(a, b) { + for (var c = this.pa(), d = b.margins || [10, 10, 10, 10], e = b.zoomFactor || 0, f = d[1] + d[3], d = d[0] + d[2], g = c.Zo(), i = c = c.sm(); i >= g; i--) { + var k = this.pa().Bc(i); + if (a.KF().lng / k < this.width - f && a.KF().lat / k < this.height - d) break + } + i += e; + i < g && (i = g); + i > c && (i = c); + return i + }, + at: function(a, b) { + var c = { + center: this.Ka(), + zoom: this.fa() + }; + if (!a || !a instanceof eb && 0 === a.length || a instanceof eb && a.xj()) return c; + var d = []; + a instanceof eb ? (d.push(a.of()), d.push(a.se())) : d = a.slice(0); + for (var b = b || {}, + e = [], f = 0, g = d.length; f < g; f++) e.push(this.xe.Lm(d[f], this.Wb)); + d = new eb; + for (f = e.length - 1; 0 <= f; f--) d.extend(e[f]); + if (d.xj()) return c; + c = d.Ka(); + e = this.PR(d, b); + b.margins && (d = b.margins, f = (d[1] - d[3]) / 2, d = (d[0] - d[2]) / 2, g = this.pa().Bc(e), b.offset && (f = b.offset.width, d = b.offset.height), c.lng += g * f, c.lat += g * d); + c = this.xe.oh(c, this.Wb); + return { + center: c, + zoom: e + } + }, + Ah: function(a, b) { + var c; + c = a && a.center ? a: this.at(a, b); + var b = b || {}, + d = b.delay || 200; + if (c.zoom === this.Oa && b.enableAnimation !== q) { + var e = this; + setTimeout(function() { + e.ui(c.center, { + duration: 210 + }) + }, + d) + } else this.Dd(c.center, c.zoom) + }, + Rf: u("Vd"), + hh: function() { + return this.R.ob && this.R.ob.Wa() ? this.R.ob: p + }, + getDistance: function(a, b) { + if (a && b) { + if (a.nb(b)) return 0; + var c = 0, + c = R.Xo(a, b); + if (c === p || c === j) c = 0; + return c + } + }, + ux: function() { + var a = [], + b = this.wa, + c = this.Be; + if (b) for (var d in b) b[d] instanceof fb && a.push(b[d]); + if (c) { + d = 0; + for (b = c.length; d < b; d++) a.push(c[d]) + } + return a + }, + pa: u("Ib"), + qz: function() { + for (var a = this.R.$E; a < z.Dr.length; a++) z.Dr[a](this); + this.R.$E = a + }, + pF: function(a) { + this.Wb = Pa.sk(a); + this.Fw = Pa.lL(this.Wb); + this.Ib === Pa && this.xe instanceof gb && (this.xe.ej = this.Wb) + }, + setDefaultCursor: function(a) { + this.K.Xb = a; + this.platform && (this.platform.style.cursor = this.K.Xb) + }, + getDefaultCursor: function() { + return this.K.Xb + }, + setDraggingCursor: function(a) { + this.K.Fd = a + }, + getDraggingCursor: function() { + return this.K.Fd + }, + Gx: function() { + return this.K.vW && 1.5 <= this.K.devicePixelRatio + }, + rw: function(a, b) { + b ? this.Oh[b] || (this.Oh[b] = {}) : b = "custom"; + a.tag = b; + a instanceof hb && (this.Oh[b][a.ba] = a, a.ra(this)); + var c = this; + I.load("hotspot", + function() { + c.qz() + }, + o) + }, + oZ: function(a, b) { + b || (b = "custom"); + this.Oh[b][a.ba] && delete this.Oh[b][a.ba] + }, + cm: function(a) { + a || (a = "custom"); + this.Oh[a] = {} + }, + Uu: function() { + var a = this.Ib.Zo(), + b = this.Ib.sm(), + c = this.K; + c.gc = c.KO || a; + c.$b = c.JO || b; + c.gc < a && (c.gc = a); + c.$b > b && (c.$b = b) + }, + setMinZoom: function(a) { + a = Math.round(a); + a > this.K.$b && (a = this.K.$b); + this.K.KO = a; + this.rJ() + }, + setMaxZoom: function(a) { + a = Math.round(a); + a < this.K.gc && (a = this.K.gc); + this.K.JO = a; + this.rJ() + }, + rJ: function() { + this.Uu(); + var a = this.K; + this.Oa < a.gc ? this.Nc(a.gc) : this.Oa > a.$b && this.Nc(a.$b); + var b = new O("onzoomspanchange"); + b.gc = a.gc; + b.$b = a.$b; + this.dispatchEvent(b) + }, + U2: u("KB"), + getKey: function() { + return qa + }, + St: function(a) { + var b = this; + window.MPC_Mgr && window.MPC_Mgr[b.ba] && window.MPC_Mgr[b.ba].close(); + b.K.lj = q; + z.Dn("cus.fire", "count", "z_setmapstylecount"); + if (a) { + b = this; + a.styleJson && (a.styleStr = b.s_(a.styleJson)); + G() && x.da.hF ? setTimeout(function() { + b.K.ue = a; + b.dispatchEvent(new O("onsetcustomstyles", a)) + }, + 50) : (this.K.ue = a, this.dispatchEvent(new O("onsetcustomstyles", a)), this.ZL(b.K.ue.geotableId)); + var c = { + style: a.style + }; + a.features && 0 < a.features.length && (c.features = o); + a.styleJson && 0 < a.styleJson.length && (c.styleJson = o); + Ra(5050, c); + a.style && (c = b.K.em[a.style] ? b.K.em[a.style].backColor: b.K.em.normal.backColor) && (this.Na().style.backgroundColor = c) + } + }, + dY: function(a) { + this.controls || (this.controls = { + navigationControl: new ib, + scaleControl: new jb, + overviewMapControl: new kb, + mapTypeControl: new lb + }); + var b = this, + c; + for (c in this.controls) b.AN(b.controls[c]); + a = a || []; + x.kc.Gb(a, + function(a) { + b.ow(b.controls[a]) + }) + }, + ZL: function(a) { + a ? this.ls && this.ls.Af === a || (this.xh(this.ls), this.ls = new mb({ + geotableId: a + }), this.Wg(this.ls)) : this.xh(this.ls) + }, + Vb: function() { + var a = this.fa() >= this.K.SF && this.pa() === Ma && 18 >= this.fa(), + b = q; + try { + document.createElement("canvas").getContext("2d"), + b = o + } catch(c) { + b = q + } + return a && b + }, + getCurrentCity: function() { + return { + name: this.Yg, + code: this.$r + } + }, + tm: function() { + this.P.ao(); + return this.P + }, + setPanorama: function(a) { + this.P = a; + this.P.sF(this) + }, + s_: function(a) { + for (var b = { + featureType: "t", + elementType: "e", + visibility: "v", + color: "c", + lightness: "l", + saturation: "s", + weight: "w", + zoom: "z", + hue: "h" + }, + c = { + all: "all", + geometry: "g", + "geometry.fill": "g.f", + "geometry.stroke": "g.s", + labels: "l", + "labels.text.fill": "l.t.f", + "labels.text.stroke": "l.t.s", + "lables.text": "l.t", + "labels.icon": "l.i" + }, + d = [], e = 0, f; f = a[e]; e++) { + var g = f.stylers; + delete f.stylers; + x.extend(f, g); + var g = [], + i; + for (i in b) if (f[i]) if ("elementType" === i) g.push(b[i] + ":" + c[f[i]]); + else { + switch (f[i]) { + case "poilabel": + f[i] = "poi"; + break; + case "districtlabel": + f[i] = "label" + } + g.push(b[i] + ":" + f[i]) + } + 2 < g.length && d.push(g.join("|")) + } + return d.join(",") + } + }); + function Ra(a, b) { + if (a) { + var b = b || {}, + c = "", + d; + for (d in b) c = c + "&" + d + "=" + encodeURIComponent(b[d]); + var e = function(a) { + a && (nb = o, setTimeout(function() { + ob.src = z.wc + "images/blank.gif?" + a.src + }, + 50)) + }, + f = function() { + var a = pb.shift(); + a && e(a) + }; + d = (1E8 * Math.random()).toFixed(0); + nb ? pb.push({ + src: "product=jsapi&sub_product=jsapi&v=" + z.version + "&sub_product_v=" + z.version + "&t=" + d + "&code=" + a + "&da_src=" + a + c + }) : e({ + src: "product=jsapi&sub_product=jsapi&v=" + z.version + "&sub_product_v=" + z.version + "&t=" + d + "&code=" + a + "&da_src=" + a + c + }); + qb || (x.M(ob, "load", + function() { + nb = q; + f() + }), x.M(ob, "error", + function() { + nb = q; + f() + }), qb = o) + } + } + var nb, qb, pb = [], + ob = new Image; + Ra(5E3, { + device_pixel_ratio: window.devicePixelRatio, + platform: navigator.platform + }); + z.TL = { + TILE_BASE_URLS: ["gss0.bdstatic.com/5bwHcj7lABFU8t_jkk_Z1zRvfdw6buu", "gss0.bdstatic.com/5bwHcj7lABFV8t_jkk_Z1zRvfdw6buu", "gss0.bdstatic.com/5bwHcj7lABFS8t_jkk_Z1zRvfdw6buu", "gss0.bdstatic.com/5bwHcj7lABFT8t_jkk_Z1zRvfdw6buu", "gss0.bdstatic.com/5bwHcj7lABFY8t_jkk_Z1zRvfdw6buu"], + TILE_ONLINE_URLS: ["gss0.bdstatic.com/8bo_dTSlR1gBo1vgoIiO_jowehsv", "gss0.bdstatic.com/8bo_dTSlRMgBo1vgoIiO_jowehsv", "gss0.bdstatic.com/8bo_dTSlRcgBo1vgoIiO_jowehsv", "gss0.bdstatic.com/8bo_dTSlRsgBo1vgoIiO_jowehsv", "gss0.bdstatic.com/8bo_dTSlQ1gBo1vgoIiO_jowehsv"], + TIlE_PERSPECT_URLS: ["gss0.bdstatic.com/-OR1cTe9KgQFm2e88IuM_a", "gss0.bdstatic.com/-ON1cTe9KgQFm2e88IuM_a", "gss0.bdstatic.com/-OZ1cTe9KgQFm2e88IuM_a", "gss0.bdstatic.com/-OV1cTe9KgQFm2e88IuM_a"], + geolocControl: "gsp0.baidu.com/8LkJsjOpB1gCo2Kml5_Y_D3", + TILES_YUN_HOST: ["gsp0.baidu.com/-eR1bSahKgkFkRGko9WTAnF6hhy", "gsp0.baidu.com/-eN1bSahKgkFkRGko9WTAnF6hhy", "gsp0.baidu.com/-eZ1bSahKgkFkRGko9WTAnF6hhy", "gsp0.baidu.com/-eV1bSahKgkFkRGko9WTAnF6hhy"], + traffic: "gsp0.baidu.com/7_AZsjOpB1gCo2Kml5_Y_DAcsMJiwa", + iw_pano: "gss0.bdstatic.com/5LUZemba_QUU8t7mm9GUKT-xh_", + message: "gsp0.baidu.com/7vo0bSba2gU2pMbgoY3K", + baidumap: "gsp0.baidu.com/80MWsjip0QIZ8tyhnq", + wuxian: "gsp0.baidu.com/6a1OdTeaKgQFm2e88IuM_a", + pano: ["gss0.bdstatic.com/5LUZemba_QUU8t7mm9GUKT-xh_", "gss0.bdstatic.com/5LUZemfa_QUU8t7mm9GUKT-xh_", "gss0.bdstatic.com/5LUZemja_QUU8t7mm9GUKT-xh_"], + main_domain_nocdn: { + baidu: "gsp0.baidu.com/9_Q4sjOpB1gCo2Kml5_Y_D3", + other: "api.map.baidu.com" + }, + main_domain_cdn: { + baidu: ["gss0.bdstatic.com/9_Q4vHSd2RZ3otebn9fN2DJv", "gss0.baidu.com/9_Q4vXSd2RZ3otebn9fN2DJv", "gss0.bdstatic.com/9_Q4vnSd2RZ3otebn9fN2DJv"], + other: ["api.map.baidu.com"], + webmap: ["gss0.baidu.com/6b1IcTe9R1gBo1vgoIiO_jowehsv"] + }, + map_click: "gsp0.baidu.com/80MWbzKh2wt3n2qy8IqW0jdnxx1xbK", + vector_traffic: "gss0.bdstatic.com/8aZ1cTe9KgQIm2_p8IuM_a" + }; + z.YX = { + TILE_BASE_URLS: ["shangetu0.map.bdimg.com", "shangetu1.map.bdimg.com", "shangetu2.map.bdimg.com", "shangetu3.map.bdimg.com", "shangetu4.map.bdimg.com"], + TILE_ONLINE_URLS: ["online0.map.bdimg.com", "online1.map.bdimg.com", "online2.map.bdimg.com", "online3.map.bdimg.com", "online4.map.bdimg.com"], + TIlE_PERSPECT_URLS: ["d0.map.baidu.com", "d1.map.baidu.com", "d2.map.baidu.com", "d3.map.baidu.com"], + geolocControl: "loc.map.baidu.com", + TILES_YUN_HOST: ["g0.api.map.baidu.com", "g1.api.map.baidu.com", "g2.api.map.baidu.com", "g3.api.map.baidu.com"], + traffic: "its.map.baidu.com:8002", + iw_pano: "pcsv0.map.bdimg.com", + message: "j.map.baidu.com", + baidumap: "map.baidu.com", + wuxian: "wuxian.baidu.com", + pano: ["pcsv0.map.bdimg.com", "pcsv1.map.bdimg.com", "pcsv2.map.bdimg.com"], + main_domain_nocdn: { + baidu: "api.map.baidu.com" + }, + main_domain_cdn: { + baidu: ["api0.map.bdimg.com", "api1.map.bdimg.com", "api2.map.bdimg.com"], + webmap: ["webmap0.map.bdimg.com"] + }, + map_click: "mapclick.map.baidu.com", + vector_traffic: "or.map.bdimg.com" + }; + z.V_ = { + "0": { + proto: "http://", + domain: z.YX + }, + 1 : { + proto: "https://", + domain: z.TL + }, + 2 : { + proto: "https://", + domain: z.TL + } + }; + z.Oy = window.HOST_TYPE || "0"; + z.url = z.V_[z.Oy]; + z.up = z.url.proto + z.url.domain.baidumap + "/"; + z.wc = z.url.proto + ("2" == z.Oy ? z.url.domain.main_domain_nocdn.other: z.url.domain.main_domain_nocdn.baidu) + "/"; + z.ma = z.url.proto + ("2" == z.Oy ? z.url.domain.main_domain_cdn.other[0] : z.url.domain.main_domain_cdn.baidu[0]) + "/"; + z.cj = z.url.proto + z.url.domain.main_domain_cdn.webmap[0] + "/"; + z.cj =""; + z.sg = function(a, b) { + var c, d, b = b || ""; + switch (a) { + case "main_domain_nocdn": + c = z.wc + b; + break; + case "main_domain_cdn": + c = z.ma + b; + break; + default: + d = z.url.domain[a], + "[object Array]" == Object.prototype.toString.call(d) ? (c = [], x.kc.Gb(d, + function(a, d) { + c[d] = z.url.proto + a + "/" + b + })) : c = z.url.proto + z.url.domain[a] + "/" + b + } + return c + }; + function rb(a) { + var b = { + duration: 1E3, + Gc: 30, + Ko: 0, + jc: sb.yM, + Dt: s() + }; + this.Zf = []; + if (a) for (var c in a) b[c] = a[c]; + this.k = b; + if (Xa(b.Ko)) { + var d = this; + setTimeout(function() { + d.start() + }, + b.Ko) + } else b.Ko != tb && this.start() + } + var tb = "INFINITE"; + rb.prototype.start = function() { + this.Mu = ab(); + this.Wz = this.Mu + this.k.duration; + ub(this) + }; + rb.prototype.add = function(a) { + this.Zf.push(a) + }; + function ub(a) { + var b = ab(); + b >= a.Wz ? (Ya(a.k.va) && a.k.va(a.k.jc(1)), Ya(a.k.finish) && a.k.finish(), 0 < a.Zf.length && (b = a.Zf[0], b.Zf = [].concat(a.Zf.slice(1)), b.start())) : (a.vy = a.k.jc((b - a.Mu) / a.k.duration), Ya(a.k.va) && a.k.va(a.vy), a.EF || (a.Ur = setTimeout(function() { + ub(a) + }, + 1E3 / a.k.Gc))) + } + rb.prototype.stop = function(a) { + this.EF = o; + for (var b = 0; b < this.Zf.length; b++) this.Zf[b].stop(), + this.Zf[b] = p; + this.Zf.length = 0; + this.Ur && (clearTimeout(this.Ur), this.Ur = p); + this.k.Dt(this.vy); + a && (this.Wz = this.Mu, ub(this)) + }; + rb.prototype.cancel = ha(1); + var sb = { + yM: function(a) { + return a + }, + reverse: function(a) { + return 1 - a + }, + aD: function(a) { + return a * a + }, + $C: function(a) { + return Math.pow(a, 3) + }, + Es: function(a) { + return - (a * (a - 2)) + }, + PK: function(a) { + return Math.pow(a - 1, 3) + 1 + }, + OK: function(a) { + return 0.5 > a ? 2 * a * a: -2 * (a - 2) * a - 1 + }, + W1: function(a) { + return 0.5 > a ? 4 * Math.pow(a, 3) : 4 * Math.pow(a - 1, 3) + 1 + }, + X1: function(a) { + return (1 - Math.cos(Math.PI * a)) / 2 + } + }; + sb["ease-in"] = sb.aD; + sb["ease-out"] = sb.Es; + var E = { + $F: 34, + aG: 21, + bG: new N(21, 32), + aP: new N(10, 32), + $O: new N(24, 36), + ZO: new N(12, 36), + YF: new N(13, 1), + qa: z.ma + "images/", + d3: "http://api0.map.bdimg.com/images/", + ZF: z.ma + "images/markers_new.png", + XO: 24, + YO: 73, + fC: { + "\u5317\u4eac": { + ky: "bj", + m: new H(116.403874, 39.914889) + }, + "\u4e0a\u6d77": { + ky: "sh", + m: new H(121.487899, 31.249162) + }, + "\u6df1\u5733": { + ky: "sz", + m: new H(114.025974, 22.546054) + }, + "\u5e7f\u5dde": { + ky: "gz", + m: new H(113.30765, 23.120049) + } + }, + fontFamily: "arial,sans-serif" + }; + x.da.nf ? (x.extend(E, { + DK: "url(" + E.qa + "ruler.cur),crosshair", + Xb: "-moz-grab", + Fd: "-moz-grabbing" + }), x.platform.mM && (E.fontFamily = "arial,simsun,sans-serif")) : x.da.dC || x.da.hF ? x.extend(E, { + DK: "url(" + E.qa + "ruler.cur) 2 6,crosshair", + Xb: "url(" + E.qa + "openhand.cur) 8 8,default", + Fd: "url(" + E.qa + "closedhand.cur) 8 8,move" + }) : x.extend(E, { + DK: "url(" + E.qa + "ruler.cur),crosshair", + Xb: "url(" + E.qa + "openhand.cur),default", + Fd: "url(" + E.qa + "closedhand.cur),move" + }); + function vb(a, b) { + var c = a.style; + c.left = b[0] + "px"; + c.top = b[1] + "px" + } + function wb(a) { + 0 < x.da.la ? a.unselectable = "on": a.style.MozUserSelect = "none" + } + function xb(a) { + return a && a.parentNode && 11 !== a.parentNode.nodeType + } + function yb(a, b) { + x.D.Jx(a, "beforeEnd", b); + return a.lastChild + } + function zb(a) { + for (var b = { + left: 0, + top: 0 + }; a && a.offsetParent;) b.left += a.offsetLeft, + b.top += a.offsetTop, + a = a.offsetParent; + return b + } + function na(a) { + a = window.event || a; + a.stopPropagation ? a.stopPropagation() : a.cancelBubble = o + } + function Ab(a) { + a = window.event || a; + a.preventDefault ? a.preventDefault() : a.returnValue = q; + return q + } + function oa(a) { + na(a); + return Ab(a) + } + function Bb() { + var a = document.documentElement, + b = document.body; + return a && (a.scrollTop || a.scrollLeft) ? [a.scrollTop, a.scrollLeft] : b ? [b.scrollTop, b.scrollLeft] : [0, 0] + } + function Cb(a, b) { + if (a && b) return Math.round(Math.sqrt(Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2))) + } + function Db(a, b) { + var c = [], + b = b || + function(a) { + return a + }, + d; + for (d in a) c.push(d + "=" + b(a[d])); + return c.join("&") + } + function M(a, b, c) { + var d = document.createElement(a); + c && (d = document.createElementNS(c, a)); + return x.D.oF(d, b || {}) + } + function Wa(a) { + if (a.currentStyle) return a.currentStyle; + if (a.ownerDocument && a.ownerDocument.defaultView) return a.ownerDocument.defaultView.getComputedStyle(a, p) + } + function Ya(a) { + return "function" === typeof a + } + function Xa(a) { + return "number" === typeof a + } + function $a(a) { + return "string" == typeof a + } + function Eb(a) { + return "undefined" != typeof a + } + function Gb(a) { + return "object" == typeof a + } + var Hb = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + function Ib(a) { + var b = "", + c, d, e = "", + f, g = "", + i = 0; + f = /[^A-Za-z0-9\+\/\=]/g; + if (!a || f.exec(a)) return a; + a = a.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + do c = Hb.indexOf(a.charAt(i++)), + d = Hb.indexOf(a.charAt(i++)), + f = Hb.indexOf(a.charAt(i++)), + g = Hb.indexOf(a.charAt(i++)), + c = c << 2 | d >> 4, + d = (d & 15) << 4 | f >> 2, + e = (f & 3) << 6 | g, + b += String.fromCharCode(c), + 64 != f && (b += String.fromCharCode(d)), + 64 != g && (b += String.fromCharCode(e)); + while (i < a.length); + return b + } + var O = x.lang.Yy; + function G() { + return ! (!x.platform.nE && !x.platform.oY && !x.platform.Im) + } + function Va() { + return ! (!x.platform.mM && !x.platform.eM && !x.platform.uY) + } + function ab() { + return (new Date).getTime() + } + function Jb() { + var a = document.body.appendChild(M("div")); + a.innerHTML = ''; + var b = a.firstChild; + if (!b.style) return q; + b.style.behavior = "url(#default#VML)"; + b = b ? "object" === typeof b.adj: o; + a.parentNode.removeChild(a); + return b + } + function Kb() { + return !! document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Shape", "1.1") + } + function Nb() { + return !! M("canvas").getContext + } + function Ob(a) { + return a * Math.PI / 180 + } + z.BY = function() { + var a = o, + b = o, + c = o, + d = o, + e = 0, + f = 0, + g = 0, + i = 0; + return { + IQ: function() { + e += 1; + a && (a = q, setTimeout(function() { + Ra(5054, { + pic: e + }); + a = o; + e = 0 + }, + 1E4)) + }, + H0: function() { + f += 1; + b && (b = q, setTimeout(function() { + Ra(5055, { + move: f + }); + b = o; + f = 0 + }, + 1E4)) + }, + J0: function() { + g += 1; + c && (c = q, setTimeout(function() { + Ra(5056, { + zoom: g + }); + c = o; + g = 0 + }, + 1E4)) + }, + I0: function(a) { + i += a; + d && (d = q, setTimeout(function() { + Ra(5057, { + tile: i + }); + d = o; + i = 0 + }, + 5E3)) + } + } + } (); + z.gq = { + nG: "#83a1ff", + iq: "#808080" + }; + function Pb(a, b, c) { + b.Om || (b.Om = [], b.handle = {}); + b.Om.push({ + filter: c, + nm: a + }); + b.addEventListener || (b.addEventListener = function(a, c) { + b.attachEvent("on" + a, c) + }); + b.handle.click || (b.addEventListener("click", + function(a) { + for (var c = a.target || a.srcElement; c != b;) { + Qb(b.Om, + function(b, g) { + RegExp(g.filter).test(c.getAttribute("filter")) && g.nm.call(c, a, c.getAttribute("filter")) + }); + c = c.parentNode + } + }, + q), b.handle.click = o) + } + function Qb(a, b) { + for (var c = 0, + d = a.length; c < d; c++) b(c, a[c]) + } + void + function(a, b, c) { + void + function(a, b, c) { + function g(a) { + if (!a.Jo) { + for (var c = o, + d = [], f = a.sZ, i = 0; f && i < f.length; i++) { + var k = f[i], + l = ea[k] = ea[k] || {}; + if (l.Jo || l == a) d.push(l.Kc); + else { + c = q; + if (!l.ZV && (k = (Ea.get("alias") || {})[k] || k + ".js", !J[k])) { + J[k] = o; + var m = b.createElement("script"), + n = b.getElementsByTagName("script")[0]; + m.async = o; + m.src = k; + n.parentNode.insertBefore(m, n) + } + l.Py = l.Py || {}; + l.Py[a.name] = a + } + } + if (c) { + a.Jo = o; + a.vK && (a.Kc = a.vK.apply(a, d)); + for (var t in a.Py) g(a.Py[t]) + } + } + } + function i(a) { + return (a || new Date) - D + } + function k(a, b, c) { + if (a) { + "string" == typeof a && (c = b, b = a, a = L); + try { + a == L ? (K[b] = K[b] || [], K[b].unshift(c)) : a.addEventListener ? a.addEventListener(b, c, q) : a.attachEvent && a.attachEvent("on" + b, c) + } catch(d) {} + } + } + function l(a, b, c) { + if (a) { + "string" == typeof a && (c = b, b = a, a = L); + try { + if (a == L) { + var d = K[b]; + if (d) for (var e = d.length; e--;) d[e] === c && d.splice(e, 1) + } else a.removeEventListener ? a.removeEventListener(b, c, q) : a.detachEvent && a.detachEvent("on" + b, c) + } catch(f) {} + } + } + function m(a) { + var b = K[a], + c = 0; + if (b) { + for (var d = [], e = arguments, f = 1; f < e.length; f++) d.push(e[f]); + for (f = b.length; f--;) b[f].apply(this, d) && c++; + return c + } + } + function n(a, b) { + if (a && b) { + var c = new Image(1, 1), + d = [], + e = "img_" + +new Date, + f; + for (f in b) b[f] && d.push(f + "=" + encodeURIComponent(b[f])); + L[e] = c; + c.onload = c.onerror = function() { + L[e] = c = c.onload = c.onerror = p; + delete L[e] + }; + c.src = a + "?" + d.join("&") + } + } + function t() { + var a = arguments, + b = a[0]; + if (this.uK || /^(on|un|set|get|create)$/.test(b)) { + for (var b = w.prototype[b], c = [], d = 1, e = a.length; d < e; d++) c.push(a[d]); + "function" == typeof b && b.apply(this, c) + } else this.UJ.push(a) + } + function v(a, b) { + var c = {}, + d; + for (d in a) a.hasOwnProperty(d) && (c[d] = a[d]); + for (d in b) b.hasOwnProperty(d) && (c[d] = b[d]); + return c + } + function w(a) { + this.name = a; + this.Ks = { + protocolParameter: { + postUrl: p, + protocolParameter: p + } + }; + this.UJ = []; + this.alog = L + } + function y(a) { + a = a || "default"; + if ("*" == a) { + var a = [], + b; + for (b in W) a.push(W[b]); + return a + } (b = W[a]) || (b = W[a] = new w(a)); + return b + } + var C = c.alog; + if (!C || !C.Jo) { + var A = b.all && a.attachEvent, + D = C && C.wE || +new Date, + B = a.p3 || ( + new Date).toString(36) + Math.random().toString(36).substr(2, 3), + F = 0, + J = {}, + L = function(a) { + var b = arguments, + c, d, e, f; + if ("define" == a || "require" == a) { + for (d = 1; d < b.length; d++) switch (typeof b[d]) { + case "string": + c = b[d]; + break; + case "object": + e = b[d]; + break; + case "function": + f = b[d] + } + "require" == a && (c && !e && (e = [c]), c = p); + c = !c ? "#" + F++:c; + d = ea[c] = ea[c] || {}; + d.Jo || (d.name = c, d.sZ = e, d.vK = f, "define" == a && (d.ZV = o), g(d)) + } else "function" == typeof a ? a(L) : ("" + a).replace(/^(?:([\w$_]+)\.)?(\w+)$/, + function(a, c, d) { + b[0] = d; + t.apply(L.NF(c), b) + }) + }, + K = {}, + W = {}, + ea = { + q1: { + name: "alog", + Jo: o, + Kc: L + } + }; + w.prototype.start = w.prototype.create = function(a) { + if (!this.uK) { + "object" == typeof a && this.set(a); + this.uK = new Date; + for (this.Ls("create", this); a = this.UJ.shift();) t.apply(this, a) + } + }; + w.prototype.send = function(a, b) { + var c = v({ + ts: i().toString(36), + t: a, + sid: B + }, + this.Ks); + if ("object" == typeof b) c = v(c, b); + else { + var d = arguments; + switch (a) { + case "pageview": + d[1] && (c.page = d[1]); + d[2] && (c.title = d[2]); + break; + case "event": + d[1] && (c.eventCategory = d[1]); + d[2] && (c.eventAction = d[2]); + d[3] && (c.eventLabel = d[3]); + d[4] && (c.eventValue = d[4]); + break; + case "timing": + d[1] && (c.timingCategory = d[1]); + d[2] && (c.timingVar = d[2]); + d[3] && (c.timingValue = d[3]); + d[4] && (c.timingLabel = d[4]); + break; + case "exception": + d[1] && (c.exDescription = d[1]); + d[2] && (c.exFatal = d[2]); + break; + default: + return + } + } + this.Ls("send", c); + var e; + if (d = this.Ks.protocolParameter) { + var f = {}; + for (e in c) d[e] !== p && (f[d[e] || e] = c[e]); + e = f + } else e = c; + n(this.Ks.postUrl, e) + }; + w.prototype.set = function(a, b) { + if ("string" == typeof a)"protocolParameter" == a && (b = v({ + postUrl: p, + protocolParameter: p + }, + b)), + this.Ks[a] = b; + else if ("object" == typeof a) for (var c in a) this.set(c, a[c]) + }; + w.prototype.get = function(a, b) { + var c = this.Ks[a]; + "function" == typeof b && b(c); + return c + }; + w.prototype.Ls = function(a, b) { + return L.Ls(this.name + "." + a, b) + }; + w.prototype.M = function(a, b) { + L.M(this.name + "." + a, b) + }; + w.prototype.bd = function(a, b) { + L.bd(this.name + "." + a, b) + }; + L.name = "alog"; + L.cO = B; + L.Jo = o; + L.timestamp = i; + L.bd = l; + L.M = k; + L.Ls = m; + L.NF = y; + L("init"); + var fa = w.prototype; + S(fa, { + start: fa.start, + create: fa.create, + send: fa.send, + set: fa.set, + get: fa.get, + on: fa.M, + un: fa.bd, + fire: fa.Ls + }); + var Ea = y(); + Ea.set("protocolParameter", { + p1: p + }); + if (C) { + fa = [].concat(C.ub || [], C.Ym || []); + C.ub = C.Ym = p; + for (var Ua in L) L.hasOwnProperty(Ua) && (C[Ua] = L[Ua]); + L.ub = L.Ym = { + push: function(a) { + L.apply(L, a) + } + }; + for (C = 0; C < fa.length; C++) L.apply(L, fa[C]) + } + c.alog = L; + A && k(b, "mouseup", + function(a) { + a = a.target || a.srcElement; + 1 == a.nodeType && /^ajavascript:/i.test(a.tagName + a.href) + }); + var Qa = q; + a.onerror = function(a, b, d, e) { + var g = o; ! b && /^script error/i.test(a) && (Qa ? g = q: Qa = o); + g && c.alog("exception.send", "exception", { + At: a, + vE: b, + wt: d, + bs: e + }); + return q + }; + c.alog("exception.on", "catch", + function(a) { + c.alog("exception.send", "exception", { + At: a.At, + vE: a.path, + wt: a.wt, + method: a.method, + bL: "catch" + }) + }) + } + } (a, b, c); + void + function(a, b, c) { + var g = "18_1"; + G() && (g = "18_2"); + var i = "http://static.tieba.baidu.com"; + "https:" === a.location.protocol && (i = "https://gsp0.baidu.com/5aAHeD3nKhI2p27j8IqW0jdnxx1xbK"); + var k = Math.random, + i = i + "/tb/pms/img/st.gif", + l = { + yh: "0.1" + }, + m = { + yh: "0.1" + }, + n = { + yh: "0.1" + }, + t = { + yh: "0" + }; + if (l && l.yh && k() < l.yh) { + var v = c.alog.NF("monkey"), + w, + l = a.screen, + y = b.referrer; + v.set("ver", 5); + v.set("pid", 241); + l && v.set("px", l.width + "*" + l.height); + v.set("ref", y); + c.alog("monkey.on", "create", + function() { + w = c.alog.timestamp; + v.set("protocolParameter", { + reports: p + }) + }); + c.alog("monkey.on", "send", + function(a) { + "pageview" == a.t && (a.cmd = "open"); + a.now && (a.ts = w(a.now).toString(36), a.now = "") + }); + c.alog("monkey.create", { + page: g, + pid: "241", + p: "18", + dv: 6, + postUrl: i, + reports: { + refer: 1 + } + }); + c.alog("monkey.send", "pageview", { + now: +new Date + }) + } + if (m && m.yh && k() < m.yh) { + var C = q; + a.onerror = function(a, b, d, e) { + var g = o; ! b && /^script error/i.test(a) && (C ? g = q: C = o); + g && c.alog("exception.send", "exception", { + At: a, + vE: b, + wt: d, + bs: e + }); + return q + }; + c.alog("exception.on", "catch", + function(a) { + c.alog("exception.send", "exception", { + At: a.At, + vE: a.path, + wt: a.wt, + method: a.method, + bL: "catch" + }) + }); + c.alog("exception.create", { + postUrl: i, + dv: 7, + page: g, + pid: "170", + p: "18" + }) + } + n && (n.yh && k() < n.yh) && (c.alog("cus.on", "time", + function(a) { + var b = {}, + d = q, + e; + if ("[object Object]" === a.toString()) { + for (var g in a)"page" == g ? b.page = a[g] : (e = parseInt(a[g]), 0 < e && /^z_/.test(g) && (d = o, b[g] = e)); + d && c.alog("cus.send", "time", b) + } + }), c.alog("cus.on", "count", + function(a) { + var b = {}, + d = q; + "string" === typeof a && (a = [a]); + if (a instanceof Array) for (var e = 0; e < a.length; e++) / ^z_ / .test(a[e]) ? (d = o, b[a[e]] = 1) : /^page:/.test(a[e]) && (b.page = a[e].substring(5)); + d && c.alog("cus.send", "count", b) + }), c.alog("cus.create", { + dv: 3, + postUrl: i, + page: g, + p: "18" + })); + if (t && t.yh && k() < t.yh) { + var A = ["Moz", "O", "ms", "Webkit"], + D = ["-webkit-", "-moz-", "-o-", "-ms-"], + B = function() { + return typeof b.createElement !== "function" ? b.createElement(arguments[0]) : b.createElement.apply(b, arguments) + }, + F = B("dpFeatureTest").style, + J = function(a) { + return L(a, j, j) + }, + L = function(a, b, c) { + var d = a.charAt(0).toUpperCase() + a.slice(1), + e = (a + " " + A.join(d + " ") + d).split(" "); + if (typeof b === "string" || typeof b === "undefined") return K(e, b); + e = (a + " " + A.join(d + " ") + d).split(" "); + a: { + var a = e, + f; + for (f in a) if (a[f] in b) { + if (c === q) { + b = a[f]; + break a + } + f = b[a[f]]; + b = typeof f === "function" ? fnBind(f, c || b) : f; + break a + } + b = q + } + return b + }, + K = function(a, b) { + var c, d, e; + d = a.length; + for (c = 0; c < d; c++) { + e = a[c];~ ("" + e).indexOf("-") && (e = W(e)); + if (F[e] !== j) return b == "pfx" ? e: o + } + return q + }, + W = function(a) { + return a.replace(/([a-z])-([a-z])/g, + function(a, b, c) { + return b + c.toUpperCase() + }).replace(/^-/, "") + }, + ea = function(a, b, c) { + if (a.indexOf("@") === 0) return atRule(a); + a.indexOf("-") != -1 && (a = W(a)); + return ! b ? L(a, "pfx") : L(a, b, c) + }, + fa = function() { + var a = B("canvas"); + return ! (!a.getContext || !a.getContext("2d")) + }, + Ea = function() { + var a = B("div"); + return "draggable" in a || "ondragstart" in a && "ondrop" in a + }, + Ua = function() { + try { + localStorage.setItem("localStorage", "localStorage"); + localStorage.removeItem("localStorage"); + return o + } catch(a) { + return q + } + }, + Qa = function() { + return "content" in b.createElement("template") + }, + Aa = function() { + return "createShadowRoot" in b.createElement("a") + }, + mc = function() { + return "registerElement" in b + }, + qe = function() { + return "import" in b.createElement("link") + }, + nf = function() { + return "getItems" in b + }, + fd = function() { + return "EventSource" in window + }, + Lb = function(a, b) { + var c = new Image; + c.onload = function() { + b(a, c.width > 0 && c.height > 0) + }; + c.onerror = function() { + b(a, q) + }; + c.src = "data:image/webp;base64," + { + s3: "UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA", + r3: "UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==", + alpha: "UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAARBxAR/Q9ERP8DAABWUDggGAAAABQBAJ0BKgEAAQAAAP4AAA3AAP7mtQAAAA==", + jk: "UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA" + } [a] + }, + nc = function(a, b) { + return Mb.ii["WebP-" + a] = b + }, + re = function() { + return "openDatabase" in a + }, + se = function() { + return "performance" in a && "timing" in a.performance + }, + Nc = function() { + return "performance" in a && "mark" in a.performance + }, + gd = function() { + return ! (!Array.prototype || !Array.prototype.every || !Array.prototype.filter || !Array.prototype.forEach || !Array.prototype.indexOf || !Array.prototype.lastIndexOf || !Array.prototype.map || !Array.prototype.some || !Array.prototype.reduce || !Array.prototype.reduceRight || !Array.isArray) + }, + te = function() { + return "Promise" in a && "cast" in a.jq && "resolve" in a.jq && "reject" in a.jq && "all" in a.jq && "race" in a.jq && + function() { + var b; + new a.jq(function(a) { + b = a + }); + return typeof b === "function" + } () + }, + hd = function() { + var b = !!a.u0, + c = a.XMLHttpRequest && "withCredentials" in new XMLHttpRequest; + return !! a.x0 && b && c + }, + of = function() { + return "geolocation" in navigator + }, + ue = function() { + var b = B("canvas"), + c = "probablySupportsContext" in b ? "probablySupportsContext": "supportsContext"; + return c in b ? b[c]("webgl") || b[c]("experimental-webgl") : "WebGLRenderingContext" in a + }, + gi = function() { + return !! b.createElementNS && !!b.createElementNS("http://www.w3.org/2000/svg", "svg").I1 + }, + hi = function() { + return !! a.E0 + }, + ii = function() { + return "WebSocket" in a && a.B0.r0 === 2 + }, + ji = function() { + return !! b.createElement("video").canPlayType + }, + ki = function() { + return !! b.createElement("audio").canPlayType + }, + li = function() { + return !! (a.history && "pushState" in a.history) + }, + mi = function() { + return ! (!a.s0 || !a.t0) + }, + ni = function() { + return "postMessage" in window + }, + oi = function() { + return !! a.webkitNotifications || "Notification" in a && "permission" in a.tP && "requestPermission" in a.tP + }, + pi = function() { + for (var b = ["webkit", "moz", "o", "ms"], c = a.requestAnimationFrame, e = 0; e < b.length && !c; ++e) c = a[b[e] + "RequestAnimationFrame"]; + return !! c + }, + qi = function() { + return "JSON" in a && "parse" in JSON && "stringify" in JSON + }, + ri = function() { + return ! (!ea("exitFullscreen", b, q) && !ea("cancelFullScreen", b, q)) + }, + si = function() { + return !! ea("Intl", a) + }, + ti = function() { + return J("flexBasis") + }, + ui = function() { + return !! J("perspective") + }, + vi = function() { + return J("shapeOutside") + }, + wi = function() { + var a = B("div"); + a.style.cssText = D.join("filter:blur(2px); "); + return !! a.style.length && (b.documentMode === j || b.documentMode > 9) + }, + xi = function() { + return "XMLHttpRequest" in a && "withCredentials" in new XMLHttpRequest + }, + yi = function() { + return B("progress").max !== j + }, + zi = function() { + return B("meter").max !== j + }, + Ai = function() { + return "sendBeacon" in navigator + }, + Bi = function() { + return J("borderRadius") + }, + Ci = function() { + return J("boxShadow") + }, + Di = function() { + var a = B("div").style; + a.cssText = D.join("opacity:.55;"); + return /^0.55$/.test(a.opacity) + }, + Ei = function() { + return K(["textShadow"], j) + }, + Fi = function() { + return J("animationName") + }, + Gi = function() { + return J("transition") + }, + Hi = function() { + return navigator.userAgent.indexOf("Android 2.") === -1 && J("transform") + }, + Mb = { + ii: {}, + oa: function(a, b, c) { + this.ii[a] = b.apply(this, [].slice.call(arguments, 2)) + }, + Cd: function(a, b) { + a.apply(this, [].slice.call(arguments, 1)) + }, + zZ: function() { + this.oa("bdrs", Bi); + this.oa("bxsd", Ci); + this.oa("opat", Di); + this.oa("txsd", Ei); + this.oa("anim", Fi); + this.oa("trsi", Gi); + this.oa("trfm", Hi); + this.oa("flex", ti); + this.oa("3dtr", ui); + this.oa("shpe", vi); + this.oa("fltr", wi); + this.oa("cavs", fa); + this.oa("dgdp", Ea); + this.oa("locs", Ua); + this.oa("wctem", Qa); + this.oa("wcsdd", Aa); + this.oa("wccse", mc); + this.oa("wchti", qe); + this.Cd(Lb, "lossy", nc); + this.Cd(Lb, "lossless", nc); + this.Cd(Lb, "alpha", nc); + this.Cd(Lb, "animation", nc); + this.oa("wsql", re); + this.oa("natm", se); + this.oa("ustm", Nc); + this.oa("arra", gd); + this.oa("prms", te); + this.oa("xhr2", hd); + this.oa("wbgl", ue); + this.oa("geol", of); + this.oa("svg", gi); + this.oa("work", hi); + this.oa("wbsk", ii); + this.oa("vido", ji); + this.oa("audo", ki); + this.oa("hsty", li); + this.oa("file", mi); + this.oa("psmg", ni); + this.oa("wknf", oi); + this.oa("rqaf", pi); + this.oa("json", qi); + this.oa("flsc", ri); + this.oa("i18n", si); + this.oa("cors", xi); + this.oa("prog", yi); + this.oa("metr", zi); + this.oa("becn", Ai); + this.oa("mcrd", nf); + this.oa("esrc", fd) + } + }, + v = c.alog.NF("feature"); + v.M("commit", + function() { + Mb.zZ(); + var a = setInterval(function() { + if ("WebP-lossy" in Mb.ii && "WebP-lossless" in Mb.ii && "WebP-alpha" in Mb.ii && "WebP-animation" in Mb.ii) { + for (var b in Mb.ii) Mb.ii[b] = Mb.ii[b] ? "y": "n"; + v.send("feature", Mb.ii); + clearInterval(a) + } + }, + 500) + }); + c.alog("feature.create", { + T1: 4, + M3: i, + page: g, + ub: "18" + }); + c.alog("feature.fire", "commit") + } + } (a, b, c) + } (window, document, z); + z.Dn = z.alog || s(); + z.alog("cus.fire", "count", "z_loadscriptcount"); + "https:" === location.protocol && z.alog("cus.fire", "count", "z_httpscount"); + function Rb(a) { + var b = window.TILE_VERSION, + c = "20170927"; + b && b.ditu && (b = b.ditu, b[a] && b[a].updateDate && (c = b[a].updateDate)); + return c + }; + function pa(a, b) { + if (/^http/.test(a))//这里判断一下,如果是调用外部资源就退出去好了 + return; + if (b) { + var c = (1E5 * Math.random()).toFixed(0); + z._rd["_cbk" + c] = function(a) { + b && b(a); + delete z._rd["_cbk" + c] + }; + a += "&callback=BMap._rd._cbk" + c + } + var d = M("script", { + type: "text/javascript" + }); + d.charset = "utf-8"; + d.src = a; + d.addEventListener ? d.addEventListener("load", + function(a) { + a = a.target; + a.parentNode.removeChild(a) + }, + q) : d.attachEvent && d.attachEvent("onreadystatechange", + function() { + var a = window.event.srcElement; + a && ("loaded" == a.readyState || "complete" == a.readyState) && a.parentNode.removeChild(a) + }); + setTimeout(function() { + document.getElementsByTagName("head")[0].appendChild(d); + d = p + }, + 1) + }; + var Sb = { + map: "qvwhpw", + common: "rd34ye", + style: "hfbhis", + tile: "tr4mlq", + vectordrawlib: "guegnq", + newvectordrawlib: "e4h3yl", + groundoverlay: "kvmrds", + pointcollection: "pczsro", + marker: "04aunc", + symbol: "p0dpaw", + canvablepath: "wg4qgt", + vmlcontext: "isqbn2", + markeranimation: "nsuuqd", + poly: "nwg3f2", + draw: "yysqkl", + drawbysvg: "e5myin", + drawbyvml: "m3iedr", + drawbycanvas: "gwa2k4", + infowindow: "vlgzcy", + oppc: "qjt21z", + opmb: "rv5sii", + menu: "xxsskz", + control: "wfaub5", + navictrl: "z13gqu", + geoctrl: "wuuqk1", + copyrightctrl: "0wvo4s", + citylistcontrol: "bl5zau", + scommon: "tiybiy", + local: "tn1a0j", + route: "0lyh3b", + othersearch: "wy5iwg", + mapclick: "lv2ewy", + buslinesearch: "zlh2ql", + hotspot: "wodq2u", + autocomplete: "5eyd2y", + coordtrans: "bkfpql", + coordtransutils: "g1iarv", + convertor: "pjdycr", + clayer: "241cvr", + pservice: "rt3uza", + pcommon: "jcjego", + panorama: "wztjcf", + panoramaflash: "banqbn", + vector: "2n0w13" + }; + x.Jy = function() { + function a(a) { + return d && !!c[b + a + "_" + Sb[a]] + } + var b = "BMap_", + c = window.localStorage, + d = "localStorage" in window && c !== p && c !== j; + return { + qY: d, + set: function(a, f) { + if (d) { + for (var g = b + a + "_", + i = c.length, + k; i--;) k = c.key(i), + -1 < k.indexOf(g) && c.removeItem(k); + try { + c.setItem(b + a + "_" + Sb[a], f) + } catch(l) { + c.clear() + } + } + }, + get: function(e) { + return d && a(e) ? c.getItem(b + e + "_" + Sb[e]) : q + }, + eK: a + } + } (); + function I() {} + x.object.extend(I, { + Fj: { + oG: -1, + HP: 0, + aq: 1 + }, + pL: function() { + var a = "canvablepath", + b = z.HU ? "newvectordrawlib": "vectordrawlib"; + if (!G() || !Nb()) Kb() || (Jb() ? a = "vmlcontext": Nb()); + return { + tile: [b, "style"], + control: [], + marker: ["symbol"], + symbol: ["canvablepath", "common"], + canvablepath: "canvablepath" === a ? [] : [a], + vmlcontext: [], + style: [], + poly: ["marker", "drawbycanvas", "drawbysvg", "drawbyvml"], + drawbysvg: ["draw"], + drawbyvml: ["draw"], + drawbycanvas: ["draw"], + infowindow: ["common", "marker"], + menu: [], + oppc: [], + opmb: [], + scommon: [], + local: ["scommon"], + route: ["scommon"], + othersearch: ["scommon"], + autocomplete: ["scommon"], + citylistcontrol: ["autocomplete"], + mapclick: ["scommon"], + buslinesearch: ["route"], + hotspot: [], + coordtransutils: ["coordtrans"], + convertor: [], + clayer: ["tile"], + pservice: [], + pcommon: ["style", "pservice"], + panorama: ["pcommon"], + panoramaflash: ["pcommon"] + } + }, + P3: {}, + hG: { + YP: z.ma + "getmodules?v=2.0&t=20140707", + yU: 5E3 + }, + CC: q, + Pd: { + sl: {}, + Fn: [], + Sv: [] + }, + load: function(a, b, c) { + var d = this.ib(a); + if (d.Bd == this.Fj.aq) c && b(); + else { + if (d.Bd == this.Fj.oG) { + this.kK(a); + this.xN(a); + var e = this; + e.CC == q && (e.CC = o, setTimeout(function() { + for (var a = [], b = 0, c = e.Pd.Fn.length; b < c; b++) { + var d = e.Pd.Fn[b], + l = ""; + ja.Jy.eK(d) ? l = ja.Jy.get(d) : (l = "", a.push(d + "_" + Sb[d])); + e.Pd.Sv.push({ + RM: d, + JE: l + }) + } + e.CC = q; + e.Pd.Fn.length = 0; + //0 == a.length ? e.VK() : pa(e.hG.YP + "&mod=" + a.join(",")) + //0 == a.length ? e.UK() : Qb(e.gG.XP + "&mod=" + a.join(",")) + + console.log(a); //这里很重要!帮助我们找到我们需要加载的模块! + 0 == a.length ? e.VK() : pa("js/getmodules.js") + }, + 1)); + d.Bd = this.Fj.HP + } + d.Qu.push(b) + } + }, + kK: function(a) { + if (a && this.pL()[a]) for (var a = this.pL()[a], b = 0; b < a.length; b++) this.kK(a[b]), + this.Pd.sl[a[b]] || this.xN(a[b]) + }, + xN: function(a) { + for (var b = 0; b < this.Pd.Fn.length; b++) if (this.Pd.Fn[b] == a) return; + this.Pd.Fn.push(a) + }, + yZ: function(a, b) { + var c = this.ib(a); + try { + eval(b) + } catch(d) { + return + } + c.Bd = this.Fj.aq; + for (var e = 0, + f = c.Qu.length; e < f; e++) c.Qu[e](); + c.Qu.length = 0 + }, + eK: function(a, b) { + var c = this; + c.timeout = setTimeout(function() { + c.Pd.sl[a].Bd != c.Fj.aq ? (c.remove(a), c.load(a, b)) : clearTimeout(c.timeout) + }, + c.hG.yU) + }, + ib: function(a) { + this.Pd.sl[a] || (this.Pd.sl[a] = {}, + this.Pd.sl[a].Bd = this.Fj.oG, this.Pd.sl[a].Qu = []); + return this.Pd.sl[a] + }, + remove: function(a) { + delete this.ib(a) + }, + tV: function(a, b) { + for (var c = this.Pd.Sv, + d = o, + e = 0, + f = c.length; e < f; e++)"" == c[e].JE && (c[e].RM == a ? c[e].JE = b: d = q); + d && this.VK() + }, + VK: function() { + for (var a = this.Pd.Sv, + b = 0, + c = a.length; b < c; b++) this.yZ(a[b].RM, a[b].JE); + this.Pd.Sv.length = 0 + } + }); + function Q(a, b) { + this.x = a || 0; + this.y = b || 0; + this.x = this.x; + this.y = this.y + } + Q.prototype.nb = function(a) { + return a && a.x == this.x && a.y == this.y + }; + function N(a, b) { + this.width = a || 0; + this.height = b || 0 + } + N.prototype.nb = function(a) { + return a && this.width == a.width && this.height == a.height + }; + function hb(a, b) { + a && (this.Lb = a, this.ba = "spot" + hb.ba++, b = b || {}, + this.Tg = b.text || "", this.yv = b.offsets ? b.offsets.slice(0) : [5, 5, 5, 5], this.tJ = b.userData || p, this.Qh = b.minZoom || p, this.Ff = b.maxZoom || p) + } + hb.ba = 0; + x.extend(hb.prototype, { + ra: function(a) { + this.Qh == p && (this.Qh = a.K.gc); + this.Ff == p && (this.Ff = a.K.$b) + }, + ta: function(a) { + a instanceof H && (this.Lb = a) + }, + ha: u("Lb"), + Wt: ba("Tg"), + VD: u("Tg"), + setUserData: ba("tJ"), + getUserData: u("tJ") + }); + function Tb() { + this.C = p; + this.Mb = "control"; + this.Qa = this.YJ = o + } + x.lang.ua(Tb, x.lang.Ca, "Control"); + x.extend(Tb.prototype, { + initialize: function(a) { + this.C = a; + if (this.B) return a.Va.appendChild(this.B), + this.B + }, + Ee: function(a) { ! this.B && (this.initialize && Ya(this.initialize)) && (this.B = this.initialize(a)); + this.k = this.k || { + zg: q + }; + this.wB(); + this.Lr(); + this.B && (this.B.kr = this) + }, + wB: function() { + var a = this.B; + if (a) { + var b = a.style; + b.position = "absolute"; + b.zIndex = this.vz || "10"; + b.MozUserSelect = "none"; + b.WebkitTextSizeAdjust = "none"; + this.k.zg || x.D.Ua(a, "BMap_noprint"); + G() || x.M(a, "contextmenu", oa) + } + }, + remove: function() { + this.C = p; + this.B && (this.B.parentNode && this.B.parentNode.removeChild(this.B), this.B = this.B.kr = p) + }, + Aa: function() { + this.B = yb(this.C.Va, "
            "); + this.Qa == q && x.D.U(this.B); + return this.B + }, + Lr: function() { + this.qc(this.k.anchor) + }, + qc: function(a) { + if (this.r1 || !Xa(a) || isNaN(a) || a < Ub || 3 < a) a = this.defaultAnchor; + this.k = this.k || { + zg: q + }; + this.k.za = this.k.za || this.defaultOffset; + var b = this.k.anchor; + this.k.anchor = a; + if (this.B) { + var c = this.B, + d = this.k.za.width, + e = this.k.za.height; + c.style.left = c.style.top = c.style.right = c.style.bottom = "auto"; + switch (a) { + case Ub: + c.style.top = e + "px"; + c.style.left = d + "px"; + break; + case Vb: + c.style.top = e + "px"; + c.style.right = d + "px"; + break; + case Wb: + c.style.bottom = e + "px"; + c.style.left = d + "px"; + break; + case 3: + c.style.bottom = e + "px", + c.style.right = d + "px" + } + c = ["TL", "TR", "BL", "BR"]; + x.D.Sb(this.B, "anchor" + c[b]); + x.D.Ua(this.B, "anchor" + c[a]) + } + }, + xD: function() { + return this.k.anchor + }, + getContainer: u("B"), + Ve: function(a) { + a instanceof N && (this.k = this.k || { + zg: q + }, + this.k.za = new N(a.width, a.height), this.B && this.qc(this.k.anchor)) + }, + Qf: function() { + return this.k.za + }, + Id: u("B"), + show: function() { + this.Qa != o && (this.Qa = o, this.B && x.D.show(this.B)) + }, + U: function() { + this.Qa != q && (this.Qa = q, this.B && x.D.U(this.B)) + }, + isPrintable: function() { + return !! this.k.zg + }, + kh: function() { + return ! this.B && !this.C ? q: !!this.Qa + } + }); + var Ub = 0, + Vb = 1, + Wb = 2; + function ib(a) { + Tb.call(this); + a = a || {}; + this.k = { + zg: q, + AF: a.showZoomInfo || o, + anchor: a.anchor, + za: a.offset, + type: a.type, + uW: a.enableGeolocation || q + }; + this.defaultAnchor = G() ? 3 : Ub; + this.defaultOffset = new N(10, 10); + this.qc(a.anchor); + this.jn(a.type); + this.Ae() + } + x.lang.ua(ib, Tb, "NavigationControl"); + x.extend(ib.prototype, { + initialize: function(a) { + this.C = a; + return this.B + }, + jn: function(a) { + this.k.type = Xa(a) && 0 <= a && 3 >= a ? a: 0 + }, + hp: function() { + return this.k.type + }, + Ae: function() { + var a = this; + I.load("navictrl", + function() { + a.xf() + }) + } + }); + function Xb(a) { + Tb.call(this); + a = a || {}; + this.k = { + anchor: a.anchor || Wb, + za: a.offset || new N(10, 30), + i_: a.showAddressBar !== q, + Z1: a.enableAutoLocation || q, + FM: a.locationIcon || p + }; + var b = this; + this.vz = 1200; + b.X_ = []; + this.le = []; + I.load("geoctrl", + function() { (function d() { + if (0 !== b.le.length) { + var a = b.le.shift(); + b[a.method].apply(b, a.arguments); + d() + } + })(); + b.XP() + }); + Ra(Ja) + } + x.lang.ua(Xb, Tb, "GeolocationControl"); + x.extend(Xb.prototype, { + location: function() { + this.le.push({ + method: "location", + arguments: arguments + }) + }, + getAddressComponent: ca(p) + }); + function Yb(a) { + Tb.call(this); + a = a || {}; + this.k = { + zg: q, + anchor: a.anchor, + za: a.offset + }; + this.dc = []; + this.defaultAnchor = Wb; + this.defaultOffset = new N(5, 2); + this.qc(a.anchor); + this.YJ = q; + this.Ae() + } + x.lang.ua(Yb, Tb, "CopyrightControl"); + x.object.extend(Yb.prototype, { + initialize: function(a) { + this.C = a; + return this.B + }, + qw: function(a) { + if (a && Xa(a.id) && !isNaN(a.id)) { + var b = { + bounds: p, + content: "" + }, + c; + for (c in a) b[c] = a[c]; + if (a = this.pm(a.id)) for (var d in b) a[d] = b[d]; + else this.dc.push(b) + } + }, + pm: function(a) { + for (var b = 0, + c = this.dc.length; b < c; b++) if (this.dc[b].id == a) return this.dc[b] + }, + ED: u("dc"), + aF: function(a) { + for (var b = 0, + c = this.dc.length; b < c; b++) this.dc[b].id == a && (r = this.dc.splice(b, 1), b--, c = this.dc.length) + }, + Ae: function() { + var a = this; + I.load("copyrightctrl", + function() { + a.xf() + }) + } + }); + function kb(a) { + Tb.call(this); + a = a || {}; + this.k = { + zg: q, + size: a.size || new N(150, 150), + padding: 5, + Wa: a.isOpen === o ? o: q, + l0: 4, + za: a.offset, + anchor: a.anchor + }; + this.defaultAnchor = 3; + this.defaultOffset = new N(0, 0); + this.zq = this.Aq = 13; + this.qc(a.anchor); + this.ye(this.k.size); + this.Ae() + } + x.lang.ua(kb, Tb, "OverviewMapControl"); + x.extend(kb.prototype, { + initialize: function(a) { + this.C = a; + return this.B + }, + qc: function(a) { + Tb.prototype.qc.call(this, a) + }, + ne: function() { + this.ne.ko = o; + this.k.Wa = !this.k.Wa; + this.B || (this.ne.ko = q) + }, + ye: function(a) { + a instanceof N || (a = new N(150, 150)); + a.width = 0 < a.width ? a.width: 150; + a.height = 0 < a.height ? a.height: 150; + this.k.size = a + }, + Bb: function() { + return this.k.size + }, + Wa: function() { + return this.k.Wa + }, + Ae: function() { + var a = this; + I.load("control", + function() { + a.xf() + }) + } + }); + function Zb(a) { + Tb.call(this); + a = a || {}; + this.defaultAnchor = Ub; + this.qV = a.canCheckSize === q ? q: o; + this.ej = ""; + this.defaultOffset = new N(10, 10); + this.onChangeBefore = []; + this.onChangeAfter = []; + this.onChangeSuccess = []; + this.k = { + zg: q, + za: a.offset || this.defaultOffset, + anchor: a.anchor || this.defaultAnchor, + expand: !!a.expand + }; + a.onChangeBefore && Ya(a.onChangeBefore) && this.onChangeBefore.push(a.onChangeBefore); + a.onChangeAfter && Ya(a.onChangeAfter) && this.onChangeAfter.push(a.onChangeAfter); + a.onChangeSuccess && Ya(a.onChangeSuccess) && this.onChangeSuccess.push(a.onChangeSuccess); + this.qc(a.anchor); + this.Ae() + } + x.lang.ua(Zb, Tb, "CityListControl"); + x.object.extend(Zb.prototype, { + initialize: function(a) { + this.C = a; + return this.B + }, + Ae: function() { + var a = this; + I.load("citylistcontrol", + function() { + a.xf() + }, + o) + } + }); + function jb(a) { + Tb.call(this); + a = a || {}; + this.k = { + zg: q, + color: "black", + cd: "metric", + za: a.offset + }; + this.defaultAnchor = Wb; + this.defaultOffset = new N(81, 18); + this.qc(a.anchor); + this.Zh = { + metric: { + name: "metric", + mK: 1, + YL: 1E3, + DO: "\u7c73", + EO: "\u516c\u91cc" + }, + us: { + name: "us", + mK: 3.2808, + YL: 5280, + DO: "\u82f1\u5c3a", + EO: "\u82f1\u91cc" + } + }; + this.Zh[this.k.cd] || (this.k.cd = "metric"); + this.SI = p; + this.rI = {}; + this.Ae() + } + x.lang.ua(jb, Tb, "ScaleControl"); + x.object.extend(jb.prototype, { + initialize: function(a) { + this.C = a; + return this.B + }, + Jk: function(a) { + this.k.color = a + "" + }, + q2: function() { + return this.k.color + }, + xF: function(a) { + this.k.cd = this.Zh[a] && this.Zh[a].name || this.k.cd + }, + NX: function() { + return this.k.cd + }, + Ae: function() { + var a = this; + I.load("control", + function() { + a.xf() + }) + } + }); + var $b = 0; + function lb(a) { + Tb.call(this); + a = a || {}; + this.defaultAnchor = Vb; + this.defaultOffset = new N(10, 10); + this.k = { + zg: q, + nh: [Ma, Za, Sa, Pa], + YV: ["B_DIMENSIONAL_MAP", "B_SATELLITE_MAP", "B_NORMAL_MAP"], + type: a.type || $b, + za: a.offset || this.defaultOffset, + yW: o + }; + this.qc(a.anchor); + "[object Array]" == Object.prototype.toString.call(a.mapTypes) && (this.k.nh = a.mapTypes.slice(0)); + this.Ae() + } + x.lang.ua(lb, Tb, "MapTypeControl"); + x.object.extend(lb.prototype, { + initialize: function(a) { + this.C = a; + return this.B + }, + Ky: function(a) { + this.C.Zn = a + }, + Ae: function() { + var a = this; + I.load("control", + function() { + a.xf() + }, + o) + } + }); + function ac(a) { + Tb.call(this); + a = a || {}; + this.k = { + zg: q, + za: a.offset, + anchor: a.anchor + }; + this.Qi = q; + this.Wv = p; + this.AI = new bc({ + Pf: "api" + }); + this.BI = new cc(p, { + Pf: "api" + }); + this.defaultAnchor = Vb; + this.defaultOffset = new N(10, 10); + this.qc(a.anchor); + this.Ae(); + Ra(va) + } + x.lang.ua(ac, Tb, "PanoramaControl"); + x.extend(ac.prototype, { + initialize: function(a) { + this.C = a; + return this.B + }, + Ae: function() { + var a = this; + I.load("control", + function() { + a.xf() + }) + } + }); + function dc(a) { + x.lang.Ca.call(this); + this.k = { + Va: p, + cursor: "default" + }; + this.k = x.extend(this.k, a); + this.Mb = "contextmenu"; + this.C = p; + this.ya = []; + this.If = []; + this.Ce = []; + this.Rw = this.is = p; + this.Ph = q; + var b = this; + I.load("menu", + function() { + b.yb() + }) + } + x.lang.ua(dc, x.lang.Ca, "ContextMenu"); + x.object.extend(dc.prototype, { + ra: function(a, b) { + this.C = a; + this.xl = b || p + }, + remove: function() { + this.C = this.xl = p + }, + sw: function(a) { + if (a && !("menuitem" != a.Mb || "" == a.Tg || 0 >= a.Zi)) { + for (var b = 0, + c = this.ya.length; b < c; b++) if (this.ya[b] === a) return; + this.ya.push(a); + this.If.push(a) + } + }, + removeItem: function(a) { + if (a && "menuitem" == a.Mb) { + for (var b = 0, + c = this.ya.length; b < c; b++) this.ya[b] === a && (this.ya[b].remove(), this.ya.splice(b, 1), c--); + b = 0; + for (c = this.If.length; b < c; b++) this.If[b] === a && (this.If[b].remove(), this.If.splice(b, 1), c--) + } + }, + QB: function() { + this.ya.push({ + Mb: "divider", + Nj: this.Ce.length + }); + this.Ce.push({ + D: p + }) + }, + cF: function(a) { + if (this.Ce[a]) { + for (var b = 0, + c = this.ya.length; b < c; b++) this.ya[b] && ("divider" == this.ya[b].Mb && this.ya[b].Nj == a) && (this.ya.splice(b, 1), c--), + this.ya[b] && ("divider" == this.ya[b].Mb && this.ya[b].Nj > a) && this.ya[b].Nj--; + this.Ce.splice(a, 1) + } + }, + Id: u("B"), + show: function() { + this.Ph != o && (this.Ph = o) + }, + U: function() { + this.Ph != q && (this.Ph = q) + }, + OZ: function(a) { + a && (this.k.cursor = a) + }, + getItem: function(a) { + return this.If[a] + } + }); + var ec = E.qa + "menu_zoom_in.png", + fc = E.qa + "menu_zoom_out.png"; + function gc(a, b, c) { + if (a && Ya(b)) { + x.lang.Ca.call(this); + this.k = { + width: 100, + id: "", + Em: "" + }; + c = c || {}; + this.k.width = 1 * c.width ? c.width: 100; + this.k.id = c.id ? c.id: ""; + this.k.Em = c.iconUrl ? c.iconUrl: ""; + this.Tg = a + ""; + this.yz = b; + this.C = p; + this.Mb = "menuitem"; + this.Sr = this.nv = this.B = this.Hh = p; + this.Lh = o; + var d = this; + I.load("menu", + function() { + d.yb() + }) + } + } + x.lang.ua(gc, x.lang.Ca, "MenuItem"); + x.object.extend(gc.prototype, { + ra: function(a, b) { + this.C = a; + this.Hh = b + }, + remove: function() { + this.C = this.Hh = p + }, + Wt: function(a) { + a && (this.Tg = a + "") + }, + Ub: function(a) { + a && (this.k.Em = a) + }, + Id: u("B"), + enable: function() { + this.Lh = o + }, + disable: function() { + this.Lh = q + } + }); + function eb(a, b) { + a && !b && (b = a); + this.Ge = this.Fe = this.Le = this.Ke = this.Ml = this.vl = p; + a && (this.Ml = new H(a.lng, a.lat), this.vl = new H(b.lng, b.lat), this.Le = a.lng, this.Ke = a.lat, this.Ge = b.lng, this.Fe = b.lat) + } + x.object.extend(eb.prototype, { + xj: function() { + return ! this.Ml || !this.vl + }, + nb: function(a) { + return ! (a instanceof eb) || this.xj() ? q: this.se().nb(a.se()) && this.of().nb(a.of()) + }, + se: u("Ml"), + of: u("vl"), + HV: function(a) { + return ! (a instanceof eb) || this.xj() || a.xj() ? q: a.Le > this.Le && a.Ge < this.Ge && a.Ke > this.Ke && a.Fe < this.Fe + }, + Ka: function() { + return this.xj() ? p: new H((this.Le + this.Ge) / 2, (this.Ke + this.Fe) / 2) + }, + it: function(a) { + if (! (a instanceof eb) || Math.max(a.Le, a.Ge) < Math.min(this.Le, this.Ge) || Math.min(a.Le, a.Ge) > Math.max(this.Le, this.Ge) || Math.max(a.Ke, a.Fe) < Math.min(this.Ke, this.Fe) || Math.min(a.Ke, a.Fe) > Math.max(this.Ke, this.Fe)) return p; + var b = Math.max(this.Le, a.Le), + c = Math.min(this.Ge, a.Ge), + d = Math.max(this.Ke, a.Ke), + a = Math.min(this.Fe, a.Fe); + return new eb(new H(b, d), new H(c, a)) + }, + ds: function(a) { + return ! (a instanceof H) || this.xj() ? q: a.lng >= this.Le && a.lng <= this.Ge && a.lat >= this.Ke && a.lat <= this.Fe + }, + extend: function(a) { + if (a instanceof H) { + var b = a.lng, + a = a.lat; + this.Ml || (this.Ml = new H(0, 0)); + this.vl || (this.vl = new H(0, 0)); + if (!this.Le || this.Le > b) this.Ml.lng = this.Le = b; + if (!this.Ge || this.Ge < b) this.vl.lng = this.Ge = b; + if (!this.Ke || this.Ke > a) this.Ml.lat = this.Ke = a; + if (!this.Fe || this.Fe < a) this.vl.lat = this.Fe = a + } + }, + KF: function() { + return this.xj() ? new H(0, 0) : new H(Math.abs(this.Ge - this.Le), Math.abs(this.Fe - this.Ke)) + } + }); + function H(a, b) { + isNaN(a) && (a = Ib(a), a = isNaN(a) ? 0 : a); + $a(a) && (a = parseFloat(a)); + isNaN(b) && (b = Ib(b), b = isNaN(b) ? 0 : b); + $a(b) && (b = parseFloat(b)); + this.lng = a; + this.lat = b + } + H.dM = function(a) { + return a && 180 >= a.lng && -180 <= a.lng && 74 >= a.lat && -74 <= a.lat + }; + H.prototype.nb = function(a) { + return a && this.lat == a.lat && this.lng == a.lng + }; + function hc() {} + hc.prototype.lh = function() { + aa("lngLatToPoint\u65b9\u6cd5\u672a\u5b9e\u73b0") + }; + hc.prototype.zj = function() { + aa("pointToLngLat\u65b9\u6cd5\u672a\u5b9e\u73b0") + }; + function ic() {}; + var db = { + oK: function(a, b, c) { + I.load("coordtransutils", + function() { + db.$U(a, b, c) + }, + o) + }, + nK: function(a, b, c) { + I.load("coordtransutils", + function() { + db.ZU(a, b, c) + }, + o) + } + }; + function jc() { + this.Pa = []; + var a = this; + I.load("convertor", + function() { + a.VP() + }) + } + x.ua(jc, x.lang.Ca, "Convertor"); + x.extend(jc.prototype, { + translate: function(a, b, c, d) { + this.Pa.push({ + method: "translate", + arguments: [a, b, c, d] + }) + } + }); + S(jc.prototype, { + translate: jc.prototype.translate + }); + function R() {} + R.prototype = new hc; + x.extend(R, { + kP: 6370996.81, + sG: [1.289059486E7, 8362377.87, 5591021, 3481989.83, 1678043.12, 0], + Du: [75, 60, 45, 30, 15, 0], + qP: [[1.410526172116255E-8, 8.98305509648872E-6, -1.9939833816331, 200.9824383106796, -187.2403703815547, 91.6087516669843, -23.38765649603339, 2.57121317296198, -0.03801003308653, 1.73379812E7], [ - 7.435856389565537E-9, 8.983055097726239E-6, -0.78625201886289, 96.32687599759846, -1.85204757529826, -59.36935905485877, 47.40033549296737, -16.50741931063887, 2.28786674699375, 1.026014486E7], [ - 3.030883460898826E-8, 8.98305509983578E-6, 0.30071316287616, 59.74293618442277, 7.357984074871, -25.38371002664745, 13.45380521110908, -3.29883767235584, 0.32710905363475, 6856817.37], [ - 1.981981304930552E-8, 8.983055099779535E-6, 0.03278182852591, 40.31678527705744, 0.65659298677277, -4.44255534477492, 0.85341911805263, 0.12923347998204, -0.04625736007561, 4482777.06], [3.09191371068437E-9, 8.983055096812155E-6, 6.995724062E-5, 23.10934304144901, -2.3663490511E-4, -0.6321817810242, -0.00663494467273, 0.03430082397953, -0.00466043876332, 2555164.4], [2.890871144776878E-9, 8.983055095805407E-6, -3.068298E-8, 7.47137025468032, -3.53937994E-6, -0.02145144861037, -1.234426596E-5, 1.0322952773E-4, -3.23890364E-6, 826088.5]], + pG: [[ - 0.0015702102444, 111320.7020616939, 1704480524535203, -10338987376042340, 26112667856603880, -35149669176653700, 26595700718403920, -10725012454188240, 1800819912950474, 82.5], [8.277824516172526E-4, 111320.7020463578, 6.477955746671607E8, -4.082003173641316E9, 1.077490566351142E10, -1.517187553151559E10, 1.205306533862167E10, -5.124939663577472E9, 9.133119359512032E8, 67.5], [0.00337398766765, 111320.7020202162, 4481351.045890365, -2.339375119931662E7, 7.968221547186455E7, -1.159649932797253E8, 9.723671115602145E7, -4.366194633752821E7, 8477230.501135234, 52.5], [0.00220636496208, 111320.7020209128, 51751.86112841131, 3796837.749470245, 992013.7397791013, -1221952.21711287, 1340652.697009075, -620943.6990984312, 144416.9293806241, 37.5], [ - 3.441963504368392E-4, 111320.7020576856, 278.2353980772752, 2485758.690035394, 6070.750963243378, 54821.18345352118, 9540.606633304236, -2710.55326746645, 1405.483844121726, 22.5], [ - 3.218135878613132E-4, 111320.7020701615, 0.00369383431289, 823725.6402795718, 0.46104986909093, 2351.343141331292, 1.58060784298199, 8.77738589078284, 0.37238884252424, 7.45]], + v2: function(a, b) { + if (!a || !b) return 0; + var c, d, a = this.Ab(a); + if (!a) return 0; + c = this.Sk(a.lng); + d = this.Sk(a.lat); + b = this.Ab(b); + return ! b ? 0 : this.Re(c, this.Sk(b.lng), d, this.Sk(b.lat)) + }, + Xo: function(a, b) { + if (!a || !b) return 0; + a.lng = this.ND(a.lng, -180, 180); + a.lat = this.RD(a.lat, -74, 74); + b.lng = this.ND(b.lng, -180, 180); + b.lat = this.RD(b.lat, -74, 74); + return this.Re(this.Sk(a.lng), this.Sk(b.lng), this.Sk(a.lat), this.Sk(b.lat)) + }, + Ab: function(a) { + if (a === p || a === j) return new H(0, 0); + var b, c; + b = new H(Math.abs(a.lng), Math.abs(a.lat)); + for (var d = 0; d < this.sG.length; d++) if (b.lat >= this.sG[d]) { + c = this.qP[d]; + break + } + a = this.pK(a, c); + return a = new H(a.lng.toFixed(6), a.lat.toFixed(6)) + }, + zb: function(a) { + if (a === p || a === j || 180 < a.lng || -180 > a.lng || 90 < a.lat || -90 > a.lat) return new H(0, 0); + var b, c; + a.lng = this.ND(a.lng, -180, 180); + a.lat = this.RD(a.lat, -74, 74); + b = new H(a.lng, a.lat); + for (var d = 0; d < this.Du.length; d++) if (b.lat >= this.Du[d]) { + c = this.pG[d]; + break + } + if (!c) for (d = 0; d < this.Du.length; d++) if (b.lat <= -this.Du[d]) { + c = this.pG[d]; + break + } + a = this.pK(a, c); + return a = new H(a.lng.toFixed(2), a.lat.toFixed(2)) + }, + pK: function(a, b) { + if (a && b) { + var c = b[0] + b[1] * Math.abs(a.lng), + d = Math.abs(a.lat) / b[9], + d = b[2] + b[3] * d + b[4] * d * d + b[5] * d * d * d + b[6] * d * d * d * d + b[7] * d * d * d * d * d + b[8] * d * d * d * d * d * d, + c = c * (0 > a.lng ? -1 : 1), + d = d * (0 > a.lat ? -1 : 1); + return new H(c, d) + } + }, + Re: function(a, b, c, d) { + return this.kP * Math.acos(Math.sin(c) * Math.sin(d) + Math.cos(c) * Math.cos(d) * Math.cos(b - a)) + }, + Sk: function(a) { + return Math.PI * a / 180 + }, + u4: function(a) { + return 180 * a / Math.PI + }, + RD: function(a, b, c) { + b != p && (a = Math.max(a, b)); + c != p && (a = Math.min(a, c)); + return a + }, + ND: function(a, b, c) { + for (; a > c;) a -= c - b; + for (; a < b;) a += c - b; + return a + } + }); + x.extend(R.prototype, { + Lm: function(a) { + return R.zb(a) + }, + lh: function(a) { + a = R.zb(a); + return new Q(a.lng, a.lat) + }, + oh: function(a) { + return R.Ab(a) + }, + zj: function(a) { + a = new H(a.x, a.y); + return R.Ab(a) + }, + bc: function(a, b, c, d, e) { + if (a) return a = this.Lm(a, e), + b = this.Bc(b), + new Q(Math.round((a.lng - c.lng) / b + d.width / 2), Math.round((c.lat - a.lat) / b + d.height / 2)) + }, + wb: function(a, b, c, d, e) { + if (a) return b = this.Bc(b), + this.oh(new H(c.lng + b * (a.x - d.width / 2), c.lat - b * (a.y - d.height / 2)), e) + }, + Bc: function(a) { + return Math.pow(2, 18 - a) + } + }); + function gb() { + this.ej = "bj" + } + gb.prototype = new R; + x.extend(gb.prototype, { + Lm: function(a, b) { + return this.FQ(b, R.zb(a)) + }, + oh: function(a, b) { + return R.Ab(this.GQ(b, a)) + }, + lngLatToPointFor3D: function(a, b) { + var c = this, + d = R.zb(a); + I.load("coordtrans", + function() { + var a = ic.PD(c.ej || "bj", d), + a = new Q(a.x, a.y); + b && b(a) + }, + o) + }, + pointToLngLatFor3D: function(a, b) { + var c = this, + d = new H(a.x, a.y); + I.load("coordtrans", + function() { + var a = ic.OD(c.ej || "bj", d), + a = new H(a.lng, a.lat), + a = R.Ab(a); + b && b(a) + }, + o) + }, + FQ: function(a, b) { + if (I.ib("coordtrans").Bd == I.Fj.aq) { + var c = ic.PD(a || "bj", b); + return new H(c.x, c.y) + } + I.load("coordtrans", s()); + return new H(0, 0) + }, + GQ: function(a, b) { + if (I.ib("coordtrans").Bd == I.Fj.aq) { + var c = ic.OD(a || "bj", b); + return new H(c.lng, c.lat) + } + I.load("coordtrans", s()); + return new H(0, 0) + }, + Bc: function(a) { + return Math.pow(2, 20 - a) + } + }); + function kc() { + this.Mb = "overlay" + } + x.lang.ua(kc, x.lang.Ca, "Overlay"); + kc.Am = function(a) { + a *= 1; + return ! a ? 0 : -1E5 * a << 1 + }; + x.extend(kc.prototype, { + Ee: function(a) { + if (!this.V && Ya(this.initialize) && (this.V = this.initialize(a))) this.V.style.WebkitUserSelect = "none"; + this.draw() + }, + initialize: function() { + aa("initialize\u65b9\u6cd5\u672a\u5b9e\u73b0") + }, + draw: function() { + aa("draw\u65b9\u6cd5\u672a\u5b9e\u73b0") + }, + remove: function() { + this.V && this.V.parentNode && this.V.parentNode.removeChild(this.V); + this.V = p; + this.dispatchEvent(new O("onremove")) + }, + U: function() { + this.V && x.D.U(this.V) + }, + show: function() { + this.V && x.D.show(this.V) + }, + kh: function() { + return ! this.V || "none" == this.V.style.display || "hidden" == this.V.style.visibility ? q: o + } + }); + z.Ue(function(a) { + function b(a, b) { + var c = M("div"), + g = c.style; + g.position = "absolute"; + g.top = g.left = g.width = g.height = "0"; + g.zIndex = b; + a.appendChild(c); + return c + } + var c = a.R; + c.od = a.od = b(a.platform, 200); + a.Vd.rD = b(c.od, 800); + a.Vd.FE = b(c.od, 700); + a.Vd.cL = b(c.od, 600); + a.Vd.xE = b(c.od, 500); + a.Vd.JM = b(c.od, 400); + a.Vd.KM = b(c.od, 300); + a.Vd.QO = b(c.od, 201); + a.Vd.xt = b(c.od, 200) + }); + function fb() { + x.lang.Ca.call(this); + kc.call(this); + this.map = p; + this.Qa = o; + this.Cb = p; + this.fH = 0 + } + x.lang.ua(fb, kc, "OverlayInternal"); + x.extend(fb.prototype, { + initialize: function(a) { + this.map = a; + x.lang.Ca.call(this, this.ba); + return p + }, + ox: u("map"), + draw: s(), + Hj: s(), + remove: function() { + this.map = p; + x.lang.Tw(this.ba); + kc.prototype.remove.call(this) + }, + U: function() { + this.Qa !== q && (this.Qa = q) + }, + show: function() { + this.Qa !== o && (this.Qa = o) + }, + kh: function() { + return ! this.V ? q: !!this.Qa + }, + Na: u("V"), + PN: function(a) { + var a = a || {}, + b; + for (b in a) this.z[b] = a[b] + }, + Xt: ba("zIndex"), + mj: function() { + this.z.mj = o + }, + hW: function() { + this.z.mj = q + }, + wo: ba("hg"), + Cp: function() { + this.hg = p + } + }); + function lc() { + this.map = p; + this.wa = {}; + this.Be = [] + } + z.Ue(function(a) { + var b = new lc; + b.map = a; + a.wa = b.wa; + a.Be = b.Be; + a.addEventListener("load", + function(a) { + b.draw(a) + }); + a.addEventListener("moveend", + function(a) { + b.draw(a) + }); + x.da.la && 8 > x.da.la || "BackCompat" === document.compatMode ? a.addEventListener("zoomend", + function(a) { + setTimeout(function() { + b.draw(a) + }, + 20) + }) : a.addEventListener("zoomend", + function(a) { + b.draw(a) + }); + a.addEventListener("maptypechange", + function(a) { + b.draw(a) + }); + a.addEventListener("addoverlay", + function(a) { + a = a.target; + if (a instanceof fb) b.wa[a.ba] || (b.wa[a.ba] = a); + else { + for (var d = q, + e = 0, + f = b.Be.length; e < f; e++) if (b.Be[e] === a) { + d = o; + break + } + d || b.Be.push(a) + } + }); + a.addEventListener("removeoverlay", + function(a) { + a = a.target; + if (a instanceof fb) delete b.wa[a.ba]; + else for (var d = 0, + e = b.Be.length; d < e; d++) if (b.Be[d] === a) { + b.Be.splice(d, 1); + break + } + }); + a.addEventListener("clearoverlays", + function() { + this.Wc(); + for (var a in b.wa) b.wa[a].z.mj && (b.wa[a].remove(), delete b.wa[a]); + a = 0; + for (var d = b.Be.length; a < d; a++) b.Be[a].enableMassClear !== q && (b.Be[a].remove(), b.Be[a] = p, b.Be.splice(a, 1), a--, d--) + }); + a.addEventListener("infowindowopen", + function() { + var a = this.Cb; + a && (x.D.U(a.yc), x.D.U(a.cc)) + }); + a.addEventListener("movestart", + function() { + this.hh() && this.hh().YI() + }); + a.addEventListener("moveend", + function() { + this.hh() && this.hh().NI() + }) + }); + lc.prototype.draw = function(a) { + if (z.fq) { + var b = z.fq.Rs(this.map); + "canvas" === b.Mb && b.canvas && b.AQ(b.canvas.getContext("2d")) + } + for (var c in this.wa) this.wa[c].draw(a); + x.kc.Gb(this.Be, + function(a) { + a.draw() + }); + this.map.R.ob && this.map.R.ob.ta(); + z.fq && b.uF() + }; + function oc(a) { + fb.call(this); + a = a || {}; + this.z = { + strokeColor: a.strokeColor || "#3a6bdb", + nc: a.strokeWeight || 5, + rd: a.strokeOpacity || 0.65, + strokeStyle: a.strokeStyle || "solid", + mj: a.enableMassClear === q ? q: o, + vk: p, + um: p, + lf: a.enableEditing === o ? o: q, + SM: 5, + W_: q, + hf: a.enableClicking === q ? q: o, + ni: a.icons && 0 < a.icons.length ? a.icons: p + }; + 0 >= this.z.nc && (this.z.nc = 5); + if (0 > this.z.rd || 1 < this.z.rd) this.z.rd = 0.65; + if (0 > this.z.qg || 1 < this.z.qg) this.z.qg = 0.65; + "solid" != this.z.strokeStyle && "dashed" != this.z.strokeStyle && (this.z.strokeStyle = "solid"); + this.V = p; + this.Nu = new eb(0, 0); + this.ef = []; + this.oc = []; + this.Ra = {} + } + x.lang.ua(oc, fb, "Graph"); + oc.jx = function(a) { + var b = []; + if (!a) return b; + $a(a) && x.kc.Gb(a.split(";"), + function(a) { + a = a.split(","); + b.push(new H(a[0], a[1])) + }); + "[object Array]" == Object.prototype.toString.apply(a) && 0 < a.length && (b = a); + return b + }; + oc.PE = [0.09, 0.0050, 1.0E-4, 1.0E-5]; + x.extend(oc.prototype, { + initialize: function(a) { + this.map = a; + return p + }, + draw: s(), + Kr: function(a) { + this.ef.length = 0; + this.ia = oc.jx(a).slice(0); + this.Eh() + }, + he: function(a) { + this.Kr(a) + }, + Eh: function() { + if (this.ia) { + var a = this; + a.Nu = new eb; + x.kc.Gb(this.ia, + function(b) { + a.Nu.extend(b) + }) + } + }, + qe: u("ia"), + hn: function(a, b) { + b && this.ia[a] && (this.ef.length = 0, this.ia[a] = new H(b.lng, b.lat), this.Eh()) + }, + setStrokeColor: function(a) { + this.z.strokeColor = a + }, + EX: function() { + return this.z.strokeColor + }, + Rp: function(a) { + 0 < a && (this.z.nc = a) + }, + DL: function() { + return this.z.nc + }, + Pp: function(a) { + a == j || (1 < a || 0 > a) || (this.z.rd = a) + }, + FX: function() { + return this.z.rd + }, + Qt: function(a) { + 1 < a || 0 > a || (this.z.qg = a) + }, + bX: function() { + return this.z.qg + }, + Qp: function(a) { + "solid" != a && "dashed" != a || (this.z.strokeStyle = a) + }, + CL: function() { + return this.z.strokeStyle + }, + setFillColor: function(a) { + this.z.fillColor = a || "" + }, + aX: function() { + return this.z.fillColor + }, + Hd: u("Nu"), + remove: function() { + this.map && this.map.removeEventListener("onmousemove", this.kv); + fb.prototype.remove.call(this); + this.ef.length = 0 + }, + lf: function() { + if (! (2 > this.ia.length)) { + this.z.lf = o; + var a = this; + I.load("poly", + function() { + a.Sl() + }, + o) + } + }, + gW: function() { + this.z.lf = q; + var a = this; + I.load("poly", + function() { + a.mk() + }, + o) + }, + YW: function() { + return this.z.lf + } + }); + function pc(a) { + fb.call(this); + this.V = this.map = p; + this.z = { + width: 0, + height: 0, + za: new N(0, 0), + opacity: 1, + background: "transparent", + Rx: 1, + wM: "#000", + zY: "solid", + point: p + }; + this.PN(a); + this.point = this.z.point + } + x.lang.ua(pc, fb, "Division"); + x.extend(pc.prototype, { + Hj: function() { + var a = this.z, + b = this.content, + c = ['
            '); + c.push(b); + c.push("
            "); + this.V = yb(this.map.Rf().FE, c.join("")) + }, + initialize: function(a) { + this.map = a; + this.Hj(); + this.V && x.M(this.V, G() ? "touchstart": "mousedown", + function(a) { + na(a) + }); + return this.V + }, + draw: function() { + var a = this.map.Te(this.z.point); + this.z.za = new N( - Math.round(this.z.width / 2) - Math.round(this.z.Rx), -Math.round(this.z.height / 2) - Math.round(this.z.Rx)); + this.V.style.left = a.x + this.z.za.width + "px"; + this.V.style.top = a.y + this.z.za.height + "px" + }, + ha: function() { + return this.z.point + }, + V0: function() { + return this.map.bc(this.ha()) + }, + ta: function(a) { + this.z.point = a; + this.draw() + }, + PZ: function(a, b) { + this.z.width = Math.round(a); + this.z.height = Math.round(b); + this.V && (this.V.style.width = this.z.width + "px", this.V.style.height = this.z.height + "px", this.draw()) + } + }); + function qc(a, b, c) { + a && b && (this.imageUrl = a, this.size = b, a = new N(Math.floor(b.width / 2), Math.floor(b.height / 2)), c = c || {}, + a = c.anchor || a, b = c.imageOffset || new N(0, 0), this.imageSize = c.imageSize, this.anchor = a, this.imageOffset = b, this.infoWindowAnchor = c.infoWindowAnchor || this.anchor, this.printImageUrl = c.printImageUrl || "") + } + x.extend(qc.prototype, { + QN: function(a) { + a && (this.imageUrl = a) + }, + e_: function(a) { + a && (this.printImageUrl = a) + }, + ye: function(a) { + a && (this.size = new N(a.width, a.height)) + }, + qc: function(a) { + a && (this.anchor = new N(a.width, a.height)) + }, + Rt: function(a) { + a && (this.imageOffset = new N(a.width, a.height)) + }, + VZ: function(a) { + a && (this.infoWindowAnchor = new N(a.width, a.height)) + }, + SZ: function(a) { + a && (this.imageSize = new N(a.width, a.height)) + }, + toString: ca("Icon") + }); + function rc(a, b) { + if (a) { + b = b || {}; + this.style = { + anchor: b.anchor || new N(0, 0), + fillColor: b.fillColor || "#000", + qg: b.fillOpacity || 0, + scale: b.scale || 1, + rotation: b.rotation || 0, + strokeColor: b.strokeColor || "#000", + rd: b.strokeOpacity || 1, + nc: b.strokeWeight + }; + this.Mb = "number" === typeof a ? a: "UserDefined"; + this.Hi = this.style.anchor; + this.qr = new N(0, 0); + this.anchor = p; + this.jB = a; + var c = this; + I.load("symbol", + function() { + c.Kn() + }, + o) + } + } + x.extend(rc.prototype, { + setPath: ba("jB"), + setAnchor: function(a) { + this.Hi = this.style.anchor = a + }, + setRotation: function(a) { + this.style.rotation = a + }, + setScale: function(a) { + this.style.scale = a + }, + setStrokeWeight: function(a) { + this.style.nc = a + }, + setStrokeColor: function(a) { + a = x.cs.qC(a, this.style.rd); + this.style.strokeColor = a + }, + setStrokeOpacity: function(a) { + this.style.rd = a + }, + setFillOpacity: function(a) { + this.style.qg = a + }, + setFillColor: function(a) { + this.style.fillColor = a + } + }); + function sc(a, b, c, d) { + a && (this.Dv = {}, + this.aL = d ? !!d: q, this.Uc = [], this.w_ = a instanceof rc ? a: p, this.GI = b === j ? o: !!(b.indexOf("%") + 1), this.Zj = isNaN(parseFloat(b)) ? 1 : this.GI ? parseFloat(b) / 100 : parseFloat(b), this.HI = !!(c.indexOf("%") + 1), this.repeat = c != j ? this.HI ? parseFloat(c) / 100 : parseFloat(c) : 0) + }; + function tc(a, b) { + x.lang.Ca.call(this); + this.content = a; + this.map = p; + b = b || {}; + this.z = { + width: b.width || 0, + height: b.height || 0, + maxWidth: b.maxWidth || 730, + za: b.offset || new N(0, 0), + title: b.title || "", + GE: b.maxContent || "", + ah: b.enableMaximize || q, + Fs: b.enableAutoPan === q ? q: o, + dD: b.enableCloseOnClick === q ? q: o, + margin: b.margin || [10, 10, 40, 10], + lC: b.collisions || [[10, 10], [10, 10], [10, 10], [10, 10]], + ZX: q, + UY: b.onClosing || ca(o), + SK: q, + iD: b.enableParano === o ? o: q, + message: b.message, + kD: b.enableSearchTool === o ? o: q, + Cx: b.headerContent || "", + eD: b.enableContentScroll || q + }; + if (0 != this.z.width && (220 > this.z.width && (this.z.width = 220), 730 < this.z.width)) this.z.width = 730; + if (0 != this.z.height && (60 > this.z.height && (this.z.height = 60), 650 < this.z.height)) this.z.height = 650; + if (0 != this.z.maxWidth && (220 > this.z.maxWidth && (this.z.maxWidth = 220), 730 < this.z.maxWidth)) this.z.maxWidth = 730; + this.be = q; + this.Di = E.qa; + this.ab = p; + var c = this; + I.load("infowindow", + function() { + c.yb() + }) + } + x.lang.ua(tc, x.lang.Ca, "InfoWindow"); + x.extend(tc.prototype, { + setWidth: function(a) { ! a && 0 != a || (isNaN(a) || 0 > a) || (0 != a && (220 > a && (a = 220), 730 < a && (a = 730)), this.z.width = a) + }, + setHeight: function(a) { ! a && 0 != a || (isNaN(a) || 0 > a) || (0 != a && (60 > a && (a = 60), 650 < a && (a = 650)), this.z.height = a) + }, + TN: function(a) { ! a && 0 != a || (isNaN(a) || 0 > a) || (0 != a && (220 > a && (a = 220), 730 < a && (a = 730)), this.z.maxWidth = a) + }, + Cc: function(a) { + this.z.title = a + }, + getTitle: function() { + return this.z.title + }, + ad: ba("content"), + tk: u("content"), + Tt: function(a) { + this.z.GE = a + "" + }, + ge: s(), + Fs: function() { + this.z.Fs = o + }, + disableAutoPan: function() { + this.z.Fs = q + }, + enableCloseOnClick: function() { + this.z.dD = o + }, + disableCloseOnClick: function() { + this.z.dD = q + }, + ah: function() { + this.z.ah = o + }, + Ww: function() { + this.z.ah = q + }, + show: function() { + this.Qa = o + }, + U: function() { + this.Qa = q + }, + close: function() { + this.U() + }, + Vx: function() { + this.be = o + }, + restore: function() { + this.be = q + }, + kh: function() { + return this.Wa() + }, + Wa: ca(q), + ha: function() { + if (this.ab && this.ab.ha) return this.ab.ha() + }, + Qf: function() { + return this.z.za + } + }); + La.prototype.Nb = function(a, b) { + if (a instanceof tc && b instanceof H) { + var c = this.R; + c.Nm ? c.Nm.ta(b) : (c.Nm = new T(b, { + icon: new qc(E.qa + "blank.gif", { + width: 1, + height: 1 + }), + offset: new N(0, 0), + clickable: q + }), c.Nm.DR = 1); + this.Ja(c.Nm); + c.Nm.Nb(a) + } + }; + La.prototype.Wc = function() { + var a = this.R.ob || this.R.ml; + a && a.ab && a.ab.Wc() + }; + fb.prototype.Nb = function(a) { + this.map && (this.map.Wc(), a.Qa = o, this.map.R.ml = a, a.ab = this, x.lang.Ca.call(a, a.ba)) + }; + fb.prototype.Wc = function() { + this.map && this.map.R.ml && (this.map.R.ml.Qa = q, x.lang.Tw(this.map.R.ml.ba), this.map.R.ml = p) + }; + function uc(a, b) { + fb.call(this); + this.content = a; + this.V = this.map = p; + b = b || {}; + this.z = { + width: 0, + za: b.offset || new N(0, 0), + Up: { + backgroundColor: "#fff", + border: "1px solid #f00", + padding: "1px", + whiteSpace: "nowrap", + font: "12px " + E.fontFamily, + zIndex: "80", + MozUserSelect: "none" + }, + position: b.position || p, + mj: b.enableMassClear === q ? q: o, + hf: o + }; + 0 > this.z.width && (this.z.width = 0); + Eb(b.enableClicking) && (this.z.hf = b.enableClicking); + this.point = this.z.position; + var c = this; + I.load("marker", + function() { + c.yb() + }) + } + x.lang.ua(uc, fb, "Label"); + x.extend(uc.prototype, { + ha: function() { + return this.sv ? this.sv.ha() : this.point + }, + ta: function(a) { + a instanceof H && !this.px() && (this.point = this.z.position = new H(a.lng, a.lat)) + }, + ad: ba("content"), + tF: function(a) { + 0 <= a && 1 >= a && (this.z.opacity = a) + }, + Ve: function(a) { + a instanceof N && (this.z.za = new N(a.width, a.height)) + }, + Qf: function() { + return this.z.za + }, + Ld: function(a) { + a = a || {}; + this.z.Up = x.extend(this.z.Up, a) + }, + xi: function(a) { + return this.Ld(a) + }, + Cc: function(a) { + this.z.title = a || "" + }, + getTitle: function() { + return this.z.title + }, + SN: function(a) { + this.point = (this.sv = a) ? this.z.position = a.ha() : this.z.position = p + }, + px: function() { + return this.sv || p + }, + tk: u("content") + }); + function vc(a, b) { + if (0 !== arguments.length) { + fb.apply(this, arguments); + b = b || {}; + this.z = { + hb: a, + opacity: b.opacity || 1, + Gm: b.Gm || "", + vs: b.displayOnMinLevel || 1, + mj: b.enableMassClear === q ? q: o, + ss: b.displayOnMaxLevel || 19, + q_: b.stretch || q + }; + var c = this; + I.load("groundoverlay", + function() { + c.yb() + }) + } + } + x.lang.ua(vc, fb, "GroundOverlay"); + x.extend(vc.prototype, { + setBounds: function(a) { + this.z.hb = a + }, + getBounds: function() { + return this.z.hb + }, + setOpacity: function(a) { + this.z.opacity = a + }, + getOpacity: function() { + return this.z.opacity + }, + setImageURL: function(a) { + this.z.Gm = a + }, + getImageURL: function() { + return this.z.Gm + }, + setDisplayOnMinLevel: function(a) { + this.z.vs = a + }, + getDisplayOnMinLevel: function() { + return this.z.vs + }, + setDisplayOnMaxLevel: function(a) { + this.z.ss = a + }, + getDisplayOnMaxLevel: function() { + return this.z.ss + } + }); + var wc = 3, + xc = 4; + function yc() { + var a = document.createElement("canvas"); + return ! (!a.getContext || !a.getContext("2d")) + } + function zc(a, b) { + var c = this; + yc() && (a === j && aa(Error("\u6ca1\u6709\u4f20\u5165points\u6570\u636e")), "[object Array]" !== Object.prototype.toString.call(a) && aa(Error("points\u6570\u636e\u4e0d\u662f\u6570\u7ec4")), b = b || {}, + fb.apply(c, arguments), c.ea = { + ia: a + }, + c.z = { + shape: b.shape || wc, + size: b.size || xc, + color: b.color || "#fa937e", + mj: o + }, + this.gB = [], this.le = [], I.load("pointcollection", + function() { + for (var a = 0, + b; b = c.gB[a]; a++) c[b.method].apply(c, b.arguments); + for (a = 0; b = c.le[a]; a++) c[b.method].apply(c, b.arguments) + })) + } + x.lang.ua(zc, fb, "PointCollection"); + x.extend(zc.prototype, { + initialize: function(a) { + this.gB && this.gB.push({ + method: "initialize", + arguments: arguments + }) + }, + setPoints: function(a) { + this.le && this.le.push({ + method: "setPoints", + arguments: arguments + }) + }, + setStyles: function(a) { + this.le && this.le.push({ + method: "setStyles", + arguments: arguments + }) + }, + clear: function() { + this.le && this.le.push({ + method: "clear", + arguments: arguments + }) + }, + remove: function() { + this.le && this.le.push({ + method: "remove", + arguments: arguments + }) + } + }); + var Ac = new qc(E.qa + "marker_red_sprite.png", new N(19, 25), { + anchor: new N(10, 25), + infoWindowAnchor: new N(10, 0) + }), + Bc = new qc(E.qa + "marker_red_sprite.png", new N(20, 11), { + anchor: new N(6, 11), + imageOffset: new N( - 19, -13) + }); + function T(a, b) { + fb.call(this); + b = b || {}; + this.point = a; + this.vq = this.map = p; + this.z = { + za: b.offset || new N(0, 0), + uj: b.icon || Ac, + Mk: Bc, + title: b.title || "", + label: p, + XJ: b.baseZIndex || 0, + hf: o, + O4: q, + sE: q, + mj: b.enableMassClear === q ? q: o, + Yb: q, + zN: b.raiseOnDrag === o ? o: q, + GN: q, + Fd: b.draggingCursor || E.Fd, + rotation: b.rotation || 0 + }; + b.icon && !b.shadow && (this.z.Mk = p); + b.enableDragging && (this.z.Yb = b.enableDragging); + Eb(b.enableClicking) && (this.z.hf = b.enableClicking); + var c = this; + I.load("marker", + function() { + c.yb() + }) + } + T.Iu = kc.Am( - 90) + 1E6; + T.lG = T.Iu + 1E6; + x.lang.ua(T, fb, "Marker"); + x.extend(T.prototype, { + Ub: function(a) { + if (a instanceof qc || a instanceof rc) this.z.uj = a + }, + Yo: function() { + return this.z.uj + }, + Ay: function(a) { + a instanceof qc && (this.z.Mk = a) + }, + getShadow: function() { + return this.z.Mk + }, + fn: function(a) { + this.z.label = a || p + }, + LD: function() { + return this.z.label + }, + Yb: function() { + this.z.Yb = o + }, + JC: function() { + this.z.Yb = q + }, + ha: u("point"), + ta: function(a) { + a instanceof H && (this.point = new H(a.lng, a.lat)) + }, + yi: function(a, b) { + this.z.sE = !!a; + a && (this.HG = b || 0) + }, + Cc: function(a) { + this.z.title = a + "" + }, + getTitle: function() { + return this.z.title + }, + Ve: function(a) { + a instanceof N && (this.z.za = a) + }, + Qf: function() { + return this.z.za + }, + dn: ba("vq"), + Op: function(a) { + this.z.rotation = a + }, + AL: function() { + return this.z.rotation + } + }); + function Cc(a, b) { + oc.call(this, b); + b = b || {}; + this.z.qg = b.fillOpacity ? b.fillOpacity: 0.65; + this.z.fillColor = "" == b.fillColor ? "": b.fillColor ? b.fillColor: "#fff"; + this.he(a); + var c = this; + I.load("poly", + function() { + c.yb() + }) + } + x.lang.ua(Cc, oc, "Polygon"); + x.extend(Cc.prototype, { + he: function(a, b) { + this.so = oc.jx(a).slice(0); + var c = oc.jx(a).slice(0); + 1 < c.length && c.push(new H(c[0].lng, c[0].lat)); + oc.prototype.he.call(this, c, b) + }, + hn: function(a, b) { + this.so[a] && (this.so[a] = new H(b.lng, b.lat), this.ia[a] = new H(b.lng, b.lat), 0 == a && !this.ia[0].nb(this.ia[this.ia.length - 1]) && (this.ia[this.ia.length - 1] = new H(b.lng, b.lat)), this.Eh()) + }, + qe: function() { + var a = this.so; + 0 == a.length && (a = this.ia); + return a + } + }); + function Dc(a, b) { + oc.call(this, b); + this.Kr(a); + var c = this; + I.load("poly", + function() { + c.yb() + }) + } + x.lang.ua(Dc, oc, "Polyline"); + function Ec(a, b, c) { + this.point = a; + this.xa = Math.abs(b); + Cc.call(this, [], c) + } + Ec.PE = [0.01, 1.0E-4, 1.0E-5, 4.0E-6]; + x.lang.ua(Ec, Cc, "Circle"); + x.extend(Ec.prototype, { + initialize: function(a) { + this.map = a; + this.ia = this.gv(this.point, this.xa); + this.Eh(); + return p + }, + Ka: u("point"), + Wf: function(a) { + a && (this.point = a) + }, + yL: u("xa"), + vf: function(a) { + this.xa = Math.abs(a) + }, + gv: function(a, b) { + if (!a || !b || !this.map) return []; + for (var c = [], d = b / 6378800, e = Math.PI / 180 * a.lat, f = Math.PI / 180 * a.lng, g = 0; 360 > g; g += 9) { + var i = Math.PI / 180 * g, + k = Math.asin(Math.sin(e) * Math.cos(d) + Math.cos(e) * Math.sin(d) * Math.cos(i)), + i = new H(((f - Math.atan2(Math.sin(i) * Math.sin(d) * Math.cos(e), Math.cos(d) - Math.sin(e) * Math.sin(k)) + Math.PI) % (2 * Math.PI) - Math.PI) * (180 / Math.PI), k * (180 / Math.PI)); + c.push(i) + } + d = c[0]; + c.push(new H(d.lng, d.lat)); + return c + } + }); + var Fc = {}; + function Gc(a) { + this.map = a; + this.Mm = []; + this.Xf = []; + this.Cg = []; + this.mV = 300; + this.ZE = 0; + this.vg = {}; + this.dj = {}; + this.qh = 0; + this.mE = o; + this.xK = {}; + this.bo = this.Nn(1); + this.ld = this.Nn(2); + this.wl = this.Nn(3); + a.platform.appendChild(this.bo); + a.platform.appendChild(this.ld); + a.platform.appendChild(this.wl); + var b = 256 * Math.pow(2, 15), + c = 3 * b, + a = R.zb(new H(180, 0)).lng, + c = c - a, + b = -3 * b, + d = R.zb(new H( - 180, 0)).lng; + this.jI = a; + this.kI = d; + this.NA = c + (d - b); + this.lI = a - d + } + z.Ue(function(a) { + var b = new Gc(a); + b.ra(); + a.cb = b + }); + x.extend(Gc.prototype, { + ra: function() { + var a = this, + b = a.map; + b.addEventListener("loadcode", + function() { + a.Sx() + }); + b.addEventListener("addtilelayer", + function(b) { + a.Wg(b) + }); + b.addEventListener("removetilelayer", + function(b) { + a.xh(b) + }); + b.addEventListener("setmaptype", + function(b) { + a.Ag(b) + }); + b.addEventListener("zoomstartcode", + function(b) { + a.Jc(b) + }); + b.addEventListener("setcustomstyles", + function(b) { + a.St(b.target); + a.Uf(o) + }) + }, + Sx: function() { + var a = this; + if (x.da.la) try { + document.execCommand("BackgroundImageCache", q, o) + } catch(b) {} + this.loaded || a.Ix(); + a.Uf(); + this.loaded || (this.loaded = o, I.load("tile", + function() { + a.WP() + })) + }, + Ix: function() { + for (var a = this.map.pa().lr, b = 0; b < a.length; b++) { + var c = new Hc; + x.extend(c, a[b]); + this.Mm.push(c); + c.ra(this.map, this.bo) + } + this.St() + }, + Nn: function(a) { + var b = M("div"); + b.style.position = "absolute"; + b.style.overflow = "visible"; + b.style.left = b.style.top = "0"; + b.style.zIndex = a; + return b + }, + yf: function() { + this.qh--; + var a = this; + this.mE && (this.map.dispatchEvent(new O("onfirsttileloaded")), this.mE = q); + 0 == this.qh && (this.Li && (clearTimeout(this.Li), this.Li = p), this.Li = setTimeout(function() { + if (a.qh == 0) { + a.map.dispatchEvent(new O("ontilesloaded")); + a.mE = o + } + a.Li = p + }, + 80)) + }, + WD: function(a, b) { + return "TILE-" + b.ba + "-" + a[0] + "-" + a[1] + "-" + a[2] + }, + Fx: function(a) { + var b = a.Hb; + b && xb(b) && b.parentNode.removeChild(b); + delete this.vg[a.name]; + a.loaded || (Ic(a), a.Hb = p, a.Pm = p) + }, + zm: function(a, b, c) { + var d = this.map, + e = d.pa(), + f = d.Oa, + g = d.mc, + i = e.Bc(f), + k = this.nL(), + l = k[0], + m = k[1], + n = k[2], + t = k[3], + v = k[4], + c = "undefined" != typeof c ? c: 0, + e = e.k.Pb, + k = d.ba.replace(/^TANGRAM_/, ""); + for (this.Qc ? this.Qc.length = 0 : this.Qc = []; l < n; l++) for (var w = m; w < t; w++) { + var y = l, + C = w; + this.Qc.push([y, C]); + y = k + "_" + b + "_" + y + "_" + C + "_" + f; + this.xK[y] = y + } + this.Qc.sort(function(a) { + return function(b, c) { + return 0.4 * Math.abs(b[0] - a[0]) + 0.6 * Math.abs(b[1] - a[1]) - (0.4 * Math.abs(c[0] - a[0]) + 0.6 * Math.abs(c[1] - a[1])) + } + } ([v[0] - 1, v[1] - 1])); + g = [Math.round( - g.lng / i), Math.round(g.lat / i)]; + l = -d.offsetY + d.height / 2; + a.style.left = -d.offsetX + d.width / 2 + "px"; + a.style.top = l + "px"; + this.Me ? this.Me.length = 0 : this.Me = []; + l = 0; + for (d = a.childNodes.length; l < d; l++) w = a.childNodes[l], + w.hr = q, + this.Me.push(w); + if (l = this.Sm) for (var A in l) delete l[A]; + else this.Sm = {}; + this.Ne ? this.Ne.length = 0 : this.Ne = []; + l = 0; + for (d = this.Qc.length; l < d; l++) { + A = this.Qc[l][0]; + i = this.Qc[l][1]; + w = 0; + for (m = this.Me.length; w < m; w++) if (n = this.Me[w], n.id == k + "_" + b + "_" + A + "_" + i + "_" + f) { + n.hr = o; + this.Sm[n.id] = n; + break + } + } + l = 0; + for (d = this.Me.length; l < d; l++) n = this.Me[l], + n.hr || this.Ne.push(n); + this.nn = []; + w = (e + c) * this.map.K.devicePixelRatio; + l = 0; + for (d = this.Qc.length; l < d; l++) A = this.Qc[l][0], + i = this.Qc[l][1], + t = A * e + g[0] - c / 2, + v = ( - 1 - i) * e + g[1] - c / 2, + y = k + "_" + b + "_" + A + "_" + i + "_" + f, + m = this.Sm[y], + n = p, + m ? (n = m.style, n.left = t + "px", n.top = v + "px", m.Ze || this.nn.push([A, i, m])) : (0 < this.Ne.length ? (m = this.Ne.shift(), m.getContext("2d").clearRect( - c / 2, -c / 2, w, w), n = m.style) : (m = document.createElement("canvas"), n = m.style, n.position = "absolute", n.width = e + c + "px", n.height = e + c + "px", this.Nx() && (n.WebkitTransform = "scale(1.001)"), m.setAttribute("width", w), m.setAttribute("height", w), a.appendChild(m)), m.id = y, n.left = t + "px", n.top = v + "px", -1 < y.indexOf("bg") && (t = "#F3F1EC", this.map.K.Bo && (t = this.map.K.Bo), n.background = t ? t: ""), this.nn.push([A, i, m])), + m.style.visibility = ""; + l = 0; + for (d = this.Ne.length; l < d; l++) this.Ne[l].style.visibility = "hidden"; + return this.nn + }, + Nx: function() { + return /M040/i.test(navigator.userAgent) + }, + nL: function() { + var a = this.map, + b = a.pa(), + c = b.aE(a.Oa), + d = a.mc, + e = Math.ceil(d.lng / c), + f = Math.ceil(d.lat / c), + b = b.k.Pb, + c = [e, f, (d.lng - e * c) / c * b, (d.lat - f * c) / c * b]; + return [c[0] - Math.ceil((a.width / 2 - c[2]) / b), c[1] - Math.ceil((a.height / 2 - c[3]) / b), c[0] + Math.ceil((a.width / 2 + c[2]) / b), c[1] + Math.ceil((a.height / 2 + c[3]) / b), c] + }, + l_: function(a, b, c, d) { + var e = this; + e.C1 = b; + var f = this.map.pa(), + g = e.WD(a, c), + i = f.k.Pb, + b = [a[0] * i + b[0], ( - 1 - a[1]) * i + b[1]], + k = this.vg[g]; + if (this.map.pa() !== Za && this.map.pa() !== Sa) { + var l = this.Aw(a[0], a[2]).offsetX; + b[0] += l; + b.Z0 = l + } + k && k.Hb ? (vb(k.Hb, b), d && (d = new Q(a[0], a[1]), f = this.map.K.ue ? this.map.K.ue.style: "normal", d = c.getTilesUrl(d, a[2], f), k.loaded = q, Jc(k, d)), k.loaded ? this.yf() : Kc(k, + function() { + e.yf() + })) : (k = this.dj[g]) && k.Hb ? (c.Qb.insertBefore(k.Hb, c.Qb.lastChild), this.vg[g] = k, vb(k.Hb, b), d && (d = new Q(a[0], a[1]), f = this.map.K.ue ? this.map.K.ue.style: "normal", d = c.getTilesUrl(d, a[2], f), k.loaded = q, Jc(k, d)), k.loaded ? this.yf() : Kc(k, + function() { + e.yf() + })) : (k = i * Math.pow(2, f.sm() - a[2]), new H(a[0] * k, a[1] * k), d = new Q(a[0], a[1]), f = this.map.K.ue ? this.map.K.ue.style: "normal", d = c.getTilesUrl(d, a[2], f), k = new Lc(this, d, b, a, c), Kc(k, + function() { + e.yf() + }), k.ao(), this.vg[g] = k) + }, + yf: function() { + this.qh--; + var a = this; + 0 == this.qh && (this.Li && (clearTimeout(this.Li), this.Li = p), this.Li = setTimeout(function() { + if (a.qh == 0) { + a.map.dispatchEvent(new O("ontilesloaded")); + if (ua) { + if (ra && sa && ta) { + var b = ab(), + c = a.map.Bb(); + setTimeout(function() { + Ra(5030, { + load_script_time: sa - ra, + load_tiles_time: b - ta, + map_width: c.width, + map_height: c.height, + map_size: c.width * c.height + }) + }, + 1E4); + z.Dn("cus.fire", "time", { + z_imgfirstloaded: b - ta + }) + } + ua = q + } + } + a.Li = p + }, + 80)) + }, + WD: function(a, b) { + return this.map.pa() === Pa ? "TILE-" + b.ba + "-" + this.map.Fw + "-" + a[0] + "-" + a[1] + "-" + a[2] : "TILE-" + b.ba + "-" + a[0] + "-" + a[1] + "-" + a[2] + }, + Fx: function(a) { + var b = a.Hb; + b && (Mc(b), xb(b) && b.parentNode.removeChild(b)); + delete this.vg[a.name]; + a.loaded || (Mc(b), Ic(a), a.Hb = p, a.Pm = p) + }, + Aw: function(a, b) { + for (var c = 0, + d = 6 * Math.pow(2, b - 3), e = d / 2 - 1, f = -d / 2; a > e;) a -= d, + c -= this.NA; + for (; a < f;) a += d, + c += this.NA; + c = Math.round(c / Math.pow(2, 18 - b)); + return { + offsetX: c, + bs: a + } + }, + oV: function(a) { + for (var b = a.lng; b > this.jI;) b -= this.lI; + for (; b < this.kI;) b += this.lI; + a.lng = b; + return a + }, + pV: function(a, b) { + for (var c = 256 * Math.pow(2, 18 - b), d = Math.floor(this.jI / c), e = Math.floor(this.kI / c), c = Math.floor(this.NA / c), f = [], g = 0; g < a.length; g++) { + var i = a[g], + k = i[0], + i = i[1]; + if (k >= d) { + var k = k + c, + l = "id_" + k + "_" + i + "_" + b; + a[l] || (a[l] = o, f.push([k, i])) + } else k <= e && (k -= c, l = "id_" + k + "_" + i + "_" + b, a[l] || (a[l] = o, f.push([k, i]))) + } + for (g = 0; g < f.length; g++) a.push(f[g]); + return a + }, + Uf: function(a) { + var b = this; + if (b.map.pa() == Pa) I.load("coordtrans", + function() { + b.map.Wb || (b.map.Wb = Pa.sk(b.map.Yg), b.map.Fw = Pa.lL(b.map.Wb)); + b.nI() + }, + o); + else { + if (a && a) for (var c in this.dj) delete this.dj[c]; + b.nI(a) + } + }, + nI: function(a) { + var b = this.Mm.concat(this.Xf), + c = b.length, + d = this.map, + e = d.pa(), + f = d.mc; + this.map.pa() !== Za && this.map.pa() !== Sa && (f = this.oV(f)); + for (var g = 0; g < c; g++) { + var i = b[g]; + if (i.gc && d.Oa < i.gc) break; + if (i.yw) { + var k = this.Qb = i.Qb; + if (a) { + var l = k; + if (l && l.childNodes) for (var m = l.childNodes.length, + n = m - 1; 0 <= n; n--) m = l.childNodes[n], + l.removeChild(m), + m = p + } + if (this.map.Vb()) { + this.ld.style.display = "block"; + k.style.display = "none"; + this.map.dispatchEvent(new O("vectorchanged"), { + isvector: o + }); + continue + } else k.style.display = "block", + this.ld.style.display = "none", + this.map.dispatchEvent(new O("vectorchanged"), { + isvector: q + }) + } + if (!i.aI && !(i.pp && !this.map.Vb() || i.kM && this.map.Vb())) { + d = this.map; + e = d.pa(); + k = e.dp(); + m = d.Oa; + f = d.mc; + e == Pa && f.nb(new H(0, 0)) && (f = d.mc = k.Lm(d.gf, d.Wb)); + var t = e.Bc(m), + k = e.aE(m), + l = Math.ceil(f.lng / k), + v = Math.ceil(f.lat / k), + w = e.k.Pb, + k = [l, v, (f.lng - l * k) / k * w, (f.lat - v * k) / k * w], + n = k[0] - Math.ceil((d.width / 2 - k[2]) / w), + l = k[1] - Math.ceil((d.height / 2 - k[3]) / w), + v = k[0] + Math.ceil((d.width / 2 + k[2]) / w), + y = 0; + e === Pa && 15 == d.fa() && (y = 1); + e = k[1] + Math.ceil((d.height / 2 + k[3]) / w) + y; + this.SJ = new H(f.lng, f.lat); + var C = this.vg, + w = -this.SJ.lng / t, + y = this.SJ.lat / t, + t = [Math.ceil(w), Math.ceil(y)], + f = d.fa(), + A; + for (A in C) { + var D = C[A], + B = D.info; (B[2] != f || B[2] == f && (n > B[0] || v <= B[0] || l > B[1] || e <= B[1])) && this.Fx(D) + } + C = -d.offsetX + d.width / 2; + D = -d.offsetY + d.height / 2; + i.Qb && (i.Qb.style.left = Math.ceil(w + C) - t[0] + "px", i.Qb.style.top = Math.ceil(y + D) - t[1] + "px", i.Qb.style.WebkitTransform = "translate3d(0,0,0)"); + w = []; + for (d.KB = []; n < v; n++) for (y = l; y < e; y++) w.push([n, y]), + d.KB.push({ + x: n, + y: y + }); + this.map.pa() !== Za && this.map.pa() !== Sa && (w = this.pV(w, m)); + w.sort(function(a) { + return function(b, c) { + return 0.4 * Math.abs(b[0] - a[0]) + 0.6 * Math.abs(b[1] - a[1]) - (0.4 * Math.abs(c[0] - a[0]) + 0.6 * Math.abs(c[1] - a[1])) + } + } ([k[0] - 1, k[1] - 1])); + m = w.length; + this.qh += m; + for (n = 0; n < m; n++) this.l_([w[n][0], w[n][1], f], t, i, a) + } + } + }, + Wg: function(a) { + var b = this, + c = a.target, + a = b.map.Vb(); + if (c instanceof cb) a && !c.Hm && (c.ra(this.map, this.ld), c.Hm = o); + else if (c.Ch && this.map.Wg(c.Ch), c.pp) { + for (a = 0; a < b.Cg.length; a++) if (b.Cg[a] == c) return; + I.load("vector", + function() { + c.ra(b.map, b.ld); + b.Cg.push(c) + }, + o) + } else { + for (a = 0; a < b.Xf.length; a++) if (b.Xf[a] == c) return; + c.ra(this.map, this.wl); + b.Xf.push(c) + } + }, + xh: function(a) { + var a = a.target, + b = this.map.Vb(); + if (a instanceof cb) b && a.Hm && (a.remove(), a.Hm = q); + else { + a.Ch && this.map.xh(a.Ch); + if (a.pp) for (var b = 0, + c = this.Cg.length; b < c; b++) a == this.Cg[b] && this.Cg.splice(b, 1); + else { + b = 0; + for (c = this.Xf.length; b < c; b++) a == this.Xf[b] && this.Xf.splice(b, 1) + } + a.remove() + } + }, + Ag: function() { + for (var a = this.Mm, + b = 0, + c = a.length; b < c; b++) a[b].remove(); + delete this.Qb; + this.Mm = []; + this.dj = this.vg = {}; + this.Ix(); + this.Uf() + }, + Jc: function() { + var a = this; + a.td && x.D.U(a.td); + setTimeout(function() { + a.Uf(); + a.map.dispatchEvent(new O("onzoomend")) + }, + 10) + }, + E4: s(), + St: function(a) { + var b = this.map.pa(); + if (!this.map.Vb() && (a ? this.map.K.t_ = a: a = this.map.K.t_, a)) for (var c = p, + c = "2" == z.Oy ? [z.url.proto + z.url.domain.main_domain_cdn.other[0] + "/"] : [z.url.proto + z.url.domain.main_domain_cdn.baidu[0] + "/", z.url.proto + z.url.domain.main_domain_cdn.baidu[1] + "/", z.url.proto + z.url.domain.main_domain_cdn.baidu[2] + "/"], d = 0, e; e = this.Mm[d]; d++) if (e.g_ == o) { + b.k.$b = 18; + e.getTilesUrl = function(b, d) { + var e = b.x, + e = this.map.cb.Aw(e, d).bs, + k = b.y, + l = Rb("normal"), + m = 1; + this.map.Gx() && (m = 2); + l = "customimage/tile?&x=" + e + "&y=" + k + "&z=" + d + "&udt=" + l + "&scale=" + m + "&ak=" + qa; + l = a.styleStr ? l + ("&styles=" + encodeURIComponent(a.styleStr)) : l + ("&customid=" + a.style); + return c[Math.abs(e + k) % c.length] + l + }; + break + } + } + }); + function Lc(a, b, c, d, e) { + this.Pm = a; + this.position = c; + this.Su = []; + this.name = a.WD(d, e); + this.info = d; + this.qJ = e.ot(); + d = M("img"); + wb(d); + d.eL = q; + var f = d.style, + a = a.map.pa(); + f.position = "absolute"; + f.border = "none"; + f.width = a.k.Pb + "px"; + f.height = a.k.Pb + "px"; + f.left = c[0] + "px"; + f.top = c[1] + "px"; + f.maxWidth = "none"; + this.Hb = d; + this.src = b; + Oc && (this.Hb.style.opacity = 0); + var g = this; + this.Hb.onload = function() { + z.BY.IQ(); + g.loaded = o; + if (g.Pm) { + var a = g.Pm, + b = a.dj; + if (!b[g.name]) { + a.ZE++; + b[g.name] = g + } + if (g.Hb && !xb(g.Hb) && e.Qb) { + e.Qb.appendChild(g.Hb); + if (x.da.la <= 6 && x.da.la > 0 && g.qJ) g.Hb.style.cssText = g.Hb.style.cssText + (';filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + g.src + '",sizingMethod=scale);') + } + var c = a.ZE - a.mV, + d; + for (d in b) { + if (c <= 0) break; + if (!a.vg[d]) { + b[d].Pm = p; + var f = b[d].Hb; + if (f && f.parentNode) { + f.parentNode.removeChild(f); + Mc(f) + } + f = p; + b[d].Hb = p; + delete b[d]; + a.ZE--; + c-- + } + } + Oc && new rb({ + Gc: 20, + duration: 200, + va: function(a) { + if (g.Hb && g.Hb.style) g.Hb.style.opacity = a * 1 + }, + finish: function() { + g.Hb && g.Hb.style && delete g.Hb.style.opacity + } + }); + Ic(g) + } + }; + this.Hb.onerror = function() { + Ic(g); + if (g.Pm) { + var a = g.Pm.map.pa(); + if (a.k.lD) { + g.error = o; + g.Hb.src = a.k.lD; + g.Hb && !xb(g.Hb) && e.Qb.appendChild(g.Hb) + } + } + }; + d = p + } + function Kc(a, b) { + a.Su.push(b) + } + Lc.prototype.ao = function() { + this.Hb.src = 0 < x.da.la && 6 >= x.da.la && this.qJ ? E.qa + "blank.gif": "" !== this.src && this.Hb.src == this.src ? this.src + "&t = " + Date.now() : this.src + }; + function Ic(a) { + for (var b = 0; b < a.Su.length; b++) a.Su[b](); + a.Su.length = 0 + } + function Mc(a) { + if (a) { + a.onload = a.onerror = p; + var b = a.attributes, + c, d, e; + if (b) { + d = b.length; + for (c = 0; c < d; c += 1) e = b[c].name, + Ya(a[e]) && (a[e] = p) + } + if (b = a.children) { + d = b.length; + for (c = 0; c < d; c += 1) Mc(a.children[c]) + } + } + } + function Jc(a, b) { + a.src = b; + a.ao() + } + var Oc = !x.da.la || 8 < x.da.la; + function Hc(a) { + this.rh = a || {}; + this.JV = this.rh.copyright || p; + this.S_ = this.rh.transparentPng || q; + this.yw = this.rh.baseLayer || q; + this.zIndex = this.rh.zIndex || 0; + this.ba = Hc.wS++ + } + Hc.wS = 0; + x.lang.ua(Hc, x.lang.Ca, "TileLayer"); + x.extend(Hc.prototype, { + ra: function(a, b) { + this.yw && (this.zIndex = -100); + this.map = a; + if (!this.Qb) { + var c = M("div"), + d = c.style; + d.position = "absolute"; + d.overflow = "visible"; + d.zIndex = this.zIndex; + d.left = Math.ceil( - a.offsetX + a.width / 2) + "px"; + d.top = Math.ceil( - a.offsetY + a.height / 2) + "px"; + b.appendChild(c); + this.Qb = c + } + }, + remove: function() { + this.Qb && this.Qb.parentNode && (this.Qb.innerHTML = "", this.Qb.parentNode.removeChild(this.Qb)); + delete this.Qb + }, + ot: u("S_"), + getTilesUrl: function(a, b) { + if (this.map.pa() !== Za && this.map.pa() !== Sa) var c = this.map.cb.Aw(a.x, b).bs; + var d = ""; + this.rh.tileUrlTemplate && (d = this.rh.tileUrlTemplate.replace(/\{X\}/, c), d = d.replace(/\{Y\}/, a.y), d = d.replace(/\{Z\}/, b)); + return d + }, + pm: u("JV"), + pa: function() { + return this.Ib || Ma + } + }); + function Pc(a, b) { + Gb(a) ? b = a || {}: (b = b || {}, + b.databoxId = a); + this.k = { + yK: b.databoxId, + dh: b.geotableId, + Ym: b.q || "", + iu: b.tags || "", + filter: b.filter || "", + Hy: b.sortby || "", + r_: b.styleId || "", + Tl: b.ak || qa, + vw: b.age || 36E5, + zIndex: 11, + xY: "VectorCloudLayer", + Ak: b.hotspotName || "vector_md_" + (1E5 * Math.random()).toFixed(0), + UU: "LBS\u4e91\u9ebb\u70b9\u5c42" + }; + this.pp = o; + Hc.call(this, this.k); + this.bW = z.wc + "geosearch/detail/"; + this.cW = z.wc + "geosearch/v2/detail/"; + this.kp = {} + } + x.ua(Pc, Hc, "VectorCloudLayer"); + function Qc(a) { + a = a || {}; + this.k = x.extend(a, { + zIndex: 1, + xY: "VectorTrafficLayer", + UU: "\u77e2\u91cf\u8def\u51b5\u5c42" + }); + this.pp = o; + Hc.call(this, this.k); + this.O_ = z.url.proto + z.url.domain.vector_traffic + "/gvd/?qt=lgvd&styles=pl&layers=tf"; + this.Fb = { + "0": [2, 1354709503, 2, 2, 0, [], 0, 0], + 1 : [2, 1354709503, 3, 2, 0, [], 0, 0], + 10 : [2, -231722753, 2, 2, 0, [], 0, 0], + 11 : [2, -231722753, 3, 2, 0, [], 0, 0], + 12 : [2, -231722753, 4, 2, 0, [], 0, 0], + 13 : [2, -231722753, 5, 2, 0, [], 0, 0], + 14 : [2, -231722753, 6, 2, 0, [], 0, 0], + 15 : [2, -1, 4, 0, 0, [], 0, 0], + 16 : [2, -1, 5.5, 0, 0, [], 0, 0], + 17 : [2, -1, 7, 0, 0, [], 0, 0], + 18 : [2, -1, 8.5, 0, 0, [], 0, 0], + 19 : [2, -1, 10, 0, 0, [], 0, 0], + 2 : [2, 1354709503, 4, 2, 0, [], 0, 0], + 3 : [2, 1354709503, 5, 2, 0, [], 0, 0], + 4 : [2, 1354709503, 6, 2, 0, [], 0, 0], + 5 : [2, -6350337, 2, 2, 0, [], 0, 0], + 6 : [2, -6350337, 3, 2, 0, [], 0, 0], + 7 : [2, -6350337, 4, 2, 0, [], 0, 0], + 8 : [2, -6350337, 5, 2, 0, [], 0, 0], + 9 : [2, -6350337, 6, 2, 0, [], 0, 0] + } + } + x.ua(Qc, Hc, "VectorTrafficLayer"); + function cb(a) { + this.nV = [z.url.proto + z.url.domain.TILE_ONLINE_URLS[1] + "/gvd/?", z.url.proto + z.url.domain.TILE_ONLINE_URLS[2] + "/gvd/?", z.url.proto + z.url.domain.TILE_ONLINE_URLS[3] + "/gvd/?", z.url.proto + z.url.domain.TILE_ONLINE_URLS[4] + "/gvd/?"]; + this.k = { + $K: q + }; + for (var b in a) this.k[b] = a[b]; + this.Yh = this.Ih = this.Xa = this.B = this.C = p; + this.pM = 0; + var c = this; + I.load("vector", + function() { + c.Ae() + }) + } + x.extend(cb.prototype, { + ra: function(a, b) { + this.C = a; + this.B = b + }, + remove: function() { + this.B = this.C = p + } + }); + function Rc(a) { + Hc.call(this, a); + this.k = a || {}; + this.kM = o; + if (this.k.predictDate) { + if (1 > this.k.predictDate.weekday || 7 < this.k.predictDate.weekday) this.k.predictDate = 1; + if (0 > this.k.predictDate.hour || 23 < this.k.predictDate.hour) this.k.predictDate.hour = 0 + } + this.xU = z.url.proto + z.url.domain.traffic + "/traffic/" + } + Rc.prototype = new Hc; + Rc.prototype.ra = function(a, b) { + Hc.prototype.ra.call(this, a, b); + this.C = a + }; + Rc.prototype.ot = ca(o); + Rc.prototype.getTilesUrl = function(a, b) { + var c = ""; + this.k.predictDate ? c = "HistoryService?day=" + (this.k.predictDate.weekday - 1) + "&hour=" + this.k.predictDate.hour + "&t=" + (new Date).getTime() + "&": (c = "TrafficTileService?time=" + (new Date).getTime() + "&", c += "label=web2D&v=016&"); + var c = this.xU + c + "level=" + b + "&x=" + a.x + "&y=" + a.y, + d = 1; + this.C.Gx() && (d = 2); + return (c + "&scaler=" + d).replace(/-(\d+)/gi, "M$1") + }; + var Sc = [z.url.proto + z.url.domain.TILES_YUN_HOST[0] + "/georender/gss", z.url.proto + z.url.domain.TILES_YUN_HOST[1] + "/georender/gss", z.url.proto + z.url.domain.TILES_YUN_HOST[2] + "/georender/gss", z.url.proto + z.url.domain.TILES_YUN_HOST[3] + "/georender/gss"], + Tc = z.url.proto + z.url.domain.main_domain_nocdn.baidu + "/style/poi/rangestyle", + Uc = 100; + function mb(a, b) { + Hc.call(this); + var c = this; + this.kM = o; + var d = q; + try { + document.createElement("canvas").getContext("2d"), + d = o + } catch(e) { + d = q + } + d && (this.Ch = new Pc(a, b), this.Ch.HF = this); + Gb(a) ? b = a || {}: (c.Qn = a, b = b || {}); + b.geotableId && (c.Af = b.geotableId); + b.databoxId && (c.Qn = b.databoxId); + d = z.wc + "geosearch"; + c.pc = { + uN: b.pointDensity || Uc, + WX: d + "/detail/", + XX: d + "/v2/detail/", + vw: b.age || 36E5, + Ym: b.q || "", + B_: "png", + b3: [5, 5, 5, 5], + wY: { + backgroundColor: "#FFFFD5", + borderColor: "#808080" + }, + Tl: b.ak || qa, + iu: b.tags || "", + filter: b.filter || "", + Hy: b.sortby || "", + Ak: b.hotspotName || "tile_md_" + (1E5 * Math.random()).toFixed(0), + QF: o + }; + I.load("clayer", + function() { + c.Qd() + }) + } + mb.prototype = new Hc; + mb.prototype.ra = function(a, b) { + Hc.prototype.ra.call(this, a, b); + this.C = a + }; + mb.prototype.getTilesUrl = function(a, b) { + var c = a.x, + d = a.y, + e = this.pc, + c = Sc[Math.abs(c + d) % Sc.length] + "/image?grids=" + c + "_" + d + "_" + b + "&q=" + e.Ym + "&tags=" + e.iu + "&filter=" + e.filter + "&sortby=" + e.Hy + "&ak=" + this.pc.Tl + "&age=" + e.vw + "&page_size=" + e.uN + "&format=" + e.B_; + e.QF || (e = (1E5 * Math.random()).toFixed(0), c += "&timeStamp=" + e); + this.Af ? c += "&geotable_id=" + this.Af: this.Qn && (c += "&databox_id=" + this.Qn); + return c + }; + mb.prototype.enableUseCache = function() { + this.pc.QF = o + }; + mb.prototype.disableUseCache = function() { + this.pc.QF = q + }; + mb.VT = /^point\(|\)$/ig; + mb.WT = /\s+/; + mb.YT = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; + function Vc(a, b, c) { + this.cf = a; + this.lr = b instanceof Hc ? [b] : b.slice(0); + c = c || {}; + this.k = { + C_: c.tips || "", + yE: "", + gc: c.minZoom || 3, + $b: c.maxZoom || 18, + a3: c.minZoom || 3, + Z2: c.maxZoom || 18, + Pb: 256, + FF: c.textColor || "black", + lD: c.errorImageUrl || "", + xe: c.projection || new R + }; + 1 <= this.lr.length && (this.lr[0].yw = o); + x.extend(this.k, c) + } + x.extend(Vc.prototype, { + getName: u("cf"), + $s: function() { + return this.k.C_ + }, + F2: function() { + return this.k.yE + }, + JX: function() { + return this.lr[0] + }, + T2: u("lr"), + KX: function() { + return this.k.Pb + }, + Zo: function() { + return this.k.gc + }, + sm: function() { + return this.k.$b + }, + setMaxZoom: function(a) { + this.k.$b = a + }, + ym: function() { + return this.k.FF + }, + dp: function() { + return this.k.xe + }, + w2: function() { + return this.k.lD + }, + KX: function() { + return this.k.Pb + }, + Bc: function(a) { + return Math.pow(2, 18 - a) + }, + aE: function(a) { + return this.Bc(a) * this.k.Pb + } + }); + var Wc = [z.url.proto + z.url.domain.TILE_BASE_URLS[0] + "/it/", z.url.proto + z.url.domain.TILE_BASE_URLS[1] + "/it/", z.url.proto + z.url.domain.TILE_BASE_URLS[2] + "/it/", z.url.proto + z.url.domain.TILE_BASE_URLS[3] + "/it/", z.url.proto + z.url.domain.TILE_BASE_URLS[4] + "/it/"], + Xc = [z.url.proto + z.url.domain.TILE_ONLINE_URLS[0] + "/tile/", z.url.proto + z.url.domain.TILE_ONLINE_URLS[1] + "/tile/", z.url.proto + z.url.domain.TILE_ONLINE_URLS[2] + "/tile/", z.url.proto + z.url.domain.TILE_ONLINE_URLS[3] + "/tile/", z.url.proto + z.url.domain.TILE_ONLINE_URLS[4] + "/tile/"], + Yc = { + dark: "dl", + light: "ll", + normal: "pl" + }, + Zc = new Hc; + Zc.g_ = o; + Zc.getTilesUrl = function(a, b, c) { + var d = a.x, + a = a.y, + e = Rb("normal"), + f = 1, + c = Yc[c]; + this.map.Gx() && (f = 2); + d = this.map.cb.Aw(d, b).bs; + return (Xc[Math.abs(d + a) % Xc.length] + "?qt=tile&x=" + (d + "").replace(/-/gi, "M") + "&y=" + (a + "").replace(/-/gi, "M") + "&z=" + b + "&styles=" + c + "&scaler=" + f + (6 == x.da.la ? "&color_dep=32&colors=50": "") + "&udt=" + e).replace(/-(\d+)/gi, "M$1") + }; + var Ma = new Vc("\u5730\u56fe", Zc, { + tips: "\u663e\u793a\u666e\u901a\u5730\u56fe", + maxZoom: 19 + }), + $c = new Hc; + $c.pO = [z.url.proto + z.url.domain.TIlE_PERSPECT_URLS[0] + "/resource/mappic/", z.url.proto + z.url.domain.TIlE_PERSPECT_URLS[1] + "/resource/mappic/", z.url.proto + z.url.domain.TIlE_PERSPECT_URLS[2] + "/resource/mappic/", z.url.proto + z.url.domain.TIlE_PERSPECT_URLS[3] + "/resource/mappic/"]; + $c.getTilesUrl = function(a, b) { + var c = a.x, + d = a.y, + e = 256 * Math.pow(2, 20 - b), + d = Math.round((9998336 - e * d) / e) - 1; + return url = this.pO[Math.abs(c + d) % this.pO.length] + this.map.Wb + "/" + this.map.Fw + "/3/lv" + (21 - b) + "/" + c + "," + d + ".jpg" + }; + var Pa = new Vc("\u4e09\u7ef4", $c, { + tips: "\u663e\u793a\u4e09\u7ef4\u5730\u56fe", + minZoom: 15, + maxZoom: 20, + textColor: "white", + projection: new gb + }); + Pa.Bc = function(a) { + return Math.pow(2, 20 - a) + }; + Pa.sk = function(a) { + if (!a) return ""; + var b = E.fC, + c; + for (c in b) if ( - 1 < a.search(c)) return b[c].ky; + return "" + }; + Pa.lL = function(a) { + return { + bj: 2, + gz: 1, + sz: 14, + sh: 4 + } [a] + }; + var ad = new Hc({ + yw: o + }); + ad.getTilesUrl = function(a, b) { + var c = a.x, + d = a.y; + return (Wc[Math.abs(c + d) % Wc.length] + "u=x=" + c + ";y=" + d + ";z=" + b + ";v=009;type=sate&fm=46&udt=" + Rb("satellite")).replace(/-(\d+)/gi, "M$1") + }; + var Za = new Vc("\u536b\u661f", ad, { + tips: "\u663e\u793a\u536b\u661f\u5f71\u50cf", + minZoom: 1, + maxZoom: 19, + textColor: "white" + }), + bd = new Hc({ + transparentPng: o + }); + bd.getTilesUrl = function(a, b) { + var c = a.x, + d = a.y, + e = Rb("satelliteStreet"); + return (Xc[Math.abs(c + d) % Xc.length] + "?qt=tile&x=" + (c + "").replace(/-/gi, "M") + "&y=" + (d + "").replace(/-/gi, "M") + "&z=" + b + "&styles=sl" + (6 == x.da.la ? "&color_dep=32&colors=50": "") + "&udt=" + e).replace(/-(\d+)/gi, "M$1") + }; + var Sa = new Vc("\u6df7\u5408", [ad, bd], { + tips: "\u663e\u793a\u5e26\u6709\u8857\u9053\u7684\u536b\u661f\u5f71\u50cf", + labelText: "\u8def\u7f51", + minZoom: 1, + maxZoom: 19, + textColor: "white" + }); + var cd = 1, + U = {}; + window.o0 = U; + function V(a, b) { + x.lang.Ca.call(this); + this.yd = {}; + this.gn(a); + b = b || {}; + b.ka = b.renderOptions || {}; + this.k = { + ka: { + Ha: b.ka.panel || p, + map: b.ka.map || p, + Xg: b.ka.autoViewport || o, + Nt: b.ka.selectFirstResult, + dt: b.ka.highlightMode, + Yb: b.ka.enableDragging || q + }, + dy: b.onSearchComplete || s(), + gN: b.onMarkersSet || s(), + fN: b.onInfoHtmlSet || s(), + iN: b.onResultsHtmlSet || s(), + eN: b.onGetBusListComplete || s(), + dN: b.onGetBusLineComplete || s(), + bN: b.onBusListHtmlSet || s(), + aN: b.onBusLineHtmlSet || s(), + ME: b.onPolylinesSet || s(), + Dp: b.reqFrom || "" + }; + this.k.ka.Xg = "undefined" != typeof b && "undefined" != typeof b.renderOptions && "undefined" != typeof b.renderOptions.autoViewport ? b.renderOptions.autoViewport: o; + this.k.ka.Ha = x.Dc(this.k.ka.Ha) + } + x.ua(V, x.lang.Ca); + x.extend(V.prototype, { + getResults: function() { + return this.Fc ? this.Ii: this.ja + }, + enableAutoViewport: function() { + this.k.ka.Xg = o + }, + disableAutoViewport: function() { + this.k.ka.Xg = q + }, + gn: function(a) { + a && (this.yd.src = a) + }, + vF: function(a) { + this.k.dy = a || s() + }, + setMarkersSetCallback: function(a) { + this.k.gN = a || s() + }, + setPolylinesSetCallback: function(a) { + this.k.ME = a || s() + }, + setInfoHtmlSetCallback: function(a) { + this.k.fN = a || s() + }, + setResultsHtmlSetCallback: function(a) { + this.k.iN = a || s() + }, + wm: u("Bd") + }); + var dd = { + uG: z.wc, + bb: function(a, b, c, d, e) { + this.lZ(b); + var f = (1E5 * Math.random()).toFixed(0); + z._rd["_cbk" + f] = function(b) { + b.result && b.result.error && 202 === b.result.error ? alert("\u8be5AK\u56e0\u4e3a\u6076\u610f\u884c\u4e3a\u5df2\u7ecf\u88ab\u7ba1\u7406\u5458\u5c01\u7981\uff01") : (c = c || {}, + a && a(b, c), delete z._rd["_cbk" + f]) + }; + d = d || ""; + b = c && c.HO ? Db(b, encodeURI) : Db(b, encodeURIComponent); + this.uG = c && c.Is ? c.FN ? c.FN: z.up: z.wc; + d = this.uG + d + "?" + b + "&ie=utf-8&oue=1&fromproduct=jsapi"; + e || (d += "&res=api"); + d = d + ("&callback=BMap._rd._cbk" + f) + ("&ak=" + qa); + pa(d) + }, + lZ: function(a) { + if (a.qt) { + var b = ""; + switch (a.qt) { + case "bt": + b = "z_qt|bt"; + break; + case "nav": + b = "z_qt|nav"; + break; + case "walk": + b = "z_qt|walk"; + break; + case "bse": + b = "z_qt|bse"; + break; + case "nse": + b = "z_qt|nse"; + break; + case "drag": + b = "z_qt|drag"; + break; + case "s": + b = "z_qt|s"; + break; + case "ext": + b = "z_qt|ext"; + break; + case "gc": + b = "z_qt|gc"; + break; + case "rgc": + b = "z_qt|rgc"; + break; + case "bl": + b = "z_qt|bl"; + break; + case "bsl": + b = "z_qt|bsl"; + break; + case "con": + b = "z_qt|con"; + break; + case "bd": + b = "z_qt|bd"; + break; + case "nb": + b = "z_qt|nb"; + break; + case "bda": + b = "z_qt|bda"; + break; + case "sa": + b = "z_qt|sa"; + break; + case "nba": + b = "z_qt|nba"; + break; + case "dec": + b = "z_qt|dec" + } + "" !== b && z.alog("cus.fire", "count", b) + } + } + }; + window.A0 = dd; + z._rd = {}; + var P = {}; + window.z0 = P; + P.BN = function(a) { + a = a.replace(/<\/?[^>]*>/g, ""); + return a = a.replace(/[ | ]* /g, " ") + }; + P.bZ = function(a) { + return a.replace(/([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0|[1-9]\d*),([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0|[1-9]\d*)(,)/g, "$1,$2;") + }; + P.cZ = function(a, b) { + return a.replace(RegExp("(((-?\\d+)(\\.\\d+)?),((-?\\d+)(\\.\\d+)?);)(((-?\\d+)(\\.\\d+)?),((-?\\d+)(\\.\\d+)?);){" + b + "}", "ig"), "$1") + }; + var ed = 2, + id = 3, + jd = 0, + kd = "bt", + ld = "nav", + md = "walk", + nd = "bl", + od = "bsl", + pd = 14, + qd = 15, + rd = 18, + sd = 20, + td = 31; + z.I = window.Instance = x.lang.Kc; + function ud(a, b, c) { + x.lang.Ca.call(this); + if (a) { + this.Va = "object" == typeof a ? a: x.Dc(a); + this.page = 1; + this.Jd = 100; + this.TJ = "pg"; + this.Vf = 4; + this.aK = b; + this.update = o; + a = { + page: 1, + We: 100, + Jd: 100, + Vf: 4, + TJ: "pg", + update: o + }; + c || (c = a); + for (var d in c)"undefined" != typeof c[d] && (this[d] = c[d]); + this.va() + } + } + x.extend(ud.prototype, { + va: function() { + this.ra() + }, + ra: function() { + this.vV(); + this.Va.innerHTML = this.RV() + }, + vV: function() { + isNaN(parseInt(this.page)) && (this.page = 1); + isNaN(parseInt(this.Jd)) && (this.Jd = 1); + 1 > this.page && (this.page = 1); + 1 > this.Jd && (this.Jd = 1); + this.page > this.Jd && (this.page = this.Jd); + this.page = parseInt(this.page); + this.Jd = parseInt(this.Jd) + }, + K2: function() { + location.search.match(RegExp("[?&]?" + this.TJ + "=([^&]*)[&$]?", "gi")); + this.page = RegExp.$1 + }, + RV: function() { + var a = [], + b = this.page - 1, + c = this.page + 1; + a.push('

            '); + if (! (1 > b)) { + if (this.page >= this.Vf) { + var d; + a.push('\u9996\u9875'.replace("{temp1}", "BMap.I('" + this.ba + "').toPage(1);")) + } + a.push('\u4e0a\u4e00\u9875'.replace("{temp2}", "BMap.I('" + this.ba + "').toPage(" + b + ");")) + } + if (this.page < this.Vf) d = 0 == this.page % this.Vf ? this.page - this.Vf - 1 : this.page - this.page % this.Vf + 1, + b = d + this.Vf - 1; + else { + d = Math.floor(this.Vf / 2); + var e = this.Vf % 2 - 1, + b = this.Jd > this.page + d ? this.page + d: this.Jd; + d = this.page - d - e + } + this.page > this.Jd - this.Vf && this.page >= this.Vf && (d = this.Jd - this.Vf + 1, b = this.Jd); + for (e = d; e <= b; e++) 0 < e && (e == this.page ? a.push('' + e + "") : 1 <= e && e <= this.Jd && (d = '[' + e + "]", a.push(d.replace("{temp3}", "BMap.I('" + this.ba + "').toPage(" + e + ");")))); + c > this.Jd || a.push('\u4e0b\u4e00\u9875'.replace("{temp4}", "BMap.I('" + this.ba + "').toPage(" + c + ");")); + a.push("

            "); + return a.join("") + }, + toPage: function(a) { + a = a ? a: 1; + "function" == typeof this.aK && (this.aK(a), this.page = a); + this.update && this.va() + } + }); + function bb(a, b) { + V.call(this, a, b); + b = b || {}; + b.renderOptions = b.renderOptions || {}; + this.Np(b.pageCapacity); + "undefined" != typeof b.renderOptions.selectFirstResult && !b.renderOptions.selectFirstResult ? this.KC() : this.gD(); + this.wa = []; + this.wf = []; + this.kb = -1; + this.Pa = []; + var c = this; + I.load("local", + function() { + c.Bz() + }, + o) + } + x.ua(bb, V, "LocalSearch"); + bb.cq = 10; + bb.w0 = 1; + bb.Cn = 100; + bb.kG = 2E3; + bb.rG = 1E5; + x.extend(bb.prototype, { + search: function(a, b) { + this.Pa.push({ + method: "search", + arguments: [a, b] + }) + }, + bn: function(a, b, c) { + this.Pa.push({ + method: "searchInBounds", + arguments: [a, b, c] + }) + }, + Jp: function(a, b, c, d) { + this.Pa.push({ + method: "searchNearby", + arguments: [a, b, c, d] + }) + }, + Oe: function() { + delete this.Fa; + delete this.Bd; + delete this.ja; + delete this.ga; + this.kb = -1; + this.sb(); + this.k.ka.Ha && (this.k.ka.Ha.innerHTML = "") + }, + Bm: s(), + gD: function() { + this.k.ka.Nt = o + }, + KC: function() { + this.k.ka.Nt = q + }, + Np: function(a) { + this.k.Ek = "number" == typeof a && !isNaN(a) ? 1 > a ? bb.cq: a > bb.Cn ? bb.cq: a: bb.cq + }, + pf: function() { + return this.k.Ek + }, + toString: ca("LocalSearch") + }); + var vd = bb.prototype; + S(vd, { + clearResults: vd.Oe, + setPageCapacity: vd.Np, + getPageCapacity: vd.pf, + gotoPage: vd.Bm, + searchNearby: vd.Jp, + searchInBounds: vd.bn, + search: vd.search, + enableFirstResultSelection: vd.gD, + disableFirstResultSelection: vd.KC + }); + function wd(a, b) { + V.call(this, a, b) + } + x.ua(wd, V, "BaseRoute"); + x.extend(wd.prototype, { + Oe: s() + }); + function xd(a, b) { + V.call(this, a, b); + b = b || {}; + this.Vt(b.policy); + this.Np(b.pageCapacity); + this.ud = kd; + this.Eu = pd; + this.Fu = cd; + this.wa = []; + this.kb = -1; + this.k.ed = b.enableTraffic || q; + this.Pa = []; + var c = this; + I.load("route", + function() { + c.Qd() + }) + } + xd.Cn = 100; + xd.mP = [0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1]; + x.ua(xd, wd, "TransitRoute"); + x.extend(xd.prototype, { + Vt: function(a) { + this.k.$c = 0 <= a && 4 >= a ? a: 0 + }, + BA: function(a, b) { + this.Pa.push({ + method: "_internalSearch", + arguments: [a, b] + }) + }, + search: function(a, b) { + this.Pa.push({ + method: "search", + arguments: [a, b] + }) + }, + Np: function(a) { + if ("string" === typeof a && (a = parseInt(a, 10), isNaN(a))) { + this.k.Ek = xd.Cn; + return + } + this.k.Ek = "number" !== typeof a ? xd.Cn: 1 <= a && a <= xd.Cn ? Math.round(a) : xd.Cn + }, + toString: ca("TransitRoute"), + jU: function(a) { + return a.replace(/\(.*\)/, "") + } + }); + var yd = xd.prototype; + S(yd, { + _internalSearch: yd.BA + }); + function zd(a, b) { + V.call(this, a, b); + this.wa = []; + this.kb = -1; + this.Pa = []; + var c = this, + d = this.k.ka; + 1 !== d.dt && 2 !== d.dt && (d.dt = 1); + this.Vz = this.k.ka.Yb ? o: q; + I.load("route", + function() { + c.Qd() + }); + this.jE && this.jE() + } + zd.AP = " \u73af\u5c9b \u65e0\u5c5e\u6027\u9053\u8def \u4e3b\u8def \u9ad8\u901f\u8fde\u63a5\u8def \u4ea4\u53c9\u70b9\u5185\u8def\u6bb5 \u8fde\u63a5\u9053\u8def \u505c\u8f66\u573a\u5185\u90e8\u9053\u8def \u670d\u52a1\u533a\u5185\u90e8\u9053\u8def \u6865 \u6b65\u884c\u8857 \u8f85\u8def \u531d\u9053 \u5168\u5c01\u95ed\u9053\u8def \u672a\u5b9a\u4e49\u4ea4\u901a\u533a\u57df POI\u8fde\u63a5\u8def \u96a7\u9053 \u6b65\u884c\u9053 \u516c\u4ea4\u4e13\u7528\u9053 \u63d0\u524d\u53f3\u8f6c\u9053".split(" "); + x.ua(zd, wd, "DWRoute"); + x.extend(zd.prototype, { + search: function(a, b, c) { + this.Pa.push({ + method: "search", + arguments: [a, b, c] + }) + } + }); + function Ad(a, b) { + zd.call(this, a, b); + b = b || {}; + this.k.ed = b.enableTraffic || q; + this.Vt(b.policy); + this.ud = ld; + this.Eu = sd; + this.Fu = id + } + x.ua(Ad, zd, "DrivingRoute"); + Ad.prototype.Vt = function(a) { + this.k.$c = 0 <= a && 2 >= a ? a: 0 + }; + function Bd(a, b) { + zd.call(this, a, b); + this.ud = md; + this.Eu = td; + this.Fu = ed; + this.Vz = q + } + x.ua(Bd, zd, "WalkingRoute"); + function Cd(a, b) { + x.lang.Ca.call(this); + this.Tf = []; + this.Vm = []; + this.k = b; + this.fc = a; + this.map = this.k.ka.map || p; + this.uy = this.k.uy; + this.Cb = p; + this.fj = 0; + this.Iy = ""; + this.ae = 1; + this.ax = ""; + this.Ep = [0, 0, 0, 0, 0, 0, 0]; + this.BE = []; + this.hs = [1, 1, 1, 1, 1, 1, 1]; + this.xO = [1, 1, 1, 1, 1, 1, 1]; + this.Lt = [0, 0, 0, 0, 0, 0, 0]; + this.Fp = [0, 0, 0, 0, 0, 0, 0]; + this.Ma = [{ + o: "", + Cd: 0, + tn: 0, + x: 0, + y: 0, + oa: -1 + }, + { + o: "", + Cd: 0, + tn: 0, + x: 0, + y: 0, + oa: -1 + }, + { + o: "", + Cd: 0, + tn: 0, + x: 0, + y: 0, + oa: -1 + }, + { + o: "", + Cd: 0, + tn: 0, + x: 0, + y: 0, + oa: -1 + }, + { + o: "", + Cd: 0, + tn: 0, + x: 0, + y: 0, + oa: -1 + }, + { + o: "", + Cd: 0, + tn: 0, + x: 0, + y: 0, + oa: -1 + }, + { + o: "", + Cd: 0, + tn: 0, + x: 0, + y: 0, + oa: -1 + }]; + this.fi = -1; + this.ku = []; + this.lu = []; + I.load("route", s()) + } + x.lang.ua(Cd, x.lang.Ca, "RouteAddr"); + var Dd = navigator.userAgent; + /ipad|iphone|ipod|iph/i.test(Dd); + var Ed = /android/i.test(Dd); + function Fd(a) { + this.rh = a || {} + } + x.extend(Fd.prototype, { + LN: function(a, b, c) { + var d = this; + I.load("route", + function() { + d.Qd(a, b, c) + }) + } + }); + function Gd(a) { + this.k = {}; + x.extend(this.k, a); + this.Pa = []; + var b = this; + I.load("othersearch", + function() { + b.Qd() + }) + } + x.ua(Gd, x.lang.Ca, "Geocoder"); + x.extend(Gd.prototype, { + vm: function(a, b, c) { + this.Pa.push({ + method: "getPoint", + arguments: [a, b, c] + }) + }, + rm: function(a, b, c) { + this.Pa.push({ + method: "getLocation", + arguments: [a, b, c] + }) + }, + toString: ca("Geocoder") + }); + var Hd = Gd.prototype; + S(Hd, { + getPoint: Hd.vm, + getLocation: Hd.rm + }); + function Geolocation(a) { + a = a || {}; + this.K = { + timeout: a.timeout || 1E4, + maximumAge: a.maximumAge || 6E5, + $k: q + }; + this.le = []; + var b = this; + I.load("othersearch", + function() { + for (var a = 0, + d; d = b.le[a]; a++) b[d.method].apply(b, d.arguments) + }) + } + x.extend(Geolocation.prototype, { + getCurrentPosition: function(a, b) { + this.le.push({ + method: "getCurrentPosition", + arguments: arguments + }) + }, + getStatus: ca(2), + enableSDKLocation: function() { + G() && (this.K.$k = o) + }, + disableSDKLocation: function() { + this.K.$k = q + } + }); + function Id(a) { + a = a || {}; + a.ka = a.renderOptions || {}; + this.k = { + ka: { + map: a.ka.map || p + } + }; + this.Pa = []; + var b = this; + I.load("othersearch", + function() { + b.Qd() + }) + } + x.ua(Id, x.lang.Ca, "LocalCity"); + x.extend(Id.prototype, { + get: function(a) { + this.Pa.push({ + method: "get", + arguments: [a] + }) + }, + toString: ca("LocalCity") + }); + function Jd() { + this.Pa = []; + var a = this; + I.load("othersearch", + function() { + a.Qd() + }) + } + x.ua(Jd, x.lang.Ca, "Boundary"); + x.extend(Jd.prototype, { + get: function(a, b) { + this.Pa.push({ + method: "get", + arguments: [a, b] + }) + }, + toString: ca("Boundary") + }); + function Kd(a, b) { + V.call(this, a, b); + this.xP = nd; + this.zP = qd; + this.wP = od; + this.yP = rd; + this.Pa = []; + var c = this; + I.load("buslinesearch", + function() { + c.Qd() + }) + } + Kd.ov = E.qa + "iw_plus.gif"; + Kd.CS = E.qa + "iw_minus.gif"; + Kd.tU = E.qa + "stop_icon.png"; + x.ua(Kd, V); + x.extend(Kd.prototype, { + getBusList: function(a) { + this.Pa.push({ + method: "getBusList", + arguments: [a] + }) + }, + getBusLine: function(a) { + this.Pa.push({ + method: "getBusLine", + arguments: [a] + }) + }, + setGetBusListCompleteCallback: function(a) { + this.k.eN = a || s() + }, + setGetBusLineCompleteCallback: function(a) { + this.k.dN = a || s() + }, + setBusListHtmlSetCallback: function(a) { + this.k.bN = a || s() + }, + setBusLineHtmlSetCallback: function(a) { + this.k.aN = a || s() + }, + setPolylinesSetCallback: function(a) { + this.k.ME = a || s() + } + }); + function Ld(a) { + V.call(this, a); + a = a || {}; + this.pc = { + input: a.input || p, + VB: a.baseDom || p, + types: a.types || [], + dy: a.onSearchComplete || s() + }; + this.yd.src = a.location || "\u5168\u56fd"; + this.$i = ""; + this.mg = p; + this.XH = ""; + this.Pi(); + Ra(Ia); + var b = this; + I.load("autocomplete", + function() { + b.Qd() + }) + } + x.ua(Ld, V, "Autocomplete"); + x.extend(Ld.prototype, { + Pi: s(), + show: s(), + U: s(), + wF: function(a) { + this.pc.types = a + }, + gn: function(a) { + this.yd.src = a + }, + search: ba("$i"), + xy: ba("XH") + }); + var Ta; + function Oa(a, b) { + function c() { + e.k.visible ? ("inter" === e.Ie && e.k.haveBreakId && e.k.indoorExitControl === o ? x.D.show(e.uA) : x.D.U(e.uA), this.k.closeControl && this.zf && this.C && this.C.Na() === this.B ? x.D.show(e.zf) : x.D.U(e.zf), this.k.forceCloseControl && x.D.show(e.zf)) : (x.D.U(e.zf), x.D.U(e.uA)) + } + this.B = "string" == typeof a ? x.$(a) : a; + this.ba = Md++; + this.k = { + enableScrollWheelZoom: o, + panoramaRenderer: "flash", + swfSrc: z.sg("main_domain_nocdn", "res/swf/") + "APILoader.swf", + visible: o, + indoorExitControl: o, + indoorFloorControl: q, + linksControl: o, + clickOnRoad: o, + navigationControl: o, + closeControl: o, + indoorSceneSwitchControl: o, + albumsControl: q, + albumsControlOptions: {}, + copyrightControlOptions: {}, + forceCloseControl: q, + haveBreakId: q + }; + var b = b || {}, + d; + for (d in b) this.k[d] = b[d]; + b.closeControl === o && (this.k.forceCloseControl = o); + b.useWebGL === q && Na(q); + this.Da = { + heading: 0, + pitch: 0 + }; + this.$n = []; + this.Lb = this.Ya = p; + this.ck = this.$q(); + this.wa = []; + this.Jc = 1; + this.Ie = this.$S = this.el = ""; + this.He = {}; + this.Mf = p; + this.Pg = []; + this.wr = []; + "cvsRender" == this.ck || Na() ? (this.Vj = 90, this.Xj = -90) : "cssRender" == this.ck && (this.Vj = 45, this.Xj = -45); + this.Ar = q; + var e = this; + this.ao = function() { + this.ck === "flashRender" ? I.load("panoramaflash", + function() { + e.Pi() + }, + o) : I.load("panorama", + function() { + e.yb() + }, + o); + b.Pf == "api" ? Ra(Da) : Ra(Fa); + this.ao = s() + }; + this.k.NS !== o && (this.ao(), z.Dn("cus.fire", "count", "z_loadpanoramacount")); + this.DT(this.B); + this.addEventListener("id_changed", + function() { + Ra(Ca, { + from: b.Pf + }) + }); + this.RP(); + this.addEventListener("indoorexit_options_changed", c); + this.addEventListener("scene_type_changed", c); + this.addEventListener("onclose_options_changed", c); + this.addEventListener("onvisible_changed", c) + } + var Nd = 4, + Od = 1, + Md = 0; + x.lang.ua(Oa, x.lang.Ca, "Panorama"); + x.extend(Oa.prototype, { + RP: function() { + var a = this, + b = this.zf = M("div"); + b.className = "pano_close"; + b.style.cssText = "z-index: 1201;display: none"; + b.title = "\u9000\u51fa\u5168\u666f"; + b.onclick = function() { + a.U() + }; + this.B.appendChild(b); + var c = this.uA = M("a"); + c.className = "pano_pc_indoor_exit"; + c.style.cssText = "z-index: 1201;display: none"; + c.innerHTML = '\u51fa\u53e3'; + c.title = "\u9000\u51fa\u5ba4\u5185\u666f"; + c.onclick = function() { + a.So() + }; + this.B.appendChild(c); + window.ActiveXObject && !document.addEventListener && (b.style.backgroundColor = "rgb(37,37,37)", c.style.backgroundColor = "rgb(37,37,37)") + }, + So: s(), + DT: function(a) { + var b, c; + b = a.style; + c = Wa(a).position; + "absolute" != c && "relative" != c && (b.position = "relative", b.zIndex = 0); + if ("absolute" === c || "relative" === c) if (a = Wa(a).zIndex, !a || "auto" === a) b.zIndex = 0 + }, + jX: u("$n"), + Zb: u("Ya"), + LX: u("Xv"), + $N: u("Xv"), + ha: u("Lb"), + Ea: u("Da"), + fa: u("Jc"), + fh: u("el"), + M2: function() { + return this.d1 || [] + }, + H2: u("$S"), + Zs: u("Ie"), + zy: function(a) { + a !== this.Ie && (this.Ie = a, this.dispatchEvent(new O("onscene_type_changed"))) + }, + rc: function(a, b, c) { + "object" === typeof b && (c = b, b = j); + a != this.Ya && (this.pl = this.Ya, this.ql = this.Lb, this.Ya = a, this.Ie = b || "street", this.Lb = p, c && c.pov && this.Mc(c.pov)) + }, + ta: function(a) { + a.nb(this.Lb) || (this.pl = this.Ya, this.ql = this.Lb, this.Lb = a, this.Ya = p) + }, + Mc: function(a) { + a && (this.Da = a, a = this.Da.pitch, a > this.Vj ? a = this.Vj: a < this.Xj && (a = this.Xj), this.Ar = o, this.Da.pitch = a) + }, + b_: function(a, b) { + this.Xj = 0 <= a ? 0 : a; + this.Vj = 0 >= b ? 0 : b + }, + Nc: function(a) { + a != this.Jc && (a > Nd && (a = Nd), a < Od && (a = Od), a != this.Jc && (this.Jc = a), "cssRender" === this.ck && this.Mc(this.Da)) + }, + uB: function() { + if (this.C) for (var a = this.C.ux(), b = 0; b < a.length; b++)(a[b] instanceof T || a[b] instanceof uc) && a[b].point && this.wa.push(a[b]) + }, + sF: ba("C"), + Ut: function(a) { + this.Mf = a || "none" + }, + Kk: function(a) { + for (var b in a) { + if ("object" == typeof a[b]) for (var c in a[b]) this.k[b][c] = a[b][c]; + else this.k[b] = a[b]; + a.closeControl === o && (this.k.forceCloseControl = o); + a.closeControl === q && (this.k.forceCloseControl = q); + switch (b) { + case "linksControl": + this.dispatchEvent(new O("onlinks_visible_changed")); + break; + case "clickOnRoad": + this.dispatchEvent(new O("onclickonroad_changed")); + break; + case "navigationControl": + this.dispatchEvent(new O("onnavigation_visible_changed")); + break; + case "indoorSceneSwitchControl": + this.dispatchEvent(new O("onindoor_default_switch_mode_changed")); + break; + case "albumsControl": + this.dispatchEvent(new O("onalbums_visible_changed")); + break; + case "albumsControlOptions": + this.dispatchEvent(new O("onalbums_options_changed")); + break; + case "copyrightControlOptions": + this.dispatchEvent(new O("oncopyright_options_changed")); + break; + case "closeControl": + this.dispatchEvent(new O("onclose_options_changed")); + break; + case "indoorExitControl": + this.dispatchEvent(new O("onindoorexit_options_changed")); + break; + case "indoorFloorControl": + this.dispatchEvent(new O("onindoorfloor_options_changed")) + } + } + }, + zk: function() { + this.yl.style.visibility = "hidden" + }, + Dy: function() { + this.yl.style.visibility = "visible" + }, + xW: function() { + this.k.enableScrollWheelZoom = o + }, + iW: function() { + this.k.enableScrollWheelZoom = q + }, + show: function() { + this.k.visible = o + }, + U: function() { + this.k.visible = q + }, + $q: function() { + return Va() && !G() && "javascript" !== this.k.panoramaRenderer ? "flashRender": !G() && Nb() ? "cvsRender": "cssRender" + }, + Ja: function(a) { + this.He[a.hd] = a + }, + Tb: function(a) { + delete this.He[a] + }, + ZD: function() { + return this.k.visible + }, + eh: function() { + return new N(this.B.clientWidth, this.B.clientHeight) + }, + Na: u("B"), + hL: function() { + var a = z.sg("baidumap", "?"), + b = this.Zb(); + if (b) { + var b = { + panotype: this.Zs(), + heading: this.Ea().heading, + pitch: this.Ea().pitch, + pid: b, + panoid: b, + from: "api" + }, + c; + for (c in b) a += c + "=" + b[c] + "&" + } + return a.slice(0, -1) + }, + Dx: function() { + this.Kk({ + copyrightControlOptions: { + logoVisible: q + } + }) + }, + zF: function() { + this.Kk({ + copyrightControlOptions: { + logoVisible: o + } + }) + }, + PB: function(a) { + function b(a, b) { + return function() { + a.wr.push({ + OM: b, + NM: arguments + }) + } + } + for (var c = a.getPanoMethodList(), d = "", e = 0, f = c.length; e < f; e++) d = c[e], + this[d] = b(this, d); + this.Pg.push(a) + }, + bF: function(a) { + for (var b = this.Pg.length; b--;) this.Pg[b] === a && this.Pg.splice(b, 1) + }, + rF: s() + }); + var Pd = Oa.prototype; + S(Pd, { + setId: Pd.rc, + setPosition: Pd.ta, + setPov: Pd.Mc, + setZoom: Pd.Nc, + setOptions: Pd.Kk, + getId: Pd.Zb, + getPosition: Pd.ha, + getPov: Pd.Ea, + getZoom: Pd.fa, + getLinks: Pd.jX, + getBaiduMapUrl: Pd.hL, + hideMapLogo: Pd.Dx, + showMapLogo: Pd.zF, + enableDoubleClickZoom: Pd.b2, + disableDoubleClickZoom: Pd.P1, + enableScrollWheelZoom: Pd.xW, + disableScrollWheelZoom: Pd.iW, + show: Pd.show, + hide: Pd.U, + addPlugin: Pd.PB, + removePlugin: Pd.bF, + getVisible: Pd.ZD, + addOverlay: Pd.Ja, + removeOverlay: Pd.Tb, + getSceneType: Pd.Zs, + setPanoramaPOIType: Pd.Ut, + exitInter: Pd.So, + setInteractiveState: Pd.rF + }); + S(window, { + BMAP_PANORAMA_POI_HOTEL: "hotel", + BMAP_PANORAMA_POI_CATERING: "catering", + BMAP_PANORAMA_POI_MOVIE: "movie", + BMAP_PANORAMA_POI_TRANSIT: "transit", + BMAP_PANORAMA_POI_INDOOR_SCENE: "indoor_scene", + BMAP_PANORAMA_POI_NONE: "none", + BMAP_PANORAMA_INDOOR_SCENE: "inter", + BMAP_PANORAMA_STREET_SCENE: "street" + }); + function Qd() { + x.lang.Ca.call(this); + this.hd = "PanoramaOverlay_" + this.ba; + this.P = p; + this.Qa = o + } + x.lang.ua(Qd, x.lang.Ca, "PanoramaOverlayBase"); + x.extend(Qd.prototype, { + I2: u("hd"), + ra: function() { + aa("initialize\u65b9\u6cd5\u672a\u5b9e\u73b0") + }, + remove: function() { + aa("remove\u65b9\u6cd5\u672a\u5b9e\u73b0") + }, + Lf: function() { + aa("_setOverlayProperty\u65b9\u6cd5\u672a\u5b9e\u73b0") + } + }); + function Rd(a, b) { + Qd.call(this); + var c = { + position: p, + altitude: 2, + displayDistance: o + }, + b = b || {}, + d; + for (d in b) c[d] = b[d]; + this.Lb = c.position; + this.Lj = a; + this.uq = c.altitude; + this.cR = c.displayDistance; + this.FF = c.color; + this.RL = c.hoverColor; + this.backgroundColor = c.backgroundColor; + this.VJ = c.backgroundHoverColor; + this.borderColor = c.borderColor; + this.ZJ = c.borderHoverColor; + this.fontSize = c.fontSize; + this.padding = c.padding; + this.eE = c.imageUrl; + this.size = c.size; + this.te = c.image; + this.width = c.width; + this.height = c.height; + this.$X = c.imageData; + this.borderWidth = c.borderWidth + } + x.lang.ua(Rd, Qd, "PanoramaLabel"); + x.extend(Rd.prototype, { + n2: u("borderWidth"), + getImageData: u("$X"), + ym: u("FF"), + B2: u("RL"), + j2: u("backgroundColor"), + k2: u("VJ"), + l2: u("borderColor"), + m2: u("ZJ"), + y2: u("fontSize"), + J2: u("padding"), + C2: u("eE"), + Bb: u("size"), + kx: u("te"), + ta: function(a) { + this.Lb = a; + this.Lf("position", a) + }, + ha: u("Lb"), + ad: function(a) { + this.Lj = a; + this.Lf("content", a) + }, + tk: u("Lj"), + mF: function(a) { + this.uq = a; + this.Lf("altitude", a) + }, + Vo: u("uq"), + Ea: function() { + var a = this.ha(), + b = p, + c = p; + this.P && (c = this.P.ha()); + if (a && c) if (a.nb(c)) b = this.P.Ea(); + else { + b = {}; + b.heading = Sd(a.lng - c.lng, a.lat - c.lat) || 0; + var a = b, + c = this.Vo(), + d = this.Vn(); + a.pitch = Math.round(180 * (Math.atan(c / d) / Math.PI)) || 0 + } + return b + }, + Vn: function() { + var a = 0, + b, c; + this.P && (b = this.P.ha(), (c = this.ha()) && !c.nb(b) && (a = R.Xo(b, c))); + return a + }, + U: function() { + aa("hide\u65b9\u6cd5\u672a\u5b9e\u73b0") + }, + show: function() { + aa("show\u65b9\u6cd5\u672a\u5b9e\u73b0") + }, + Lf: s() + }); + var Td = Rd.prototype; + S(Td, { + setPosition: Td.ta, + getPosition: Td.ha, + setContent: Td.ad, + getContent: Td.tk, + setAltitude: Td.mF, + getAltitude: Td.Vo, + getPov: Td.Ea, + show: Td.show, + hide: Td.U + }); + function Ud(a, b) { + Qd.call(this); + var c = { + icon: "", + title: "", + panoInfo: p, + altitude: 2 + }, + b = b || {}, + d; + for (d in b) c[d] = b[d]; + this.Lb = a; + this.SH = c.icon; + this.oJ = c.title; + this.uq = c.altitude; + this.qT = c.panoInfo; + this.Da = { + heading: 0, + pitch: 0 + } + } + x.lang.ua(Ud, Qd, "PanoramaMarker"); + x.extend(Ud.prototype, { + ta: function(a) { + this.Lb = a; + this.Lf("position", a) + }, + ha: u("Lb"), + Cc: function(a) { + this.oJ = a; + this.Lf("title", a) + }, + fp: u("oJ"), + Ub: function(a) { + this.SH = icon; + this.Lf("icon", a) + }, + Yo: u("SH"), + mF: function(a) { + this.uq = a; + this.Lf("altitude", a) + }, + Vo: u("uq"), + QD: u("qT"), + Ea: function() { + var a = p; + if (this.P) { + var a = this.P.ha(), + b = this.ha(), + a = Sd(b.lng - a.lng, b.lat - a.lat); + isNaN(a) && (a = 0); + a = { + heading: a, + pitch: 0 + } + } else a = this.Da; + return a + }, + Lf: s() + }); + var Vd = Ud.prototype; + S(Vd, { + setPosition: Vd.ta, + getPosition: Vd.ha, + setTitle: Vd.Cc, + getTitle: Vd.fp, + setAltitude: Vd.mF, + getAltitude: Vd.Vo, + getPanoInfo: Vd.QD, + getIcon: Vd.Yo, + setIcon: Vd.Ub, + getPov: Vd.Ea + }); + function Sd(a, b) { + var c = 0; + if (0 !== a && 0 !== b) { + var c = 180 * (Math.atan(a / b) / Math.PI), + d = 0; + 0 < a && 0 > b && (d = 90); + 0 > a && 0 > b && (d = 180); + 0 > a && 0 < b && (d = 270); + c = (c + 90) % 90 + d + } else 0 === a ? c = 0 > b ? 180 : 0 : 0 === b && (c = 0 < a ? 90 : 270); + return Math.round(c) + } + function Na(a) { + if ("boolean" === typeof Wd) return Wd; + if (a === q || !window.WebGLRenderingContext || x.platform.Im && -1 == navigator.userAgent.indexOf("Android 5")) return Wd = q; + var a = document.createElement("canvas"), + b = p; + try { + b = a.getContext("webgl") + } catch(c) { + Wd = q + } + return Wd = b === p ? q: o + } + var Wd; + function Xd() { + if ("boolean" === typeof Yd) return Yd; + Yd = o; + if (x.platform.nE) return o; + var a = navigator.userAgent; + return - 1 < a.indexOf("Chrome") || -1 < a.indexOf("SAMSUNG-GT-I9508") ? o: Yd = q + } + var Yd; + function cc(a, b) { + this.P = a || p; + var c = this; + c.P && c.ca(); + I.load("pservice", + function() { + c.vQ() + }); + "api" == (b || {}).Pf ? Ra(Ga) : Ra(Ha); + this.vd = { + getPanoramaById: [], + getPanoramaByLocation: [], + getVisiblePOIs: [], + getRecommendPanosById: [], + getPanoramaVersions: [], + checkPanoSupportByCityCode: [], + getPanoramaByPOIId: [], + getCopyrightProviders: [] + } + } + z.Um(function(a) { + "flashRender" !== a.$q() && new cc(a, { + Pf: "api" + }) + }); + x.extend(cc.prototype, { + ca: function() { + function a(a) { + if (a) { + if (a.id != b.Xv) { + b.$N(a.id); + b.ea = a; + Xd() || b.dispatchEvent(new O("onthumbnail_complete")); + b.Ya != p && (b.ql = b._position); + for (var c in a) if (a.hasOwnProperty(c)) switch (b["_" + c] = a[c], c) { + case "position": + b.Lb = a[c]; + break; + case "id": + b.Ya = a[c]; + break; + case "links": + b.$n = a[c]; + break; + case "zoom": + b.Jc = a[c] + } + if (b.ql) { + var f = b.ql, + g = b._position; + c = f.lat; + var i = g.lat, + k = Ob(i - c), + f = Ob(g.lng - f.lng); + c = Math.sin(k / 2) * Math.sin(k / 2) + Math.cos(Ob(c)) * Math.cos(Ob(i)) * Math.sin(f / 2) * Math.sin(f / 2); + b.gH = 6371E3 * 2 * Math.atan2(Math.sqrt(c), Math.sqrt(1 - c)) + } + c = new O("ondataload"); + c.data = a; + b.dispatchEvent(c); + b.dispatchEvent(new O("onposition_changed")); + b.dispatchEvent(new O("onlinks_changed")); + b.dispatchEvent(new O("oncopyright_changed"), { + copyright: a.copyright + }); + a.am && b.k.closeControl ? x.D.show(b.yR) : x.D.U(b.yR) + } + } else b.Ya = b.pl, + b.Lb = b.ql, + b.dispatchEvent(new O("onnoresult")) + } + var b = this.P, + c = this; + b.addEventListener("id_changed", + function() { + c.bp(b.Zb(), a) + }); + b.addEventListener("iid_changed", + function() { + c.Qg(cc.al + "qt=idata&iid=" + b.qA + "&fn=", + function(b) { + if (b && b.result && 0 == b.result.error) { + var b = b.content[0].interinfo, + e = {}; + e.am = b.BreakID; + for (var f = b.Defaultfloor, + g = p, + i = 0; i < b.Floors.length; i++) if (b.Floors[i].Floor == f) { + g = b.Floors[i]; + break + } + e.id = g.StartID || g.Points[0].PID; + c.bp(e.id, a, e) + } + }) + }); + b.addEventListener("position_changed_inner", + function() { + c.pj(b.ha(), a) + }) + }, + bp: function(a, b) { + this.vd.getPanoramaById.push(arguments) + }, + pj: function(a, b, c) { + this.vd.getPanoramaByLocation.push(arguments) + }, + $D: function(a, b, c, d) { + this.vd.getVisiblePOIs.push(arguments) + }, + xx: function(a, b) { + this.vd.getRecommendPanosById.push(arguments) + }, + wx: function(a) { + this.vd.getPanoramaVersions.push(arguments) + }, + cC: function(a, b) { + this.vd.checkPanoSupportByCityCode.push(arguments) + }, + vx: function(a, b) { + this.vd.getPanoramaByPOIId.push(arguments) + }, + mL: function(a) { + this.vd.getCopyrightProviders.push(arguments) + } + }); + var Zd = cc.prototype; + S(Zd, { + getPanoramaById: Zd.bp, + getPanoramaByLocation: Zd.pj, + getPanoramaByPOIId: Zd.vx + }); + function bc(a) { + Hc.call(this); + "api" == (a || {}).Pf ? Ra(za) : Ra(Ba) + } + bc.yG = z.sg("pano", "tile/"); + bc.prototype = new Hc; + bc.prototype.getTilesUrl = function(a, b) { + var c = bc.yG[(a.x + a.y) % bc.yG.length] + "?udt=20150114&qt=tile&styles=pl&x=" + a.x + "&y=" + a.y + "&z=" + b; + x.da.la && 6 >= x.da.la && (c += "&color_dep=32"); + return c + }; + bc.prototype.ot = ca(o); + $d.Ud = new R; + function $d() {} + x.extend($d, { + jW: function(a, b, c) { + c = x.lang.Kc(c); + b = { + data: b + }; + "position_changed" == a && (b.data = $d.Ud.zj(new Q(b.data.mercatorX, b.data.mercatorY))); + c.dispatchEvent(new O("on" + a), b) + } + }); + var ae = $d; + S(ae, { + dispatchFlashEvent: ae.jW + }); + var be = { + oP: 50 + }; + be.Gu = z.sg("pano")[0]; + be.Cu = { + width: 220, + height: 60 + }; + x.extend(be, { + mp: function(a, b, c, d) { + if (!b || !c || !c.lngLat || !c.panoInstance) d(); + else { + this.ho === j && (this.ho = new cc(p, { + Pf: "api" + })); + var e = this; + this.ho.cC(b, + function(b) { + b ? e.ho.pj(c.lngLat, be.oP, + function(b) { + if (b && b.id) { + var f = b.id, + k = b.th, + b = b.uh, + l = cc.Ud.lh(c.lngLat), + m = e.dS(l, { + x: k, + y: b + }), + k = e.wL(f, m, 0, be.Cu.width, be.Cu.height); + a.content = e.eS(a.content, k, c.titleTip, c.beforeDomId); + a.addEventListener("open", + function() { + ja.M(x.Dc("infoWndPano"), "click", + function() { + c.panoInstance.rc(f); + c.panoInstance.show(); + c.panoInstance.Mc({ + heading: m, + pitch: 0 + }) + }) + }) + } + d() + }) : d() + }) + } + }, + eS: function(a, b, c, d) { + var c = c || "", + e; ! d || !a.split(d)[0] ? (d = a, a = "") : (d = a.split(d)[0], e = d.lastIndexOf("<"), d = a.substring(0, e), a = a.substring(e)); + e = []; + var f = be.Cu.width, + g = be.Cu.height; + e.push(d); + e.push("
            "); + e.push("" + c + "\u5916\u666f"); + e.push("
            \u8fdb\u5165\u5168\u666f>>"); + e.push("
            "); + e.push(a); + return e.join("") + }, + dS: function(a, b) { + var c = 90 - 180 * Math.atan2(a.y - b.y, a.x - b.x) / Math.PI; + 0 > c && (c += 360); + return c + }, + wL: function(a, b, c, d, e) { + var f = { + panoId: a, + panoHeading: b || 0, + panoPitch: c || 0, + width: d, + height: e + }; + return (be.Gu + "?qt=pr3d&fovy=75&quality=80&panoid={panoId}&heading={panoHeading}&pitch={panoPitch}&width={width}&height={height}").replace(/\{(.*?)\}/g, + function(a, b) { + return f[b] + }) + } + }); + var ce = document, + de = Math, + ee = ce.createElement("div").style, + fe; + a: { + for (var ge = ["t", "webkitT", "MozT", "msT", "OT"], he, ie = 0, je = ge.length; ie < je; ie++) if (he = ge[ie] + "ransform", he in ee) { + fe = ge[ie].substr(0, ge[ie].length - 1); + break a + } + fe = q + } + var ke = fe ? "-" + fe.toLowerCase() + "-": "", + ne = le("transform"), + oe = le("transitionProperty"), + pe = le("transitionDuration"), + ve = le("transformOrigin"), + we = le("transitionTimingFunction"), + xe = le("transitionDelay"), + Ed = /android/gi.test(navigator.appVersion), + ye = /iphone|ipad/gi.test(navigator.appVersion), + ze = /hp-tablet/gi.test(navigator.appVersion), + Ae = le("perspective") in ee, + Be = "ontouchstart" in window && !ze, + Ce = fe !== q, + De = le("transition") in ee, + Ee = "onorientationchange" in window ? "orientationchange": "resize", + Fe = Be ? "touchstart": "mousedown", + Ge = Be ? "touchmove": "mousemove", + He = Be ? "touchend": "mouseup", + Ie = Be ? "touchcancel": "mouseup", + Je = fe === q ? q: { + "": "transitionend", + webkit: "webkitTransitionEnd", + Moz: "transitionend", + O: "otransitionend", + ms: "MSTransitionEnd" + } [fe], + Ke = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || + function(a) { + return setTimeout(a, 1) + }, + Le = window.cancelRequestAnimationFrame || window.L4 || window.webkitCancelRequestAnimationFrame || window.mozCancelRequestAnimationFrame || window.oCancelRequestAnimationFrame || window.msCancelRequestAnimationFrame || clearTimeout, + Me = Ae ? " translateZ(0)": ""; + function Ne(a, b) { + var c = this, + d; + c.xn = "object" == typeof a ? a: ce.getElementById(a); + c.xn.style.overflow = "hidden"; + c.Ob = c.xn.children[0]; + c.options = { + jp: o, + vn: o, + x: 0, + y: 0, + Do: o, + jV: q, + Wx: o, + CE: o, + Tk: o, + Ai: q, + F_: 0, + Ew: q, + Ax: o, + mi: o, + Bi: o, + qD: Ed, + Ex: ye, + EW: ye && Ae, + jF: "", + zoom: q, + Vk: 1, + Zp: 4, + lW: 2, + UO: "scroll", + cu: q, + Gy: 1, + hN: p, + $M: function(a) { + a.preventDefault() + }, + kN: p, + ZM: p, + jN: p, + YM: p, + by: p, + lN: p, + cN: p, + yp: p, + mN: p, + xp: p + }; + for (d in b) c.options[d] = b[d]; + c.x = c.options.x; + c.y = c.options.y; + c.options.Tk = Ce && c.options.Tk; + c.options.mi = c.options.jp && c.options.mi; + c.options.Bi = c.options.vn && c.options.Bi; + c.options.zoom = c.options.Tk && c.options.zoom; + c.options.Ai = De && c.options.Ai; + c.options.zoom && Ed && (Me = ""); + c.Ob.style[oe] = c.options.Tk ? ke + "transform": "top left"; + c.Ob.style[pe] = "0"; + c.Ob.style[ve] = "0 0"; + c.options.Ai && (c.Ob.style[we] = "cubic-bezier(0.33,0.66,0.66,1)"); + c.options.Tk ? c.Ob.style[ne] = "translate(" + c.x + "px," + c.y + "px)" + Me: c.Ob.style.cssText += ";position:absolute;top:" + c.y + "px;left:" + c.x + "px"; + c.options.Ai && (c.options.qD = o); + c.refresh(); + c.ca(Ee, window); + c.ca(Fe); ! Be && "none" != c.options.UO && (c.ca("DOMMouseScroll"), c.ca("mousewheel")); + c.options.Ew && (c.uV = setInterval(function() { + c.sQ() + }, + 500)); + this.options.Ax && (Event.prototype.stopImmediatePropagation || (document.body.removeEventListener = function(a, b, c) { + var d = Node.prototype.removeEventListener; + a === "click" ? d.call(document.body, a, b.PL || b, c) : d.call(document.body, a, b, c) + }, + document.body.addEventListener = function(a, b, c) { + var d = Node.prototype.addEventListener; + a === "click" ? d.call(document.body, a, b.PL || (b.PL = function(a) { + a.kZ || b(a) + }), c) : d.call(document.body, a, b, c) + }), c.ca("click", document.body, o)) + } + Ne.prototype = { + enabled: o, + x: 0, + y: 0, + Aj: [], + scale: 1, + xC: 0, + yC: 0, + Se: [], + uf: [], + UB: p, + Qy: 0, + handleEvent: function(a) { + switch (a.type) { + case Fe: + if (!Be && 0 !== a.button) break; + this.Qv(a); + break; + case Ge: + this.bT(a); + break; + case He: + case Ie: + this.bv(a); + break; + case Ee: + this.nB(); + break; + case "DOMMouseScroll": + case "mousewheel": + this.FU(a); + break; + case Je: + this.BU(a); + break; + case "click": + this.DQ(a) + } + }, + sQ: function() { ! this.ph && (!this.Wk && !(this.Wl || this.wy == this.Ob.offsetWidth * this.scale && this.Ip == this.Ob.offsetHeight * this.scale)) && this.refresh() + }, + Hv: function(a) { + var b; + this[a + "Scrollbar"] ? (this[a + "ScrollbarWrapper"] || (b = ce.createElement("div"), this.options.jF ? b.className = this.options.jF + a.toUpperCase() : b.style.cssText = "position:absolute;z-index:100;" + ("h" == a ? "height:7px;bottom:1px;left:2px;right:" + (this.Bi ? "7": "2") + "px": "width:7px;bottom:" + (this.mi ? "7": "2") + "px;top:2px;right:1px"), b.style.cssText += ";pointer-events:none;" + ke + "transition-property:opacity;" + ke + "transition-duration:" + (this.options.EW ? "350ms": "0") + ";overflow:hidden;opacity:" + (this.options.Ex ? "0": "1"), this.xn.appendChild(b), this[a + "ScrollbarWrapper"] = b, b = ce.createElement("div"), this.options.jF || (b.style.cssText = "position:absolute;z-index:100;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);" + ke + "background-clip:padding-box;" + ke + "box-sizing:border-box;" + ("h" == a ? "height:100%": "width:100%") + ";" + ke + "border-radius:3px;border-radius:3px"), b.style.cssText += ";pointer-events:none;" + ke + "transition-property:" + ke + "transform;" + ke + "transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);" + ke + "transition-duration:0;" + ke + "transform: translate(0,0)" + Me, this.options.Ai && (b.style.cssText += ";" + ke + "transition-timing-function:cubic-bezier(0.33,0.66,0.66,1)"), this[a + "ScrollbarWrapper"].appendChild(b), this[a + "ScrollbarIndicator"] = b), "h" == a ? (this.ML = this.NL.clientWidth, this.TX = de.max(de.round(this.ML * this.ML / this.wy), 8), this.SX.style.width = this.TX + "px") : (this.LO = this.MO.clientHeight, this.$_ = de.max(de.round(this.LO * this.LO / this.Ip), 8), this.Z_.style.height = this.$_ + "px"), this.oB(a, o)) : this[a + "ScrollbarWrapper"] && (Ce && (this[a + "ScrollbarIndicator"].style[ne] = ""), this[a + "ScrollbarWrapper"].parentNode.removeChild(this[a + "ScrollbarWrapper"]), this[a + "ScrollbarWrapper"] = p, this[a + "ScrollbarIndicator"] = p) + }, + nB: function() { + var a = this; + setTimeout(function() { + a.refresh() + }, + Ed ? 200 : 0) + }, + zr: function(a, b) { + this.Wk || (a = this.jp ? a: 0, b = this.vn ? b: 0, this.options.Tk ? this.Ob.style[ne] = "translate(" + a + "px," + b + "px) scale(" + this.scale + ")" + Me: (a = de.round(a), b = de.round(b), this.Ob.style.left = a + "px", this.Ob.style.top = b + "px"), this.x = a, this.y = b, this.oB("h"), this.oB("v")) + }, + oB: function(a, b) { + var c = "h" == a ? this.x: this.y; + this[a + "Scrollbar"] && (c *= this[a + "ScrollbarProp"], 0 > c ? (this.options.qD || (c = this[a + "ScrollbarIndicatorSize"] + de.round(3 * c), 8 > c && (c = 8), this[a + "ScrollbarIndicator"].style["h" == a ? "width": "height"] = c + "px"), c = 0) : c > this[a + "ScrollbarMaxScroll"] && (this.options.qD ? c = this[a + "ScrollbarMaxScroll"] : (c = this[a + "ScrollbarIndicatorSize"] - de.round(3 * (c - this[a + "ScrollbarMaxScroll"])), 8 > c && (c = 8), this[a + "ScrollbarIndicator"].style["h" == a ? "width": "height"] = c + "px", c = this[a + "ScrollbarMaxScroll"] + (this[a + "ScrollbarIndicatorSize"] - c))), this[a + "ScrollbarWrapper"].style[xe] = "0", this[a + "ScrollbarWrapper"].style.opacity = b && this.options.Ex ? "0": "1", this[a + "ScrollbarIndicator"].style[ne] = "translate(" + ("h" == a ? c + "px,0)": "0," + c + "px)") + Me) + }, + DQ: function(a) { + if (a.zR === o) return this.MB = a.target, + this.bx = Date.now(), + o; + if (this.MB && this.bx) { + if (600 < Date.now() - this.bx) return this.bx = this.MB = p, + o + } else { + for (var b = a.target; b != this.Ob && b != document.body;) b = b.parentNode; + if (b == document.body) return o + } + for (b = a.target; 1 != b.nodeType;) b = b.parentNode; + b = b.tagName.toLowerCase(); + if ("select" != b && "input" != b && "textarea" != b) return a.stopImmediatePropagation ? a.stopImmediatePropagation() : a.kZ = o, + a.stopPropagation(), + a.preventDefault(), + this.bx = this.MB = p, + q + }, + Qv: function(a) { + var b = Be ? a.touches[0] : a, + c, + d; + if (this.enabled) { + this.options.$M && this.options.$M.call(this, a); (this.options.Ai || this.options.zoom) && this.pJ(0); + this.Wk = this.Wl = this.ph = q; + this.HC = this.GC = this.jw = this.hw = this.NC = this.MC = 0; + this.options.zoom && (Be && 1 < a.touches.length) && (d = de.abs(a.touches[0].pageX - a.touches[1].pageX), c = de.abs(a.touches[0].pageY - a.touches[1].pageY), this.H_ = de.sqrt(d * d + c * c), this.ey = de.abs(a.touches[0].pageX + a.touches[1].pageX - 2 * this.UF) / 2 - this.x, this.fy = de.abs(a.touches[0].pageY + a.touches[1].pageY - 2 * this.VF) / 2 - this.y, this.options.yp && this.options.yp.call(this, a)); + if (this.options.Wx && (this.options.Tk ? (c = getComputedStyle(this.Ob, p)[ne].replace(/[^0-9\-.,]/g, "").split(","), d = +(c[12] || c[4]), c = +(c[13] || c[5])) : (d = +getComputedStyle(this.Ob, p).left.replace(/[^0-9-]/g, ""), c = +getComputedStyle(this.Ob, p).top.replace(/[^0-9-]/g, "")), d != this.x || c != this.y)) this.options.Ai ? this.Wd(Je) : Le(this.UB), + this.Aj = [], + this.zr(d, c), + this.options.by && this.options.by.call(this); + this.kw = this.x; + this.lw = this.y; + this.fu = this.x; + this.gu = this.y; + this.th = b.pageX; + this.uh = b.pageY; + this.startTime = a.timeStamp || Date.now(); + this.options.kN && this.options.kN.call(this, a); + this.ca(Ge, window); + this.ca(He, window); + this.ca(Ie, window) + } + }, + bT: function(a) { + var b = Be ? a.touches[0] : a, + c = b.pageX - this.th, + d = b.pageY - this.uh, + e = this.x + c, + f = this.y + d, + g = a.timeStamp || Date.now(); + this.options.ZM && this.options.ZM.call(this, a); + if (this.options.zoom && Be && 1 < a.touches.length) e = de.abs(a.touches[0].pageX - a.touches[1].pageX), + f = de.abs(a.touches[0].pageY - a.touches[1].pageY), + this.G_ = de.sqrt(e * e + f * f), + this.Wk = o, + b = 1 / this.H_ * this.G_ * this.scale, + b < this.options.Vk ? b = 0.5 * this.options.Vk * Math.pow(2, b / this.options.Vk) : b > this.options.Zp && (b = 2 * this.options.Zp * Math.pow(0.5, this.options.Zp / b)), + this.rp = b / this.scale, + e = this.ey - this.ey * this.rp + this.x, + f = this.fy - this.fy * this.rp + this.y, + this.Ob.style[ne] = "translate(" + e + "px," + f + "px) scale(" + b + ")" + Me, + this.options.mN && this.options.mN.call(this, a); + else { + this.th = b.pageX; + this.uh = b.pageY; + if (0 < e || e < this.fe) e = this.options.Do ? this.x + c / 2 : 0 <= e || 0 <= this.fe ? 0 : this.fe; + if (f > this.rf || f < this.nd) f = this.options.Do ? this.y + d / 2 : f >= this.rf || 0 <= this.nd ? this.rf: this.nd; + this.MC += c; + this.NC += d; + this.hw = de.abs(this.MC); + this.jw = de.abs(this.NC); + 6 > this.hw && 6 > this.jw || (this.options.CE && (this.hw > this.jw + 5 ? (f = this.y, d = 0) : this.jw > this.hw + 5 && (e = this.x, c = 0)), this.ph = o, this.zr(e, f), this.GC = 0 < c ? -1 : 0 > c ? 1 : 0, this.HC = 0 < d ? -1 : 0 > d ? 1 : 0, 300 < g - this.startTime && (this.startTime = g, this.fu = this.x, this.gu = this.y), this.options.jN && this.options.jN.call(this, a)) + } + }, + bv: function(a) { + if (! (Be && 0 !== a.touches.length)) { + var b = this, + c = Be ? a.changedTouches[0] : a, + d, + e, + f = { + Ba: 0, + time: 0 + }, + g = { + Ba: 0, + time: 0 + }, + i = (a.timeStamp || Date.now()) - b.startTime; + d = b.x; + e = b.y; + b.Wd(Ge, window); + b.Wd(He, window); + b.Wd(Ie, window); + b.options.YM && b.options.YM.call(b, a); + if (b.Wk) d = b.scale * b.rp, + d = Math.max(b.options.Vk, d), + d = Math.min(b.options.Zp, d), + b.rp = d / b.scale, + b.scale = d, + b.x = b.ey - b.ey * b.rp + b.x, + b.y = b.fy - b.fy * b.rp + b.y, + b.Ob.style[pe] = "200ms", + b.Ob.style[ne] = "translate(" + b.x + "px," + b.y + "px) scale(" + b.scale + ")" + Me, + b.Wk = q, + b.refresh(), + b.options.xp && b.options.xp.call(b, a); + else { + if (b.ph) { + if (300 > i && b.options.Wx) { + f = d ? b.mI(d - b.fu, i, -b.x, b.wy - b.uu + b.x, b.options.Do ? b.uu: 0) : f; + g = e ? b.mI(e - b.gu, i, -b.y, 0 > b.nd ? b.Ip - b.yn + b.y - b.rf: 0, b.options.Do ? b.yn: 0) : g; + d = b.x + f.Ba; + e = b.y + g.Ba; + if (0 < b.x && 0 < d || b.x < b.fe && d < b.fe) f = { + Ba: 0, + time: 0 + }; + if (b.y > b.rf && e > b.rf || b.y < b.nd && e < b.nd) g = { + Ba: 0, + time: 0 + } + } + f.Ba || g.Ba ? (c = de.max(de.max(f.time, g.time), 10), b.options.cu && (f = d - b.kw, g = e - b.lw, de.abs(f) < b.options.Gy && de.abs(g) < b.options.Gy ? b.scrollTo(b.kw, b.lw, 200) : (f = b.gJ(d, e), d = f.x, e = f.y, c = de.max(f.time, c))), b.scrollTo(de.round(d), de.round(e), c)) : b.options.cu ? (f = d - b.kw, g = e - b.lw, de.abs(f) < b.options.Gy && de.abs(g) < b.options.Gy ? b.scrollTo(b.kw, b.lw, 200) : (f = b.gJ(b.x, b.y), (f.x != b.x || f.y != b.y) && b.scrollTo(f.x, f.y, f.time))) : b.jo(200) + } else { + if (Be) if (b.FK && b.options.zoom) clearTimeout(b.FK), + b.FK = p, + b.options.yp && b.options.yp.call(b, a), + b.zoom(b.th, b.uh, 1 == b.scale ? b.options.lW: 1), + b.options.xp && setTimeout(function() { + b.options.xp.call(b, a) + }, + 200); + else if (this.options.Ax) { + for (d = c.target; 1 != d.nodeType;) d = d.parentNode; + e = d.tagName.toLowerCase(); + "select" != e && "input" != e && "textarea" != e ? (e = ce.createEvent("MouseEvents"), e.initMouseEvent("click", o, o, a.view, 1, c.screenX, c.screenY, c.clientX, c.clientY, a.ctrlKey, a.altKey, a.shiftKey, a.metaKey, 0, p), e.zR = o, d.dispatchEvent(e)) : d.focus() + } + b.jo(400) + } + b.options.lN && b.options.lN.call(b, a) + } + } + }, + jo: function(a) { + var b = 0 <= this.x ? 0 : this.x < this.fe ? this.fe: this.x, + c = this.y >= this.rf || 0 < this.nd ? this.rf: this.y < this.nd ? this.nd: this.y; + if (b == this.x && c == this.y) { + if (this.ph && (this.ph = q, this.options.by && this.options.by.call(this)), this.mi && this.options.Ex && ("webkit" == fe && (this.NL.style[xe] = "300ms"), this.NL.style.opacity = "0"), this.Bi && this.options.Ex)"webkit" == fe && (this.MO.style[xe] = "300ms"), + this.MO.style.opacity = "0" + } else this.scrollTo(b, c, a || 0) + }, + FU: function(a) { + var b = this, + c, d; + if ("wheelDeltaX" in a) c = a.wheelDeltaX / 12, + d = a.wheelDeltaY / 12; + else if ("wheelDelta" in a) c = d = a.wheelDelta / 12; + else if ("detail" in a) c = d = 3 * -a.detail; + else return; + if ("zoom" == b.options.UO) { + if (d = b.scale * Math.pow(2, 1 / 3 * (d ? d / Math.abs(d) : 0)), d < b.options.Vk && (d = b.options.Vk), d > b.options.Zp && (d = b.options.Zp), d != b.scale) ! b.Qy && b.options.yp && b.options.yp.call(b, a), + b.Qy++, + b.zoom(a.pageX, a.pageY, d, 400), + setTimeout(function() { + b.Qy--; ! b.Qy && b.options.xp && b.options.xp.call(b, a) + }, + 400) + } else c = b.x + c, + d = b.y + d, + 0 < c ? c = 0 : c < b.fe && (c = b.fe), + d > b.rf ? d = b.rf: d < b.nd && (d = b.nd), + 0 > b.nd && b.scrollTo(c, d, 0) + }, + BU: function(a) { + a.target == this.Ob && (this.Wd(Je), this.AB()) + }, + AB: function() { + var a = this, + b = a.x, + c = a.y, + d = Date.now(), + e, + f, + g; + a.Wl || (a.Aj.length ? (e = a.Aj.shift(), e.x == b && e.y == c && (e.time = 0), a.Wl = o, a.ph = o, a.options.Ai) ? (a.pJ(e.time), a.zr(e.x, e.y), a.Wl = q, e.time ? a.ca(Je) : a.jo(0)) : (g = function() { + var i = Date.now(), + k; + if (i >= d + e.time) { + a.zr(e.x, e.y); + a.Wl = q; + a.options.TY && a.options.TY.call(a); + a.AB() + } else { + i = (i - d) / e.time - 1; + f = de.sqrt(1 - i * i); + i = (e.x - b) * f + b; + k = (e.y - c) * f + c; + a.zr(i, k); + if (a.Wl) a.UB = Ke(g) + } + }, + g()) : a.jo(400)) + }, + pJ: function(a) { + a += "ms"; + this.Ob.style[pe] = a; + this.mi && (this.SX.style[pe] = a); + this.Bi && (this.Z_.style[pe] = a) + }, + mI: function(a, b, c, d, e) { + var b = de.abs(a) / b, + f = b * b / 0.0012; + 0 < a && f > c ? (c += e / (6 / (6.0E-4 * (f / b))), b = b * c / f, f = c) : 0 > a && f > d && (d += e / (6 / (6.0E-4 * (f / b))), b = b * d / f, f = d); + return { + Ba: f * (0 > a ? -1 : 1), + time: de.round(b / 6.0E-4) + } + }, + Zj: function(a) { + for (var b = -a.offsetLeft, + c = -a.offsetTop; a = a.offsetParent;) b -= a.offsetLeft, + c -= a.offsetTop; + a != this.xn && (b *= this.scale, c *= this.scale); + return { + left: b, + top: c + } + }, + gJ: function(a, b) { + var c, d, e; + e = this.Se.length - 1; + c = 0; + for (d = this.Se.length; c < d; c++) if (a >= this.Se[c]) { + e = c; + break + } + e == this.xC && (0 < e && 0 > this.GC) && e--; + a = this.Se[e]; + d = (d = de.abs(a - this.Se[this.xC])) ? 500 * (de.abs(this.x - a) / d) : 0; + this.xC = e; + e = this.uf.length - 1; + for (c = 0; c < e; c++) if (b >= this.uf[c]) { + e = c; + break + } + e == this.yC && (0 < e && 0 > this.HC) && e--; + b = this.uf[e]; + c = (c = de.abs(b - this.uf[this.yC])) ? 500 * (de.abs(this.y - b) / c) : 0; + this.yC = e; + e = de.round(de.max(d, c)) || 200; + return { + x: a, + y: b, + time: e + } + }, + ca: function(a, b, c) { (b || this.Ob).addEventListener(a, this, !!c) + }, + Wd: function(a, b, c) { (b || this.Ob).removeEventListener(a, this, !!c) + }, + DC: ha(2), + refresh: function() { + var a, b, c, d = 0; + b = 0; + this.scale < this.options.Vk && (this.scale = this.options.Vk); + this.uu = this.xn.clientWidth || 1; + this.yn = this.xn.clientHeight || 1; + this.rf = -this.options.F_ || 0; + this.wy = de.round(this.Ob.offsetWidth * this.scale); + this.Ip = de.round((this.Ob.offsetHeight + this.rf) * this.scale); + this.fe = this.uu - this.wy; + this.nd = this.yn - this.Ip + this.rf; + this.HC = this.GC = 0; + this.options.hN && this.options.hN.call(this); + this.jp = this.options.jp && 0 > this.fe; + this.vn = this.options.vn && (!this.options.jV && !this.jp || this.Ip > this.yn); + this.mi = this.jp && this.options.mi; + this.Bi = this.vn && this.options.Bi && this.Ip > this.yn; + a = this.Zj(this.xn); + this.UF = -a.left; + this.VF = -a.top; + if ("string" == typeof this.options.cu) { + this.Se = []; + this.uf = []; + c = this.Ob.querySelectorAll(this.options.cu); + a = 0; + for (b = c.length; a < b; a++) d = this.Zj(c[a]), + d.left += this.UF, + d.top += this.VF, + this.Se[a] = d.left < this.fe ? this.fe: d.left * this.scale, + this.uf[a] = d.top < this.nd ? this.nd: d.top * this.scale + } else if (this.options.cu) { + for (this.Se = []; d >= this.fe;) this.Se[b] = d, + d -= this.uu, + b++; + this.fe % this.uu && (this.Se[this.Se.length] = this.fe - this.Se[this.Se.length - 1] + this.Se[this.Se.length - 1]); + b = d = 0; + for (this.uf = []; d >= this.nd;) this.uf[b] = d, + d -= this.yn, + b++; + this.nd % this.yn && (this.uf[this.uf.length] = this.nd - this.uf[this.uf.length - 1] + this.uf[this.uf.length - 1]) + } + this.Hv("h"); + this.Hv("v"); + this.Wk || (this.Ob.style[pe] = "0", this.jo(400)) + }, + scrollTo: function(a, b, c, d) { + var e = a; + this.stop(); + e.length || (e = [{ + x: a, + y: b, + time: c, + mZ: d + }]); + a = 0; + for (b = e.length; a < b; a++) e[a].mZ && (e[a].x = this.x - e[a].x, e[a].y = this.y - e[a].y), + this.Aj.push({ + x: e[a].x, + y: e[a].y, + time: e[a].time || 0 + }); + this.AB() + }, + disable: function() { + this.stop(); + this.jo(0); + this.enabled = q; + this.Wd(Ge, window); + this.Wd(He, window); + this.Wd(Ie, window) + }, + enable: function() { + this.enabled = o + }, + stop: function() { + this.options.Ai ? this.Wd(Je) : Le(this.UB); + this.Aj = []; + this.Wl = this.ph = q + }, + zoom: function(a, b, c, d) { + var e = c / this.scale; + this.options.Tk && (this.Wk = o, d = d === j ? 200 : d, a = a - this.UF - this.x, b = b - this.VF - this.y, this.x = a - a * e + this.x, this.y = b - b * e + this.y, this.scale = c, this.refresh(), this.x = 0 < this.x ? 0 : this.x < this.fe ? this.fe: this.x, this.y = this.y > this.rf ? this.rf: this.y < this.nd ? this.nd: this.y, this.Ob.style[pe] = d + "ms", this.Ob.style[ne] = "translate(" + this.x + "px," + this.y + "px) scale(" + c + ")" + Me, this.Wk = q) + } + }; + function le(a) { + if ("" === fe) return a; + a = a.charAt(0).toUpperCase() + a.substr(1); + return fe + a + } + ee = p; + function Oe(a) { + this.k = { + anchor: Wb, + offset: new N(0, 0), + maxWidth: "100%", + imageHeight: 80 + }; + var a = a || {}, + b; + for (b in a) this.k[b] = a[b]; + this.Il = new cc(p, { + Pf: "api" + }); + this.$j = []; + this.P = p; + this.eg = { + height: this.k.imageHeight, + width: this.k.imageHeight * Pe + }; + this.Oc = this.pB = this.am = this.Xc = p + } + var Qe = [0, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 5, 5, 5, 6, 6, 7, 8, 8, 8, 9, 10], + Re = "\u5176\u4ed6 \u6b63\u95e8 \u623f\u578b \u8bbe\u65bd \u6b63\u95e8 \u9910\u996e\u8bbe\u65bd \u5176\u4ed6\u8bbe\u65bd \u6b63\u95e8 \u8bbe\u65bd \u89c2\u5f71\u5385 \u5176\u4ed6\u8bbe\u65bd".split(" "); + z.Um(function(a) { + var b = p; + a.addEventListener("position_changed", + function() { + a.k.visible && a.k.albumsControl === o && (b ? b.oy(a.Zb()) : (b = new Oe(a.k.albumsControlOptions), b.ra(a))) + }); + a.addEventListener("albums_visible_changed", + function() { + a.k.albumsControl === o ? (b ? b.oy(a.Zb()) : (b = new Oe(a.k.albumsControlOptions), b.ra(a)), b.show()) : b.U() + }); + a.addEventListener("albums_options_changed", + function() { + b && b.Kk(a.k.albumsControlOptions) + }); + a.addEventListener("visible_changed", + function() { + b && (a.ZD() ? a.k.albumsControl === o && (b.B.style.visibility = "visible") : b.B.style.visibility = "hidden") + }) + }); + var Pe = 1.8; + G() && (Pe = 1); + x.extend(Oe.prototype, { + Kk: function(a) { + for (var b in a) this.k[b] = a[b]; + a = this.k.imageHeight + "px"; + this.qc(this.k.anchor); + this.B.style.width = isNaN(Number(this.k.maxWidth)) === o ? this.k.maxWidth: this.k.maxWidth + "px"; + this.B.style.height = a; + this.fk.style.height = a; + this.Wh.style.height = a; + this.eg = { + height: this.k.imageHeight, + width: this.k.imageHeight * Pe + }; + this.ek.style.height = this.eg.height - 6 + "px"; + this.ek.style.width = this.eg.width - 6 + "px"; + this.oy(this.P.Zb(), o) + }, + ra: function(a) { + this.P = a; + this.fs(); + this.bQ(); + this.gY(); + this.oy(a.Zb()) + }, + fs: function() { + var a = this.k.imageHeight + "px"; + this.B = M("div"); + var b = this.B.style; + b.cssText = "background:rgb(37,37,37);background:rgba(37,37,37,0.9);"; + b.position = "absolute"; + b.zIndex = "2000"; + b.width = isNaN(Number(this.k.maxWidth)) === o ? this.k.maxWidth: this.k.maxWidth + "px"; + b.padding = "8px 0"; + b.visibility = "hidden"; + b.height = a; + this.fk = M("div"); + b = this.fk.style; + b.position = "absolute"; + b.overflow = "hidden"; + b.width = "100%"; + b.height = a; + this.Wh = M("div"); + b = this.Wh.style; + b.height = a; + this.fk.appendChild(this.Wh); + this.B.appendChild(this.fk); + this.P.B.appendChild(this.B); + this.ek = M("div", { + "class": "pano_photo_item_seleted" + }); + this.ek.style.height = this.eg.height - 6 + "px"; + this.ek.style.width = this.eg.width - 6 + "px"; + this.qc(this.k.anchor) + }, + DH: function(a) { + for (var b = this.$j, + c = b.length - 1; 0 <= c; c--) if (b[c].panoId == a) return c; + return - 1 + }, + oy: function(a, b) { + if (b || !this.$j[this.Xc] || !(this.$j[this.Xc].panoId == a && 3 !== this.$j[this.Xc].recoType)) { + var c = this, + d = this.DH(a); ! b && -1 !== d && this.$j[d] && 3 !== this.$j[d].recoType ? this.Mp(d) : this.yX(function(a) { + for (var b = {}, + d, i, k = q, + l = [], m = 0, n = a.length; m < n; m++) d = a[m].catlog, + i = a[m].floor, + j !== d && ("" === d && j !== i ? (k = o, b[i] || (b[i] = []), b[i].push(a[m])) : (b[Qe[d]] || (b[Qe[d]] = []), b[Qe[d]].push(a[m]))); + for (var t in b) k ? l.push({ + data: t + "F", + index: t + }) : l.push({ + data: Re[t], + index: t + }); + c.UG = b; + c.Ni = l; + c.El(a); + 0 == a.length ? c.U() : c.show() + }) + } + }, + SV: function() { + if (!this.Ki) { + var a = this.mX(this.Ni), + b = M("div"); + b.style.cssText = ["width:" + 134 * this.Ni.length + "px;", "overflow:hidden;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;"].join(""); + b.innerHTML = a; + a = M("div"); + a.appendChild(b); + a.style.cssText = "position:absolute;top:-25px;background:rgb(37,37,37);background:rgba(37,37,37,0.9);border-bottom:1px solid #4e596a;width:100%;line-height:25px;height:25px;overflow:scroll;outline:0"; + new Ne(a, { + Do: q, + Wx: o, + mi: q, + Bi: q, + vn: q, + CE: o, + Ew: o, + Ax: o + }); + this.B.appendChild(a); + for (var c = this, + d = b.getElementsByTagName("span"), e = 0, f = d.length; e < f; e++) b = d[e], + x.M(b, "click", + function() { + if (this.getAttribute("dataindex")) { + c.El(c.UG[this.getAttribute("dataindex")]); + for (var a = 0, + b = d.length; a < b; a++) d[a].style.color = "#FFFFFF"; + this.style.color = "#3383FF" + } + }); + this.Ki = a + } + }, + PV: function() { + if (this.Ki) a = this.kL(this.Ni), + this.rQ.innerHTML = a; + else { + var a = this.kL(this.Ni), + b = M("ul"), + c = this; + b.style.cssText = "list-style: none;padding:0px;margin:0px;display:block;width:60px;position:absolute;top:7px"; + b.innerHTML = a; + x.M(b, "click", + function(a) { + if (a = (a.srcElement || a.target).getAttribute("dataindex")) { + c.El(c.UG[a]); + for (var d = b.getElementsByTagName("li"), e = 0, f = d.length; e < f; e++) d[e].childNodes[0].getAttribute("dataindex") === a ? x.D.Ua(d[e], "pano_catlogLiActive") : x.D.Sb(d[e], "pano_catlogLiActive") + } + }); + var a = M("div"), + d = M("a"), + e = M("span"), + f = M("a"), + g = M("span"), + i = ["background:url(" + E.qa + "panorama/catlog_icon.png) no-repeat;", "display:block;width:10px;height:7px;margin:0 auto;"].join(""); + e.style.cssText = i + "background-position:-18px 0;"; + d.style.cssText = "background:#1C1C1C;display:block;position:absolute;width:58px;"; + g.style.cssText = i + "background-position:0 0;"; + f.style.cssText = "background:#1C1C1C;display:block;position:absolute;width:58px;"; + f.style.top = this.k.imageHeight - 7 + "px"; + a.style.cssText = "position:absolute;top:0px;left:0px;width:60px;"; + d.appendChild(e); + f.appendChild(g); + x.M(d, "mouseover", + function() { + var a = parseInt(b.style.top, 10); + 7 !== a && (e.style.backgroundPosition = "-27px 0"); + new rb({ + Gc: 60, + jc: sb.Es, + duration: 300, + va: function(c) { + b.style.top = a + (7 - a) * c + "px" + } + }) + }); + x.M(d, "mouseout", + function() { + e.style.backgroundPosition = "-18px 0" + }); + x.M(f, "mouseover", + function() { + var a = parseInt(b.style.top, 10), + d = c.k.imageHeight - 14; + if (! (parseInt(b.offsetHeight, 10) < d)) { + var e = d - parseInt(b.offsetHeight, 10) + 7; + e !== a && (g.style.backgroundPosition = "-9px 0"); + new rb({ + Gc: 60, + jc: sb.Es, + duration: 300, + va: function(c) { + b.style.top = a + (e - a) * c + "px" + } + }) + } + }); + x.M(f, "mouseout", + function() { + g.style.backgroundPosition = "0 0" + }); + a.appendChild(d); + a.appendChild(f); + d = M("div"); + d.style.cssText = ["position:absolute;z-index:2001;left:20px;", "height:" + this.k.imageHeight + "px;", "width:62px;overflow:hidden;background:rgb(37,37,37);background:rgba(37,37,37,0.9);"].join(""); + d.appendChild(b); + d.appendChild(a); + this.Ki = d; + this.rQ = b; + this.B.appendChild(d) + } + }, + QV: function() { + if (this.Ni && !(0 >= this.Ni.length)) { + var a = M("div"); + a.innerHTML = this.Xz; + a.style.cssText = "position:absolute;background:#252525"; + this.B.appendChild(a); + this.Js = a; + this.Oc.fg.style.left = this.eg.width + 8 + "px"; + this.Ki && (this.Ki.style.left = parseInt(this.Ki.style.left, 10) + this.eg.width + 8 + "px"); + var b = this; + x.M(a, "click", + function() { + b.P.rc(b.AW) + }) + } + }, + El: function(a) { + this.$j = a; + this.k.showCatalog && (0 < this.Ni.length ? (Va() ? this.PV() : this.SV(), this.Oc.offsetLeft = 60) : (this.Js && (this.B.removeChild(this.Js), this.Js = p, this.Oc.fg.style.left = "0px"), this.Ki && (this.B.removeChild(this.Ki), this.Ki = p), this.Oc.offsetLeft = 0)); + var b = this.gX(a); + Va() && (this.Ni && 0 < this.Ni.length && this.k.showExit && this.Xz) && (this.Oc.offsetLeft += this.eg.width + 8, this.Js ? this.Js.innerHTML = this.Xz: this.QV()); + this.Wh.innerHTML = b; + this.Wh.style.width = (this.eg.width + 8) * a.length + 8 + "px"; + a = this.B.offsetWidth; + b = this.Wh.offsetWidth; + this.Oc.Qs && (b += this.Oc.Qs()); + b < a - 2 * this.Oc.Ei - this.Oc.offsetLeft ? this.B.style.width = b + this.Oc.offsetLeft + "px": (this.B.style.width = isNaN(Number(this.k.maxWidth)) === o ? this.k.maxWidth: this.k.maxWidth + "px", b < this.B.offsetWidth - 2 * this.Oc.Ei - this.Oc.offsetLeft && (this.B.style.width = b + this.Oc.offsetLeft + "px")); + this.Oc.refresh(); + this.pB = this.Wh.children; + this.Wh.appendChild(this.ek); + this.ek.style.left = "-100000px"; + a = this.DH(this.P.Zb(), this.h1); - 1 !== a && this.Mp(a) + }, + mX: function(a) { + for (var b = "", + c, d = 0, + e = a.length; d < e; d++) c = '
            ' + a[d].data + "
            ", + b += c; + return b + }, + kL: function(a) { + for (var b = "", + c, d = 0, + e = a.length; d < e; d++) c = '
          • ' + a[d].data + "
          • ", + b += c; + return b + }, + gX: function(a) { + for (var b, c, d, e, f = [], g = this.eg.height, i = this.eg.width, k = 0; k < a.length; k++) b = a[k], + recoType = b.recoType, + d = b.panoId, + e = b.name, + c = b.heading, + b = b.pitch, + c = be.wL(d, c, b, 198, 108), + b = '' + e + '' + e + "", + 3 === recoType ? Va() ? (this.Xz = b, this.AW = d, a.splice(k, 1), k--) : (b = '' + e + '
            ', f.push(b)) : f.push(b); + return f.join("") + }, + yX: function(a) { + var b = this, + c = this.P.Zb(); + c && this.Il.xx(c, + function(d) { + b.P.Zb() === c && a(d) + }) + }, + qc: function(a) { + if (!Xa(a) || isNaN(a) || a < Ub || 3 < a) a = this.defaultAnchor; + var b = this.B, + c = this.k.offset.width, + d = this.k.offset.height; + b.style.left = b.style.top = b.style.right = b.style.bottom = "auto"; + switch (a) { + case Ub: + b.style.top = d + "px"; + b.style.left = c + "px"; + break; + case Vb: + b.style.top = d + "px"; + b.style.right = c + "px"; + break; + case Wb: + b.style.bottom = d + "px"; + b.style.left = c + "px"; + break; + case 3: + b.style.bottom = d + "px", + b.style.right = c + "px" + } + }, + bQ: function() { + this.$P() + }, + $P: function() { + var a = this; + x.M(this.B, "touchstart", + function(a) { + a.stopPropagation() + }); + x.M(this.fk, "click", + function(b) { + if ((b = (b.srcElement || b.target).getAttribute("data-index")) && b != a.Xc) a.Mp(b), + a.P.rc(a.$j[b].panoId) + }); + x.M(this.Wh, "mouseover", + function(b) { + b = (b.srcElement || b.target).getAttribute("data-index"); + b !== p && a.lK(b, o) + }); + this.P.addEventListener("size_changed", + function() { + isNaN(Number(a.k.maxWidth)) && a.Kk({ + maxWidth: a.k.maxWidth + }) + }) + }, + Mp: function(a) { + this.ek.style.left = this.pB[a].offsetLeft + 8 + "px"; + this.ek.setAttribute("data-index", this.pB[a].getAttribute("data-index")); + this.Xc = a; + this.lK(a) + }, + lK: function(a, b) { + var c = this.eg.width + 8, + d = 0; + this.Oc.Qs && (d = this.Oc.Qs() / 2); + var e = this.fk.offsetWidth - 2 * d, + f = this.Wh.offsetLeft || this.Oc.x, + f = f - d, + g = -a * c; + g > f && this.Oc.scrollTo(g + d); + c = g - c; + f -= e; + c < f && (!b || b && 8 < g - f) && this.Oc.scrollTo(c + e + d) + }, + gY: function() { + this.Oc = G() ? new Ne(this.fk, { + Do: q, + Wx: o, + mi: q, + Bi: q, + vn: q, + CE: o, + Ew: o, + Ax: o + }) : new Se(this.fk) + }, + U: function() { + this.B.style.visibility = "hidden" + }, + show: function() { + this.B.style.visibility = "visible" + } + }); + function Se(a) { + this.B = a; + this.Sg = a.children[0]; + this.Nr = p; + this.Ei = 20; + this.offsetLeft = 0; + this.ra() + } + Se.prototype = { + ra: function() { + this.Sg.style.position = "relative"; + this.refresh(); + this.fs(); + this.Zl() + }, + refresh: function() { + this.eo = this.B.offsetWidth - this.Qs(); + this.PA = -(this.Sg.offsetWidth - this.eo - this.Ei); + this.tv = this.Ei + this.offsetLeft; + this.Sg.style.left = this.tv + "px"; + this.Sg.children[0] && (this.Nr = this.Sg.children[0].offsetWidth); + this.fg && (this.fg.children[0].style.marginTop = this.Fr.children[0].style.marginTop = this.fg.offsetHeight / 2 - this.fg.children[0].offsetHeight / 2 + "px") + }, + Qs: function() { + return 2 * this.Ei + }, + fs: function() { + this.Iv = M("div"); + this.Iv.innerHTML = ''; + this.fg = this.Iv.children[0]; + this.Fr = this.Iv.children[1]; + this.B.appendChild(this.Iv); + this.fg.children[0].style.marginTop = this.Fr.children[0].style.marginTop = this.fg.offsetHeight / 2 - this.fg.children[0].offsetHeight / 2 + "px" + }, + Zl: function() { + var a = this; + x.M(this.fg, "click", + function() { + a.scrollTo(a.Sg.offsetLeft + a.eo) + }); + x.M(this.Fr, "click", + function() { + a.scrollTo(a.Sg.offsetLeft - a.eo) + }) + }, + CU: function() { + x.D.Sb(this.fg, "pano_arrow_disable"); + x.D.Sb(this.Fr, "pano_arrow_disable"); + var a = this.Sg.offsetLeft; + a >= this.tv && x.D.Ua(this.fg, "pano_arrow_disable"); + a - this.eo <= this.PA && x.D.Ua(this.Fr, "pano_arrow_disable") + }, + scrollTo: function(a) { + a = a < this.Sg.offsetLeft ? Math.ceil((a - this.Ei - this.eo) / this.Nr) * this.Nr + this.eo + this.Ei - 8 : Math.ceil((a - this.Ei) / this.Nr) * this.Nr + this.Ei; + a < this.PA ? a = this.PA: a > this.tv && (a = this.tv); + var b = this.Sg.offsetLeft, + c = this; + new rb({ + Gc: 60, + jc: sb.Es, + duration: 300, + va: function(d) { + c.Sg.style.left = b + (a - b) * d + "px" + }, + finish: function() { + c.CU() + } + }) + } + }; + z.Map = La; + z.Hotspot = hb; + z.MapType = Vc; + z.Point = H; + z.Pixel = Q; + z.Size = N; + z.Bounds = eb; + z.TileLayer = Hc; + z.Projection = hc; + z.MercatorProjection = R; + z.PerspectiveProjection = gb; + z.Copyright = function(a, b, c) { + this.id = a; + this.hb = b; + this.content = c + }; + z.Overlay = kc; + z.Label = uc; + z.GroundOverlay = vc; + z.PointCollection = zc; + z.Marker = T; + z.Icon = qc; + z.IconSequence = sc; + z.Symbol = rc; + z.Polyline = Dc; + z.Polygon = Cc; + z.InfoWindow = tc; + z.Circle = Ec; + z.Control = Tb; + z.NavigationControl = ib; + z.GeolocationControl = Xb; + z.OverviewMapControl = kb; + z.CopyrightControl = Yb; + z.ScaleControl = jb; + z.MapTypeControl = lb; + z.CityListControl = Zb; + z.PanoramaControl = ac; + z.TrafficLayer = Rc; + z.CustomLayer = mb; + z.ContextMenu = dc; + z.MenuItem = gc; + z.LocalSearch = bb; + z.TransitRoute = xd; + z.DrivingRoute = Ad; + z.WalkingRoute = Bd; + z.Autocomplete = Ld; + z.RouteSearch = Fd; + z.Geocoder = Gd; + z.LocalCity = Id; + z.Geolocation = Geolocation; + z.Convertor = jc; + z.BusLineSearch = Kd; + z.Boundary = Jd; + z.VectorCloudLayer = Pc; + z.VectorTrafficLayer = Qc; + z.Panorama = Oa; + z.PanoramaLabel = Rd; + z.PanoramaService = cc; + z.PanoramaCoverageLayer = bc; + z.PanoramaFlashInterface = $d; + function S(a, b) { + for (var c in b) a[c] = b[c] + } + S(window, { + BMap: z, + _jsload2: function(a, b) { + ja.Jy.qY && ja.Jy.set(a, b); + I.tV(a, b) + }, + BMAP_API_VERSION: "2.0" + }); + var X = La.prototype; + S(X, { + getBounds: X.Hd, + getCenter: X.Ka, + getMapType: X.pa, + getSize: X.Bb, + setSize: X.ye, + getViewport: X.at, + getZoom: X.fa, + centerAndZoom: X.Dd, + panTo: X.ui, + panBy: X.xg, + setCenter: X.Wf, + setCurrentCity: X.pF, + setMapType: X.Ag, + setViewport: X.Ah, + setZoom: X.Nc, + highResolutionEnabled: X.Gx, + zoomTo: X.Dg, + zoomIn: X.WF, + zoomOut: X.XF, + addHotspot: X.rw, + removeHotspot: X.oZ, + clearHotspots: X.cm, + checkResize: X.wV, + addControl: X.ow, + removeControl: X.AN, + getContainer: X.Na, + addContextMenu: X.wo, + removeContextMenu: X.Cp, + addOverlay: X.Ja, + removeOverlay: X.Tb, + clearOverlays: X.iK, + openInfoWindow: X.Nb, + closeInfoWindow: X.Wc, + pointToOverlayPixel: X.Te, + overlayPixelToPoint: X.oN, + getInfoWindow: X.hh, + getOverlays: X.ux, + getPanes: function() { + return { + floatPane: this.Vd.rD, + markerMouseTarget: this.Vd.FE, + floatShadow: this.Vd.cL, + labelPane: this.Vd.xE, + markerPane: this.Vd.JM, + markerShadow: this.Vd.KM, + mapPane: this.Vd.xt, + vertexPane: this.Vd.QO + } + }, + addTileLayer: X.Wg, + removeTileLayer: X.xh, + pixelToPoint: X.wb, + pointToPixel: X.bc, + setFeatureStyle: X.Lp, + selectBaseElement: X.d4, + setMapStyle: X.St, + enable3DBuilding: X.Oo, + disable3DBuilding: X.fW, + getPanorama: X.tm + }); + var Te = Vc.prototype; + S(Te, { + getTileLayer: Te.JX, + getMinZoom: Te.Zo, + getMaxZoom: Te.sm, + getProjection: Te.dp, + getTextColor: Te.ym, + getTips: Te.$s + }); + S(window, { + BMAP_NORMAL_MAP: Ma, + BMAP_PERSPECTIVE_MAP: Pa, + BMAP_SATELLITE_MAP: Za, + BMAP_HYBRID_MAP: Sa + }); + var Ue = R.prototype; + S(Ue, { + lngLatToPoint: Ue.lh, + pointToLngLat: Ue.zj + }); + var Ve = gb.prototype; + S(Ve, { + lngLatToPoint: Ve.lh, + pointToLngLat: Ve.zj + }); + var We = eb.prototype; + S(We, { + equals: We.nb, + containsPoint: We.ds, + containsBounds: We.HV, + intersects: We.it, + extend: We.extend, + getCenter: We.Ka, + isEmpty: We.xj, + getSouthWest: We.se, + getNorthEast: We.of, + toSpan: We.KF + }); + var Xe = kc.prototype; + S(Xe, { + isVisible: Xe.kh, + show: Xe.show, + hide: Xe.U + }); + kc.getZIndex = kc.Am; + var Ye = fb.prototype; + S(Ye, { + openInfoWindow: Ye.Nb, + closeInfoWindow: Ye.Wc, + enableMassClear: Ye.mj, + disableMassClear: Ye.hW, + show: Ye.show, + hide: Ye.U, + getMap: Ye.ox, + addContextMenu: Ye.wo, + removeContextMenu: Ye.Cp + }); + var Ze = T.prototype; + S(Ze, { + setIcon: Ze.Ub, + getIcon: Ze.Yo, + setPosition: Ze.ta, + getPosition: Ze.ha, + setOffset: Ze.Ve, + getOffset: Ze.Qf, + getLabel: Ze.LD, + setLabel: Ze.fn, + setTitle: Ze.Cc, + setTop: Ze.yi, + enableDragging: Ze.Yb, + disableDragging: Ze.JC, + setZIndex: Ze.Xt, + getMap: Ze.ox, + setAnimation: Ze.dn, + setShadow: Ze.Ay, + hide: Ze.U, + setRotation: Ze.Op, + getRotation: Ze.AL + }); + S(window, { + BMAP_ANIMATION_DROP: 1, + BMAP_ANIMATION_BOUNCE: 2 + }); + var $e = uc.prototype; + S($e, { + setStyle: $e.Ld, + setStyles: $e.xi, + setContent: $e.ad, + setPosition: $e.ta, + getPosition: $e.ha, + setOffset: $e.Ve, + getOffset: $e.Qf, + setTitle: $e.Cc, + setZIndex: $e.Xt, + getMap: $e.ox, + getContent: $e.tk + }); + var af = qc.prototype; + S(af, { + setImageUrl: af.QN, + setSize: af.ye, + setAnchor: af.qc, + setImageOffset: af.Rt, + setImageSize: af.SZ, + setInfoWindowAnchor: af.VZ, + setPrintImageUrl: af.e_ + }); + var bf = tc.prototype; + S(bf, { + redraw: bf.ge, + setTitle: bf.Cc, + setContent: bf.ad, + getContent: bf.tk, + getPosition: bf.ha, + enableMaximize: bf.ah, + disableMaximize: bf.Ww, + isOpen: bf.Wa, + setMaxContent: bf.Tt, + maximize: bf.Vx, + enableAutoPan: bf.Fs + }); + var cf = oc.prototype; + S(cf, { + getPath: cf.qe, + setPath: cf.he, + setPositionAt: cf.hn, + getStrokeColor: cf.EX, + setStrokeWeight: cf.Rp, + getStrokeWeight: cf.DL, + setStrokeOpacity: cf.Pp, + getStrokeOpacity: cf.FX, + setFillOpacity: cf.Qt, + getFillOpacity: cf.bX, + setStrokeStyle: cf.Qp, + getStrokeStyle: cf.CL, + getFillColor: cf.aX, + getBounds: cf.Hd, + enableEditing: cf.lf, + disableEditing: cf.gW, + getEditing: cf.YW + }); + var df = Ec.prototype; + S(df, { + setCenter: df.Wf, + getCenter: df.Ka, + getRadius: df.yL, + setRadius: df.vf + }); + var ef = Cc.prototype; + S(ef, { + getPath: ef.qe, + setPath: ef.he, + setPositionAt: ef.hn + }); + var ff = hb.prototype; + S(ff, { + getPosition: ff.ha, + setPosition: ff.ta, + getText: ff.VD, + setText: ff.Wt + }); + H.prototype.equals = H.prototype.nb; + Q.prototype.equals = Q.prototype.nb; + N.prototype.equals = N.prototype.nb; + S(window, { + BMAP_ANCHOR_TOP_LEFT: Ub, + BMAP_ANCHOR_TOP_RIGHT: Vb, + BMAP_ANCHOR_BOTTOM_LEFT: Wb, + BMAP_ANCHOR_BOTTOM_RIGHT: 3 + }); + var gf = Tb.prototype; + S(gf, { + setAnchor: gf.qc, + getAnchor: gf.xD, + setOffset: gf.Ve, + getOffset: gf.Qf, + show: gf.show, + hide: gf.U, + isVisible: gf.kh, + toString: gf.toString + }); + var hf = ib.prototype; + S(hf, { + getType: hf.hp, + setType: hf.jn + }); + S(window, { + BMAP_NAVIGATION_CONTROL_LARGE: 0, + BMAP_NAVIGATION_CONTROL_SMALL: 1, + BMAP_NAVIGATION_CONTROL_PAN: 2, + BMAP_NAVIGATION_CONTROL_ZOOM: 3 + }); + var jf = kb.prototype; + S(jf, { + changeView: jf.ne, + setSize: jf.ye, + getSize: jf.Bb + }); + var kf = jb.prototype; + S(kf, { + getUnit: kf.NX, + setUnit: kf.xF + }); + S(window, { + BMAP_UNIT_METRIC: "metric", + BMAP_UNIT_IMPERIAL: "us" + }); + var lf = Yb.prototype; + S(lf, { + addCopyright: lf.qw, + removeCopyright: lf.aF, + getCopyright: lf.pm, + getCopyrightCollection: lf.ED + }); + S(window, { + BMAP_MAPTYPE_CONTROL_HORIZONTAL: $b, + BMAP_MAPTYPE_CONTROL_DROPDOWN: 1, + BMAP_MAPTYPE_CONTROL_MAP: 2 + }); + var mf = Hc.prototype; + S(mf, { + getMapType: mf.pa, + getCopyright: mf.pm, + isTransparentPng: mf.ot + }); + var pf = dc.prototype; + S(pf, { + addItem: pf.sw, + addSeparator: pf.QB, + removeSeparator: pf.cF + }); + var qf = gc.prototype; + S(qf, { + setText: qf.Wt + }); + var rf = V.prototype; + S(rf, { + getStatus: rf.wm, + setSearchCompleteCallback: rf.vF, + getPageCapacity: rf.pf, + setPageCapacity: rf.Np, + setLocation: rf.gn, + disableFirstResultSelection: rf.KC, + enableFirstResultSelection: rf.gD, + gotoPage: rf.Bm, + searchNearby: rf.Jp, + searchInBounds: rf.bn, + search: rf.search + }); + S(window, { + BMAP_STATUS_SUCCESS: 0, + BMAP_STATUS_CITY_LIST: 1, + BMAP_STATUS_UNKNOWN_LOCATION: 2, + BMAP_STATUS_UNKNOWN_ROUTE: 3, + BMAP_STATUS_INVALID_KEY: 4, + BMAP_STATUS_INVALID_REQUEST: 5, + BMAP_STATUS_PERMISSION_DENIED: 6, + BMAP_STATUS_SERVICE_UNAVAILABLE: 7, + BMAP_STATUS_TIMEOUT: 8 + }); + S(window, { + BMAP_POI_TYPE_NORMAL: 0, + BMAP_POI_TYPE_BUSSTOP: 1, + BMAP_POI_TYPE_BUSLINE: 2, + BMAP_POI_TYPE_SUBSTOP: 3, + BMAP_POI_TYPE_SUBLINE: 4 + }); + S(window, { + BMAP_TRANSIT_POLICY_LEAST_TIME: 0, + BMAP_TRANSIT_POLICY_LEAST_TRANSFER: 2, + BMAP_TRANSIT_POLICY_LEAST_WALKING: 3, + BMAP_TRANSIT_POLICY_AVOID_SUBWAYS: 4, + BMAP_LINE_TYPE_BUS: 0, + BMAP_LINE_TYPE_SUBWAY: 1, + BMAP_LINE_TYPE_FERRY: 2 + }); + var sf = wd.prototype; + S(sf, { + clearResults: sf.Oe + }); + yd = xd.prototype; + S(yd, { + setPolicy: yd.Vt, + toString: yd.toString, + setPageCapacity: yd.Np + }); + S(window, { + BMAP_DRIVING_POLICY_LEAST_TIME: 0, + BMAP_DRIVING_POLICY_LEAST_DISTANCE: 1, + BMAP_DRIVING_POLICY_AVOID_HIGHWAYS: 2 + }); + S(window, { + BMAP_MODE_DRIVING: "driving", + BMAP_MODE_TRANSIT: "transit", + BMAP_MODE_WALKING: "walking", + BMAP_MODE_NAVIGATION: "navigation" + }); + var tf = Fd.prototype; + S(tf, { + routeCall: tf.LN + }); + S(window, { + BMAP_HIGHLIGHT_STEP: 1, + BMAP_HIGHLIGHT_ROUTE: 2 + }); + S(window, { + BMAP_ROUTE_TYPE_DRIVING: id, + BMAP_ROUTE_TYPE_WALKING: ed + }); + S(window, { + BMAP_ROUTE_STATUS_NORMAL: jd, + BMAP_ROUTE_STATUS_EMPTY: 1, + BMAP_ROUTE_STATUS_ADDRESS: 2 + }); + var uf = Ad.prototype; + S(uf, { + setPolicy: uf.Vt + }); + var vf = Ld.prototype; + S(vf, { + show: vf.show, + hide: vf.U, + setTypes: vf.wF, + setLocation: vf.gn, + search: vf.search, + setInputValue: vf.xy + }); + S(mb.prototype, {}); + var wf = Jd.prototype; + S(wf, { + get: wf.get + }); + S(bc.prototype, {}); + S(cb.prototype, {}); + S(window, { + BMAP_POINT_DENSITY_HIGH: 200, + BMAP_POINT_DENSITY_MEDIUM: Uc, + BMAP_POINT_DENSITY_LOW: 50 + }); + S(window, { + BMAP_POINT_SHAPE_STAR: 1, + BMAP_POINT_SHAPE_WATERDROP: 2, + BMAP_POINT_SHAPE_CIRCLE: wc, + BMAP_POINT_SHAPE_SQUARE: 4, + BMAP_POINT_SHAPE_RHOMBUS: 5 + }); + S(window, { + BMAP_POINT_SIZE_TINY: 1, + BMAP_POINT_SIZE_SMALLER: 2, + BMAP_POINT_SIZE_SMALL: 3, + BMAP_POINT_SIZE_NORMAL: xc, + BMAP_POINT_SIZE_BIG: 5, + BMAP_POINT_SIZE_BIGGER: 6, + BMAP_POINT_SIZE_HUGE: 7 + }); + S(window, { + BMap_Symbol_SHAPE_CAMERA: 11, + BMap_Symbol_SHAPE_WARNING: 12, + BMap_Symbol_SHAPE_SMILE: 13, + BMap_Symbol_SHAPE_CLOCK: 14, + BMap_Symbol_SHAPE_POINT: 9, + BMap_Symbol_SHAPE_PLANE: 10, + BMap_Symbol_SHAPE_CIRCLE: 1, + BMap_Symbol_SHAPE_RECTANGLE: 2, + BMap_Symbol_SHAPE_RHOMBUS: 3, + BMap_Symbol_SHAPE_STAR: 4, + BMap_Symbol_SHAPE_BACKWARD_CLOSED_ARROW: 5, + BMap_Symbol_SHAPE_FORWARD_CLOSED_ARROW: 6, + BMap_Symbol_SHAPE_BACKWARD_OPEN_ARROW: 7, + BMap_Symbol_SHAPE_FORWARD_OPEN_ARROW: 8 + }); + S(window, { + BMAP_CONTEXT_MENU_ICON_ZOOMIN: ec, + BMAP_CONTEXT_MENU_ICON_ZOOMOUT: fc + }); + S(window, { + BMAP_SYS_DRAWER: Ka, + BMAP_SVG_DRAWER: 1, + BMAP_VML_DRAWER: 2, + BMAP_CANVAS_DRAWER: 3, + BMAP_SVG_DRAWER_FIRST: 4 + }); + z.VU(); +})() \ No newline at end of file diff --git a/public/static/bdmap/js/getmodules.js b/public/static/bdmap/js/getmodules.js new file mode 100644 index 0000000..d006084 --- /dev/null +++ b/public/static/bdmap/js/getmodules.js @@ -0,0 +1,17 @@ +_jsload2 && _jsload2('vectordrawlib', 'function Gf(a){this.aI=o;this.k=x.object.extend(a||{},{Ch:o});Hc.call(this,this.k);this.yg={};this.loaded=q;this.Gt=p;this.XB=q;this.WJ={road:"rd",water:"wt",building:"bd",land:"ld",government:"gv",point:"pts"};this.RE={market:"mt",food:"fd",communications:"cm",hotel:"ht",attractions:"at",recreation:"rc"}}Gf.prototype=new Hc; Gf.prototype.ra=function(a){if(!this.loaded){this.loaded=o;var b=this;b.map=a;b.cb=b.map.cb;b.map=a;b.Vw=q;b.wK=p;b.oe="df";b.k.poiElements&&b.k.poiElements.name&&(b.oe=b.RE[b.k.poiElements.name]);b.Qe=b.k.style||"normal";b.ln=b.k.styleStr||p;b.dq=200;b.ze=p;b.Zd=0;b.xb=this.cb.Nn(0);b.Nd=this.cb.Nn(10);b.cb.ld.appendChild(this.xb);b.cb.ld.appendChild(this.Nd);b.cb.xb=b.xb;b.cb.Nd=this.Nd;b.Jb=new z.VectorDrawLib;b.gs="";b.k.features&&(b.gs=b.TW(b.k.features));b.Jb.mC=b.Qe;b.Zl();b.Qe&&"normal"!== b.Qe||b.ln&&0d.map.height?b=o:(f=[],f.push("
            "),f.push("\'"+e.name+"\\u5916\\u666f\'"),f.push("
            \\u8fdb\\u5165\\u5168\\u666f>>"), f.push("
            "),l.innerHTML=f.join("")));i&&(f=M("p",{style:"padding:0;margin:0;line-height:18px;font-size:12px;color:#4d4d4d;"}),f.innerHTML="\\u5730\\u5740\\uff1a"+i,l.appendChild(f));k&&(f=M("p",{style:"padding:0;margin:0;line-height:18px;font-size:12px;color:#4d4d4d;"}),f.innerHTML="\\u7535\\u8bdd\\uff1a"+k,l.appendChild(f));e.tag&&(k=M("p",{style:"padding:0;margin:0;line-height:18px;font-size:12px;color:#4d4d4d;color:#7f7f7f;"}),k.innerHTML="\\u6807\\u7b7e\\uff1a"+e.tag,l.appendChild(k));a="http://api.map.baidu.com/place/detail?uid="+ a+"&output=html&source=jsapi&operate=mapclick&clicktype=vector";k="
            "+e.name+"";a=new tc(l,{width:322,enableSearchTool:o,title:k+("\\u8be6\\u60c5»")+ "
            ",enableParano:b});b&&(a.street_id=g);a.addEventListener("open",function(){var a=x.$("panoInfoBox");if(a){var b=e.street_id||"";d.$V("click",function(){Ra(5052);d.Dq(b)},a,"pano_thumnail_img|panoInfoBoxTitleBg|panoInfoBoxTitleContent")}});this.map.Nb(a,c)}},Dq:function(a){var b=z.sg("pano","scape/")[0],c=this,d=(new Date).getTime(),e="Pano"+d;z[e]=function(a){var b=c.map.tm(),a=a.content[0];b.rc(a.poiinfo.PID);b.show();b.Mc({heading:a.poiinfo.Dir,pitch:a.poiinfo.Pitch})};d=(new Date).getTime(); pa(b+("?qt=poi&udt=20131021&uid="+a+"&t="+d+"&fn=BMap."+e),q)},Vq:function(a){for(var b=[],c=0,d=a.length;ck.left&&c<=k.left+f&&d>k.top&&d<=k.top+f){e=b[g];break}}if(e==j||e.Xd==j)return q;f=e.Xd;b=0;for(i=f.length;b=iconX-15&&a.offsetX<=iconX+15&&a.offsetY>=iconY-15&&a.offsetY<=iconY+15))return{type:c[5].c||"",name:d,uid:n.u||"",point:{x:iconX,y:iconY},clickFea:{tileId:e.id,tile:e,fea:c}}}return q},Nx:function(){return/M040/i.test(navigator.userAgent)},Qf:function(a){for(var b=a.offsetLeft,c=a.offsetTop,a=a.offsetParent;a&& a!=this.map.Na();)b+=a.offsetLeft,c+=a.offsetTop,a=a.offsetParent;return{top:c,left:b}},nC:function(a){if(this.map.Vb()){this.map.pa().k.$b=18;var a=this.Gt=a,b;for(b in a)switch(b){case "style":this.Lp(a);break;case "styleStr":this.Lp(a);break;case "features":this.ON(a[b]);break;case "poiElements":this.WN(a[b])}}},bE:function(){this.pu();"dark"==this.Qe?x.D.Ua(this.xb,"light_gray_background"):x.D.Ua(this.xb,"gray_background")},pu:function(){x.D.Sb(this.xb,"gray_background");x.D.Sb(this.xb,"light_gray_background")}, $V:function(a,b,c,d){var e=this;c.Om||(c.Om=[],c.handle={});c.Om.push({filter:d,nm:b});c.handle[a]||(c.addEventListener(a,function(a){for(var b=a.target;b!=c;){e.Gb(c.Om,function(c,d){RegExp(d.filter).test(b.getAttribute("filter"))&&d.nm.call(b,a,b.getAttribute("filter"))});b=b.parentNode}},q),c.handle[a]=o)},Gb:function(a,b){for(var c=0,d=a.length;ca?"_":"")+(0>b?"$":"")+parseInt(Math.abs(a)+""+Math.abs(b)+""+d,10).toString(36);if(c&&e)if(g.bi)if("no"==g.bi)v="&layers=&features="+g.bi,c.Xd=p,e.Xd=p,this.$l? (f=c.getContext("2d"),a=e.getContext("2d"),f.canvas.width=f.canvas.width,a.canvas.width=a.canvas.width,a=f=p):(g.nj(c),g.nj(e)),g.We=0;else if(-1=this.We-this.jj&&this.map.dispatchEvent(new O("onallvectorloaded"))},EV:function(a,b){var c=q;if(a.length&&b.length&&a.length==b.length){for(var d=0,e=a.length;dd&&this.PF(a,C,A,d);var B=1;z.Db.bM(v)&&(z.Db.YK(a,C-e/2,A-D/2,e,D,{fillStyle:l(m)}),B=0);f?(a.save(),a.scale(0.9,0.9),k&&a.strokeText(n[t],(C-e/2+1)/0.9,(A+D/2+1)/0.9),a.fillText(n[t],(C-e/2+1)/0.9,(A+D/2+1)/0.9),a.restore()):(B=i?2:B,k&&a.strokeText(n[t],C-e/2,A+D/2+B),a.fillText(n[t],C-e/2,A+D/2+B))}}},Us:function(a,b){var c=[Hf,"",[]];a&&(a[0]==Lf?c[2]=a:c=a);b&&(b[0]== Lf?c[2]=b:c[1]=b[1]);return c},PF:function(a,b,c,d){d=d/180*Math.PI;cv=Math.cos(d);sv=Math.sin(d);yy=xx=cv;xy=sv;yx=-sv;x0=b-b*cv-c*sv;y0=c+b*sv-c*cv;a.transform(xx,yx,xy,yy,x0,y0)},eF:function(a,b,c,d){if(16>=c)for(var c=0,e=b.length;c=d?1:0;default:return 0}},kt:function(a,b){return a&&0=c.current_city.code&&(c.current_city.name="\\u53f0\\u6e7e\\u7701");2E4<=c.current_city.code&&20499>=c.current_city.code&&(c.current_city.name="\\u65b0\\u52a0\\u5761");20500<=c.current_city.code&& 25999>=c.current_city.code&&(c.current_city.name="\\u6cf0\\u56fd");26E3<=c.current_city.code&&29999>=c.current_city.code&&(c.current_city.name="\\u65e5\\u672c");3E4<=c.current_city.code&&30999>=c.current_city.code&&(c.current_city.name="\\u97e9\\u56fd");31E3<=c.current_city.code&&37E3>=c.current_city.code&&(c.current_city.name="\\u4e9a\\u592a");46609<=c.current_city.code&&52505>=c.current_city.code&&(c.current_city.name="\\u6b27\\u6d32");39509<=c.current_city.code&&53500>=c.current_city.code&&(c.current_city.name= "\\u5357\\u7f8e\\u6d32");54E3<=c.current_city.code&&7E4>=c.current_city.code&&(c.current_city.name="\\u5317\\u7f8e\\u6d32");54003===c.current_city.code&&(60731<=c.current_city.code&&61123>=c.current_city.code)&&(c.current_city.name="\\u7f8e\\u56fd");if(54015===c.current_city.code||57970<=c.current_city.code&&60223>=c.current_city.code)c.current_city.name="\\u52a0\\u62ff\\u5927";if(54025===c.current_city.code||54338<=c.current_city.code&&57374>=c.current_city.code)c.current_city.name="\\u58a8\\u897f\\u54e5";b.jD= o;if(c&&c.current_city){var d=c.current_city.name,e=c.current_city.code;e!==a.$r&&a.dispatchEvent("citychange",{name:d,code:e});a.Yg=d;a.$r=c.current_city.code;G()||Df(a)}},{qt:"cen",b:e.lng+","+e.lat+";"+c.lng+","+c.lat,l:d},"","",o)}};a.addEventListener("load",function(){b.bb()});a.addEventListener("moveend",function(){b.bb()});a.addEventListener("zoomend",function(){b.bb()});b.bb()}}); function Cf(a){if(!a.R.IV){a.R.IV=o;if(!a.Lw){var b=new N(2,2);G()&&(b.width=72,b.height=0);var c=new Yb({offset:b,printable:o});a.Lw=c}G()||(Df(a),a.addEventListener("maptypechange",function(){Df(a)}));a.ow(c);var d=new Ef;d.k={zg:o};a.ow(d);a.addEventListener("resize",function(){if(this.Bb().width>=300&&a.Bb().height>=100){d.show();c.Ve(b)}else{d.U();c.Ve(new N(4,2))}});300<=a.Bb().width&&100<=a.Bb().height&&a.K.CY?d.show():(d.U(),c.Ve(new N(4,2)))}} function Df(a){if(!a.Lw){var b=new N(2,2);G()&&(b.width=72,b.height=0);b=new Yb({offset:b,printable:o});a.Lw=b}var c=a.Yg||"\\u4e2d\\u56fd",b=a.pa(),d="\\u5e38\\u5dde\\u5e02 \\u5357\\u660c\\u5e02 \\u4e4c\\u9c81\\u6728\\u9f50\\u5e02 \\u65e0\\u9521\\u5e02 \\u798f\\u5dde\\u5e02 \\u6cc9\\u5dde\\u5e02 \\u73e0\\u6d77\\u5e02 \\u8d35\\u9633\\u5e02".split(" "),e="\\u5317\\u4eac\\u5e02 \\u4e0a\\u6d77\\u5e02 \\u5e7f\\u5dde\\u5e02 \\u6df1\\u5733\\u5e02 \\u5b81\\u6ce2\\u5e02 \\u77f3\\u5bb6\\u5e84\\u5e02 \\u6c88\\u9633\\u5e02 \\u957f\\u6625\\u5e02 \\u9752\\u5c9b\\u5e02 \\u6e29\\u5dde\\u5e02 \\u53f0\\u5dde\\u5e02 \\u91d1\\u534e\\u5e02 \\u4f5b\\u5c71\\u5e02 \\u4e2d\\u5c71\\u5e02 \\u6606\\u660e\\u5e02 \\u5357\\u5b81\\u5e02 \\u82cf\\u5dde\\u5e02 \\u897f\\u5b89\\u5e02 \\u6d4e\\u5357\\u5e02 \\u90d1\\u5dde\\u5e02 \\u5408\\u80a5\\u5e02 \\u547c\\u548c\\u6d69\\u7279\\u5e02 \\u676d\\u5dde\\u5e02 \\u6210\\u90fd\\u5e02 \\u6b66\\u6c49\\u5e02 \\u957f\\u6c99\\u5e02 \\u5929\\u6d25\\u5e02 \\u5357\\u4eac\\u5e02 \\u91cd\\u5e86\\u5e02 \\u5927\\u8fde\\u5e02 \\u4e1c\\u839e\\u5e02 \\u53a6\\u95e8\\u5e02".split(" "), f=["\\u9999\\u6e2f\\u7279\\u522b\\u884c\\u653f\\u533a"],g;for(g in d)if(d[g]===c){var i=o;break}for(g in e)if(e[g]===c)break;for(g in f)if(f[g]===c){var k=o;break}if("\\u53f0\\u6e7e\\u7701"===c)var l=o;if("\\u65b0\\u52a0\\u5761"===c)var m=o;if("\\u65e5\\u672c"===c)var n=o;if("\\u97e9\\u56fd"===c)var t=o;if("\\u6cf0\\u56fd"===c)var v=o;if("\\u4e9a\\u592a"===c)var w=o;if("\\u6b27\\u6d32"===c)var y=o;if("\\u5357\\u7f8e\\u6d32"===c)var C=o;if("\\u5317\\u7f8e\\u6d32"===c)var A=o;if("\\u7f8e\\u56fd"===c)var D=o;if("\\u52a0\\u62ff\\u5927"=== c)var B=o;if("\\u58a8\\u897f\\u54e5"===c)var F=o;g=["© 2018 Baidu - GS(2016)2089\\u53f7 - \\u7532\\u6d4b\\u8d44\\u5b571100930 - \\u4eacICP\\u8bc1030173\\u53f7 - Data © "];c="rgba(255, 255, 255, 0.701961)";9>=a.fa()?g=["© 2018 Baidu - GS(2016)2089\\u53f7 - \\u7532\\u6d4b\\u8d44\\u5b571100930 - \\u4eacICP\\u8bc1030173\\u53f7 - Data © "]:l?g=["© 2018 Baidu - GS(2016)2089\\u53f7 - \\u7532\\u6d4b\\u8d44\\u5b571100930 - \\u4eacICP\\u8bc1030173\\u53f7 - Data © "]:n||t?g=["© 2018 Baidu - GS(2016)2089\\u53f7 - \\u7532\\u6d4b\\u8d44\\u5b571100930 - \\u4eacICP\\u8bc1030173\\u53f7 - Data © "]: m||v?g=["© 2018 Baidu - GS(2016)2089\\u53f7 - \\u7532\\u6d4b\\u8d44\\u5b571100930 - \\u4eacICP\\u8bc1030173\\u53f7 - Data © "]:w?g=["© 2018 Baidu - GS(2016)2089\\u53f7 - \\u7532\\u6d4b\\u8d44\\u5b571100930 - \\u4eacICP\\u8bc1030173\\u53f7 - Data © "]:y?g=["© 2018 Baidu - GS(2016)2089\\u53f7 - \\u7532\\u6d4b\\u8d44\\u5b571100930 - \\u4eacICP\\u8bc1030173\\u53f7 - Data © "]:C?g=["© 2018 Baidu - GS(2016)2089\\u53f7 - \\u7532\\u6d4b\\u8d44\\u5b571100930 - \\u4eacICP\\u8bc1030173\\u53f7 - Data © "]: A&&(g=["© 2018 Baidu - GS(2016)2089\\u53f7 - \\u7532\\u6d4b\\u8d44\\u5b571100930 - \\u4eacICP\\u8bc1030173\\u53f7 - Data © "]);if(9>=a.fa()){g.push("\\u957f\\u5730\\u4e07\\u65b9");g.push(\' & OpenStreetMap\');g.push(\' & HERE\');if(b===Za||b===Sa)g.push(\' & ESO\'),c="rgba(0,0,0,.7)";b===Pa&&(g.push(\' & \\u90fd\\u5e02\\u5708\'), c="none")}else if(n||t)g.push(\'OpenStreetMap\');else if(m||v)g.push(\'HERE\');else if(w)g.push(\'HERE\'),g.push(\' & Mapbox\');else if(y)g.push(\'OpenStreetMap\'),g.push(\' & Mapbox\'); else if(C)g.push(\'OpenStreetMap\'),g.push(\' & Mapbox\');else if(D||F||B)g.push(\'HERE\'),g.push(\' & Mapbox\');else if(A)g.push(\'OpenStreetMap\'),g.push(\' & Mapbox\'); else{g.push("\\u957f\\u5730\\u4e07\\u65b9");i&&g.push(\' & PalmCity\');k&&g.push(\' & MapKing\');l&&(g.push(\' & HERE\'),g.push(\' & \\u6a02\\u5ba2LocalKing\'));if(b===Za||b===Sa)c="rgba(0,0,0,.7)"; b===Pa&&(g.push(\' & \\u90fd\\u5e02\\u5708\'),c="none")}g.unshift(\'\');g.push("");g=g.join("");a.Lw.qw({id:1,content:g})}function Ef(){this.defaultAnchor=Wb;this.defaultOffset=new N(1,20);G()&&(this.defaultOffset=new N(1,1));this.vz=30;this.Bu=E.qa+(G()?"copyright_logo_s.png":"copyright_logo.png")}Ef.prototype=new Tb; Ef.prototype.initialize=function(a){this.C=a;var b=M("div");b.style.height="32px";var c=M("a",{title:"\\u5230\\u767e\\u5ea6\\u5730\\u56fe\\u67e5\\u770b\\u6b64\\u533a\\u57df",target:"_blank",href:"http://map.baidu.com/?sr=1"});c.style.outline="none";c.innerHTML=6===x.da.la?"
            ":"";G()&&(1");b.appendChild(c);a.Na().appendChild(b);return b};x.extend(La.prototype,{yb:function(){this.ca()},ca:function(){var a=this;a.to=function(){var b=a.Bb();if(a.width!=b.width||a.height!=b.height){var c=new N(a.width,a.height),d=new O("onbeforeresize");d.size=c;a.dispatchEvent(d);a.hk((b.width-a.width)/2,(b.height-a.height)/2);a.ve.style.width=(a.width=b.width)+"px";a.ve.style.height=(a.height=b.height)+"px";c=new O("onresize");c.size=b;a.dispatchEvent(c);b=parseInt(a.platform.style.left)||0;c=parseInt(a.platform.style.top)||0;0!=a.Ta&&(a.offsetX!=b|| a.offsetY!=c)&&a.Je(b,c)}};a.K.Gs&&!a.R.Xl&&(a.R.Xl=setInterval(a.to,80));G()||(x.M(a.ve,"mouseover",function(b){Ab(b);a.dispatchEvent(new O("onmouseover"))}),x.M(a.ve,"mouseout",function(b){Ab(b);a.dispatchEvent(new O("onmouseout"))}))},Je:function(a,b,c,d){!isNaN(a)&&!isNaN(b)&&!(this.offsetX==a&&this.offsetY==b)&&(this.hk(this.offsetX-a,this.offsetY-b,c),a=Math.round(a),b=Math.round(b),this.offsetX=a,this.offsetY=b,this.platform.style.left=a+"px",this.platform.style.top=b+"px",this.ve.style.left= -a+"px",this.ve.style.top=-b+"px",d!=q&&this.dispatchEvent(new O("onmoving")))},ui:function(a,b){if(a instanceof H){var c=this.bc(a),d=Math.round(this.width/2),e=Math.round(this.height/2),b=b||{};Math.abs(d-c.x)>this.width||Math.abs(e-c.y)>this.height||b.noAnimation?this.zI(d-c.x,e-c.y,a):this.zl(d-c.x,e-c.y,{duration:b.duration})}},zI:function(a,b,c){var d=this.R;d.Hc!=o&&(d.mb&&d.mb.stop(),this.dispatchEvent(new O("onmovestart")),this.Je(this.offsetX+a,this.offsetY+b,c),this.dispatchEvent(new O("onmoveend")))}, xg:function(a,b,c){a=Math.round(a)||0;b=Math.round(b)||0;c=c||{};Math.abs(a)<=this.width&&Math.abs(b)<=this.height&&!c.noAnimation?this.zl(a,b):this.zI(a,b)},zl:function(a,b,c){if(this.R.Hc!=o){c=c||{};this.dispatchEvent(new O("onmovestart"));var d=this,e=d.R;e.ly=d.offsetX;e.m=d.offsetY;e.JF&&e.JF.cancel();e.mb&&e.mb.stop();e.JF=new rb({Gc:c.Gc||d.K.Gc,duration:c.duration||d.K.JU,jc:c.jc||sb.OK,va:function(c){(this.EF=d.R.Hc)||d.Je(e.ly+Math.ceil(a*c),e.m+Math.ceil(b*c))},finish:function(){d.dispatchEvent(new O("onmoveend")); d.R.JF=q;d.R.zi==o&&(d.R.zi=q,0!=d.R.lc&&d.eb())}})}},IX:function(a,b){var c=this.pa();if("object"!=typeof c)return p;c=256*c.Bc(b);a=R.zb(a);return{qy:parseInt(a.lng/c),Iw:parseInt(a.lat/c),ug:b}}});S(X,{panTo:X.ui,panBy:X.xg}); '); +_jsload2 && _jsload2('scommon', 'var Tg=new N(23,25),Ug=new N(9,25),Vg=new N(9,0);U.PU=function(a,b,c,d){var e=Wg(b);if(e&&!(0>c||9b.length)return;b[0]=parseFloat(x.trim(b[0]));b[1]=parseFloat(x.trim(b[1]))}else if(b=a.slice(0),2>b.length)return;b=new H(b[0],b[1])}return b} U.TV=function(a){var b=a.title,c=a.Yr,d=a.z_,e=a.dW,a=a.TE||0;if(!b)return p;var f=b;1==a?f+="-\\u516c\\u4ea4\\u8f66\\u7ad9":3==a&&(f+="-\\u5730\\u94c1\\u7ad9");var g=13;e&&(g=10);f.replace(/[\\u0100-\\uffff]/g,"##").length>2*g+1&&(f=f.substring(0,g)+"…");b="

            "+f;e&&(b+="\\u8be6\\u60c5\\u00bb"); b+="

            ";e=[];e.push("
            ");if(c){f="\\u5730\\u5740\\uff1a";if(1==a||3==a)f="\\u8f66\\u6b21\\uff1a";e.push(\'\');e.push(\'");d&&e.push(\'");e.push("
            \'+f+\' \');e.push(c+" 
            \\u7535\\u8bdd\\uff1a\'+ d+"
            ")}else d&&(e.push(\'\'),e.push(\'
            \\u7535\\u8bdd\\uff1a\'+d+"
            "));e.push("
            ");return new tc(e.join(""),{title:b,height:0,width:230,margin:[10,10,20,10]})}; U.xo=function(a,b,c,d){if(b=Wg(b))return d=new T(b,{icon:G()?new qc(E.qa+"dest_mkr.png",new N(29,34),{anchor:new N(14,32),imageSize:new N(94,41),imageOffset:new N(-29*d,0),infoWindowAnchor:new N(14,0)}):new qc(E.qa+"dest_markers.png",new N(42,34),{anchor:new N(14,32),imageOffset:new N(0,-34*d),infoWindowAnchor:new N(14,0)}),baseZIndex:35E5,draggingCursor:"pointer"}),a.Ja(d),c&&d.Cc(c),d};U.yo=function(a,b){return U.Rl(a,b,cd)}; U.CP=[{stroke:6,color:"#0030ff",opacity:0.45,style:"solid"},{stroke:5,color:"#00bd00",opacity:0.95,style:"solid"},{stroke:5,color:"#ffac00",opacity:0.95,style:"solid"},{stroke:5,color:"#f41c0d",opacity:0.95,style:"solid"}]; U.BP=[{stroke:6,color:"#0030ff",opacity:0.45,style:"solid"},{stroke:6,color:"#0030ff",opacity:0.45,style:"solid"},{stroke:4,color:"#30a208",opacity:0.55,style:"dashed"},{stroke:5,color:"#0030ff",opacity:0.45,style:"solid"},{stroke:4,color:"#ff0103",opacity:0.65,style:"dashed"},{stroke:5,color:"#ff0103",opacity:0.65,style:"solid"}]; U.IJ=function(a,b,c){var d=U.CP;"undefined"==typeof c&&(c=0);if(d[c])return d=d[c],b=new Dc(b,{strokeWeight:d.stroke,strokeColor:d.color,strokeOpacity:d.opacity,strokeStyle:d.style,clickable:q}),a.Ja(b),b.m1=c,b}; U.Rl=function(a,b,c){var d=U.BP;"undefined"==typeof c&&(c=0);if(d[c]){var e=d[c],d=new Dc(b,{strokeWeight:e.stroke,strokeColor:e.color,strokeOpacity:e.opacity,strokeStyle:e.style,clickable:q});a.Ja(d);d.g1=c;c==cd&&(b=new Dc(b,{strokeWeight:e.stroke-2,strokeColor:"#fff",strokeOpacity:0.3,clickable:q}),d.ZA=b,a.Ja(b));return d}}; U.Mw=function(a){var b=a.content,c=a.Pw,d=a.total,e=a.$x,f=a.z3,a=a.UX,g=["
            "];b&&g.push("
            "+b+"
            ");a||g.push(U.KW(d,c));g.push("
            ");b=new tc(g.join(""),{title:"",height:0,width:220,margin:[10,10,20,10]});if(a)return b;b.addEventListener("open",function(){var a=G()?"touchend":"click";x.Dc("trans_prev")&&x.M(x.Dc("trans_prev"),a,function(){e&&"function"==typeof e&&e(c-1,f)});x.Dc("trans_next")&&x.M(x.Dc("trans_next"), a,function(){e&&"function"==typeof e&&e(c+1,f)})});return b}; U.KW=function(a,b){var c=[];c.push(\'\');c.push(\'");c.push(\'
            \');0==b?c.push(\'\\u4e0a\\u4e00\\u6b65\'):c.push(\'\\u4e0a\\u4e00\\u6b65\');c.push("\'); b==a+1?c.push(\'\\u4e0b\\u4e00\\u6b65\'):c.push(\'\\u4e0b\\u4e00\\u6b65\');c.push("
            ");return c.join("")}; U.KJ=function(a,b,c,d){if(b=Wg(b)){c=c||0;if(G())c=new qc(E.qa+"dest_mkr.png",new N(20,20),{imageSize:new N(94,41),imageOffset:new N(-59,-21*c),infoWindowAnchor:new N(10,0)});else{var e=-55;1==c&&(e=-76);c=new qc(E.qa+"trans_icons.png",new N(21,21),{imageOffset:new N(0,e),infoWindowAnchor:new N(10,0)})}c=new T(b,{icon:c});a.Ja(c);d&&c.Cc(d);return c}};U.Ts=function(a){return a&&a.La&&a.La.og?a.La.og.childNodes[0]:p}; U.SU=function(a,b,c){b=new T(b,{icon:new qc(Kd.tU,new N(11,11))});c&&b.Cc(c);a.Ja(b);return b};U.FJ=function(a,b){var c=new T(b,{icon:new qc(E.qa+"drag.png",new N(11,11)),draggingCursor:"pointer"});a.Ja(c);c.Xt(10);return c};U.LJ=function(a,b,c){b=new T(b,{icon:new qc(E.qa+"way-points.png",new N(36,40),{imageOffset:new N(-11+-36*c,-35)}),draggingCursor:"pointer",offset:new N(5,-20)});a.Ja(b);b.Xt(10);return b}; U.tK=function(){var a=new uc("\\u62d6\\u52a8\\u4ee5\\u66f4\\u6539\\u8def\\u7ebf",{offset:new N(30,-10)});a.Ld({border:"solid 1px gray",padding:"2px",whiteSpace:"nowrap",background:"#fff"});return a};U.WW=function(a,b){if(a&&b)return Math.round(Math.sqrt(Math.pow(a.x-b.x,2)+Math.pow(a.y-b.y,2)))}; U.QU=function(a,b,c,d){var e={type:"RouteAddrMarker"},a=Wg(a),e=e||{};e.type=e.type||"normal";if(a&&!("undefined"==typeof b||0>b||9a&&(a=1);18b?b=0:0.25b?b=1:32=i&&(f=f.join(";")); if(2==i){b=(f[0]+";"+f[1]).split(";");e=[];for(c=0;cb.length)return;b[0]=parseFloat(ja.trim(b[0]));b[1]=parseFloat(ja.trim(b[1]))}else if(b=a.slice(0),2>b.length)return;b=new z.Yf(b[0],b[1])}return b};P.dZ=function(a){a=a.split(",");a=new H(a[0],a[1]);return R.Ab(a)}; P.ug={country:4,province:11,city:12,t1:13};var ah=["=",".","-","*"],bh=8388608; function $g(a){var b;b=a.charAt(0);var c=-1;b==ah[1]?c=Zg:b==ah[2]?c=Yg:b==ah[3]&&(c=Xg);b=c;for(var c=a.substr(1),d=0,e=c.length,f=[],a=[],g=[];de-d)return 0;a:{for(var g=c.substr(d,13),i=f,k=0,l=0,m=0,n=0;6>n;n++){m=ch(g.substr(1+n,1));if(0>m){g=-1-n;break a}k+=m<<6*n;m=ch(g.substr(7+n,1));if(0>m){g=-7-n;break a}l+=m<<6*n}i.push(k);i.push(l);g=0}if(0>g)return 0;d+=13}else if(";"==c.charAt(d))a.push(f.slice(0)),f.length=0,++d;else{if(8>e-d)return 0;g=dh(c.substr(d, 8),f);if(0>g)return 0;d+=8}c=0;for(d=a.length;cc)return-1;for(var d=0,e=0,f=0,g=0;4>g;g++){f=ch(a.substr(g,1));if(0>f)return-1-g;d+=f<<6*g;f=ch(a.substr(4+g,1));if(0>f)return-5-g;e+=f<<6*g}d>bh&&(d=bh-d);e>bh&&(e=bh-e);b.push(b[c-2]+d);b.push(b[c-1]+e);return 0}function ch(a){var b=a.charCodeAt(0);return"A"<=a&&"Z">=a?b-65:"a"<=a&&"z">=a?26+b-97:"0"<=a&&"9">=a?52+b-48:"+"==a?62:"/"==a?63:-1}; '); +_jsload2 && _jsload2('mapclick', 'var Xg=0,Yg=1,Zg=2,Jh,Kh=p;Ta=function(a){this.map=a;this.SE=this.Gw=p;this.Eo={};this.EY=8;this.bm=[];this.o_=4;this.BF="";this.Ok=this.ce=this.de=this.we=this.Qm=p;this.lp=this.Cm="";this.Ly=p;this.oi=0;this.oE=q;this.nN=p;this.gm=this.XK="";this.tj=new qc(E.qa+"spotmkrs.png",new N(18,18),{anchor:new N(9,9),imageOffset:new N(0,0),infoWindowOffset:new N(10,0)});this.cY()};Kh=Ta.prototype; Kh.cY=function(){var a=this;a.RU();a.bind();a.Wa=o;setTimeout(function(){a.Jn()},1E3);setInterval(function(){a.oE=q},300)};Kh.F4=ca(q);Kh.bind=function(){this.fV();this.gV();this.hV();this.iV()};Kh.iV=function(){var a=this,b=this.map;b.addEventListener("vectorchanged",function(c,d){d.isvector?a.close():b.K.lj==o&&a.open()})}; Kh.GY=function(a){var b=this.map;if(this.Wa)if(10>b.fa())this.dm();else if(this.gC(),a&&a.point)if(this.oi&&(this.nN=a.point),this.oE=o,1!=this.oi&&(this.ce&&this.ce.U(),this.de&&this.de.U(),this.Kd&&this.Kd.U()),a=b.IX(a.point,b.fa()),a.qy&&a.Iw&&a.ug)this.gm=a.ug+"_"+a.qy+"_"+a.Iw,this.Eo[a.ug+"_"+a.qy+"_"+a.Iw]?this.BF!=this.gm&&this.GG(this.gm):this.IZ({wE:a.ug,x:a.qy,y:a.Iw})}; Kh.GG=function(a){var b=this.map;if(b.pa()!=Ma&&b.pa()!=Sa)this.dm(),this.zk();else if(b=a.split("_"),b=b[0]+"_"+b[1]+"_"+b[2],this.Eo[b]){this.dm();this.SE=this.JJ(this.Eo[b][a]?this.Eo[b][a]:[],"MAP_CLICK_POI");this.BF=a;for(var a=-1,c=0,d=this.bm.length;cthis.map.fa())for(var b=0,c=a.spots.length;bb.fa())&&a&&(this.oi=0,this.Ok&&(b.R.ob&&b.R.ob.close(),this.ti=a,this.LZ(this.Ok)))};Kh.LZ=function(a){if(a){var b=this;dd.bb(function(c){b.YR(a,c)},{qt:"inf",uid:a,operate:"mapclick",clicktype:"tile"})}}; Kh.YR=function(a,b){var c=this,d=this.map;if(b&&b.content){var e=b.content,f=e.pano||0;P.vb(e.geo,o);if(!g)var g={};g.isFromMPC=o;var i=e.addr,g=e.street_id||"";if(1==e.poiType||3==e.poiType)i=P.unique(i.split(";")).join("; ");var k=e.tel;k&&(k=k.replace(/,/g,", "));c.Vq(e.cla);var l=M("div",{style:"font-size:12px;padding:5px 0;overflow:hidden;*zoom:1;"}),m=q;f&&(360>c.map.height?m=o:(f=[],f.push("
            "), f.push("\'"+e.name+"\\u5916\\u666f\'"),f.push("
            \\u8fdb\\u5165\\u5168\\u666f>>"),f.push("
            "),l.innerHTML= f.join("")));i&&(f=M("p",{style:"padding:0;margin:0;line-height:18px;font-size:12px;color:#4d4d4d;"}),f.innerHTML="\\u5730\\u5740\\uff1a"+i,l.appendChild(f));k&&(i=M("p",{style:"padding:0;margin:0;line-height:18px;font-size:12px;color:#4d4d4d;"}),i.innerHTML="\\u7535\\u8bdd\\uff1a"+k,l.appendChild(i));e.tag&&(k=M("p",{style:"padding:0;margin:0;line-height:18px;font-size:12px;color:#4d4d4d;color:#7f7f7f;"}),k.innerHTML="\\u6807\\u7b7e\\uff1a"+e.tag,l.appendChild(k));var k="http://api.map.baidu.com/place/detail?uid="+ a+"&output=html&source=jsapi&operate=mapclick&clicktype=tile",i="
            "+e.name+"",n=new tc(l,{width:322,enableSearchTool:o,title:i+("\\u8be6\\u60c5»")+ "
            ",enableParano:m});m&&(n.street_id=g);n.addEventListener("open",function(){var a=x.$("panoInfoBox");if(a){var b=e.street_id||"";Pb(function(){Ra(6006);c.Dq(b)},a,"pano_thumnail_img|panoInfoBoxTitleBg|panoInfoBoxTitleContent")}a=x.$("detailDiv");Pb(function(){Ra(6001)},a,"detailInfo")});n.addEventListener("close",function(){c.ce&&c.ce.U();c.de&&c.de.U();c.Kd&&c.Kd.U();d.R.ob.ab&&d.R.ob.ab.U();Jh=c.ti=p;n.removeEventListener("close",arguments.callee)});c.ti?(c.ti.Nb(n),Jh||(Jh=c.Ok+"|"+(c.Cm? c.Cm:c.lp))):c.we||(g=P.vb(e.geo,o).point,c.Cm&&(l=Lh[c.Cm],c.tj.Rt(new N(l.x,l.y)),l=Mh[l.W],c.tj.ye(new N(l.a,l.$a)),c.tj.qc(new N(l.a/2,l.$a/2))),c.we=new T(g,{icon:c.tj,zIndexFixed:o}),d.Ja(c.we),c.we.addEventListener("click",function(){Jh=c.Ok+"|"+(c.Cm?c.Cm:c.lp);c.kC(c.we)}),c.we.addEventListener("mouseout",function(){c.TM(c.we)}),c.we.Nb(n));c.ce&&c.ce.U();c.de&&c.de.U();c.Kd&&c.Kd.U()}}; Kh.Dq=function(a){var b=z.sg("pano","scape/")[0],c=this,d=(new Date).getTime(),e="Pano"+d;z[e]=function(a){var b=c.map.tm(),a=a.content[0];b.rc(a.poiinfo.PID);b.show();b.Mc({heading:a.poiinfo.Dir,pitch:a.poiinfo.Pitch})};d=(new Date).getTime();pa(b+("?qt=poi&udt=20131021&uid="+a+"&t="+d+"&fn=BMap."+e),q)}; Kh.JY=function(a){var b=this.map;if(!(10>b.fa())){var c=a.spots;if(c&&!(1>c.length||"MAP_CLICK_POI"!=c[0].tag)){var d=this,e=p,f=p,g=0;d.ti&&d.ti===d.we?(e=d.Qm,f=d.de,g=2):(e=d.we,f=d.ce,g=1);if(!b.R.ob||!(b.R.ob.Wa()==o&&Jh&&c[0].Xe.uid==Jh.split("|")[0])){if(c[0].Xe.type&&Lh[c[0].Xe.type]){var i=Lh[c[0].Xe.type];d.lp=c[0].Xe.type}else i=Lh.blank,d.lp="blank";var k=Mh[i.W];d.tj.ye(new N(k.a,k.$a));d.tj.qc(new N(k.a/2,k.$a/2));d.tj.Rt(new N(i.x,i.y));k=c[0].Xe.VL?c[0].Xe.VL:c[0].m;e&&e.map?(e.U(), e.ta(k),e.Ub(d.tj),e.show(),d.Ok=c[0].Xe.uid):(e=new T(k,{icon:d.tj,zIndexFixed:o,baseZIndex:3E6}),d.Ok=c[0].Xe.uid,b.Ja(e),1==g?d.we=e:d.Qm=e,e.addEventListener("click",function(){d.Cm=d.lp;Jh=d.Ok+"|"+d.lp;d.kC(e)}),e.addEventListener("mouseout",function(){d.TM(e)}));e.yi(o);i=[{backgroundColor:"#FFFFE1",borderColor:"#8C8C8C",color:"#4D4D4D"},{backgroundColor:"#F0F7FF",borderColor:"#7AA3CC",color:"#224B73"}];d.Ly=e;f&&f.map?(f.U(),c[0].Xe.name?(d.oi=1,f.ad(c[0].Xe.name),a=d.lx(k,1,{x:Math.abs(c[0].v[0])+ 6,y:-9}),f.ta(a),f.Ld(i[1]),f.show()):(d.oi=2,f.ad("\\u70b9\\u51fb\\u53ef\\u67e5\\u770b\\u8be6\\u60c5"),f.Ld(i[0]),d.qO(f))):c[0].Xe.name?(d.oi=1,a=d.lx(k,1,{x:Math.abs(c[0].v[0])+6,y:-9}),f=new uc(c[0].Xe.name,{position:a}),b.Ja(f),1==g?d.ce=f:d.de=f,f.Ld(i[1])):(d.oi=2,f=new uc("\\u70b9\\u51fb\\u53ef\\u67e5\\u770b\\u8be6\\u60c5",{position:d.lx(a.point,0)}),b.Ja(f),f.U(),1==g?d.ce=f:d.de=f,f.Ld(i[0]),d.qO(f))}}}}; Kh.qO=function(a){var b=this;b.qn=setInterval(function(){b.oE||setTimeout(function(){if(2==b.oi){var c=b.lx(b.nN,0);a.ta(c);a.show()}clearInterval(b.qn)},500)},200)};Kh.lx=function(a,b,c){var d=this.map,a=d.bc(a);if(c)var e=c;else 0==b?e={x:-1,y:24}:1==b&&(e={x:12,y:-9});try{if(0==b||1==b)return d.wb(new Q(a.x+e.x,a.y+e.y))}catch(f){}}; Kh.IY=function(){var a=this.map;if(!(10>a.fa())){this.oi=0;this.ce&&this.ce.U();this.de&&this.de.U();this.Kd&&this.Kd.U();this.qn&&clearInterval(this.qn);this.Ly=p;var b=this.Qm;if(b&&b.map&&(!a.R.ob||a.R.ob.Wa()==q||a.R.ob.ab!==b)){if(this.ti&&this.ti===b)return;b.U()}(b=this.we)&&b.map&&((!a.R.ob||a.R.ob.Wa()==q||a.R.ob.ab!==b)&&!(this.ti&&this.ti===b))&&b.U()}}; Kh.TM=function(a){var b=this.map;!(10>b.fa())&&a&&(this.ce&&this.ce.U(),this.de&&this.de.U(),this.Kd&&this.Kd.U(),this.ti!==a&&!(b.R.ob&&b.R.ob.Wa()==o)&&(this.Ok=""))}; Kh.fV=function(){var a=this,b=this.map;b.addEventListener("load",function(){a.Jn()});b.addEventListener("moveend",function(){a.Jn()});b.addEventListener("dragend",function(){a.Jn()});b.addEventListener("zoomend",function(){a.gC();a.dm();if(!b.R.ob||b.R.ob.Wa()!=o)a.we&&a.we.U(),a.Qm&&a.Qm.U(),a.ce&&a.ce.U(),a.de&&a.de.U(),a.Kd&&a.Kd.U(),a.oi=0,a.qn&&clearInterval(a.qn);a.Jn()});b.addEventListener("resize",function(){a.Jn()})}; Kh.Jn=function(){var a=this.map;this.Wa&&10>a.fa()&&(this.dm(),this.Gw||(this.Gw=this.JJ(Nh,"MAP_CLICK_CITY")))};Kh.IZ=function(a){var b=this.map,c=this.map.ba;if(a&&this.XK!=a.wE+"_"+a.x+"_"+a.y){this.XK=a.wE+"_"+a.x+"_"+a.y;var d=[];d.push(z.url.proto+z.url.domain.TILE_ONLINE_URLS[Math.abs(a.x+a.y)%3]+"/js/?qt=vQuest&styles=pl");d.push("&x="+a.x+"&y="+a.y+"&z="+b.Oa+"&v=056&fn=MPC_Mgr."+c+".getPoiData");pa(d.join(""))}}; Kh.getPoiData=function(a){var b=a.content[0],c=this.map;if(!(0b.uids.length)){for(var d={},a=q,e=[],f=0,g=b.uids.length;fthis.EY&&(d=this.bm.shift(),delete this.Eo[d],delete d);a&&this.GG(this.gm)}};Kh.dm=function(){var a=this.map;this.SE&&(a.cm("MAP_CLICK_POI"),this.SE=p,this.gm=this.BF="")};Kh.gC=function(){var a=this.map;this.Gw&&(a.cm("MAP_CLICK_CITY"),this.Gw=p)}; Kh.zk=function(){this.we&&this.we.U();this.Qm&&this.Qm.U();this.ce&&this.ce.U();this.de&&this.de.U();this.Kd&&this.Kd.U();this.qn&&clearInterval(this.qn)};Kh.Vq=function(a){for(var b=[],c=0,d=a.length;c
            ");return a.join("")}; Eg.prototype.action=function(a,b){if(!Fg){var c=this.B;if(c){var d=4/3,e=Math.ceil((b?60:120)/2),f=Math.max(15,e/d),g=c.style;g.width=2*e+"px";g.height=2*f+"px";g.visibility="visible";c=c.children;b?(c[0].style.backgroundPosition="0 0",c[1].style.backgroundPosition="-7px 0",c[2].style.backgroundPosition="0 -7px",c[3].style.backgroundPosition="-7px -7px"):(c[0].style.backgroundPosition="-7px -7px",c[1].style.backgroundPosition="0 -7px",c[2].style.backgroundPosition="-7px 0",c[3].style.backgroundPosition= "0 0");var c=p,i=a.x-e,k=a.y-f;if(!isNaN(i)&&!isNaN(k)){g.left=i+"px";g.top=k+"px";var l=Math.ceil((b?120:60)/2),m=Math.max(15,l/d),l=l-e,m=Math.ceil(m-f),n=this.B.style;Fg&&Fg.end();Fg=new rb({Gc:20,duration:240,jc:sb.aD,Ko:100,va:function(a){if(!(a<0.1)){var b=Math.ceil(l*a),a=Math.ceil(m*a);n.width=(e+b)*2+"px";n.height=(f+a)*2+"px";n.left=i-b+"px";n.top=k-a+"px"}},finish:function(){Fg=q;setTimeout(function(){g.visibility="hidden"},300)}})}}}};z.Ue(function(a){function b(a){if(f.K.Ro){var b=new O("ondeepzoommousewheel");c(a,ma(b,a));i.d0.call(i,b);Ab(a)}}function c(a,b){var c=a.srcElement||a.target,d=a.offsetX||a.layerX||0,e=a.offsetY||a.layerY||0,g=p,i=p;1!==c.nodeType&&(c=c.parentNode);for(;c&&c!==f.Va;){c.ba&&(x.lang.Kc(c.ba)instanceof fb&&(g=x.lang.Kc(c.ba)),x.lang.Kc(c.ba)instanceof tc&&(i=x.lang.Kc(c.ba)));if(!(0===c.clientWidth&&0===c.clientHeight&&c.offsetParent&&"TD"===c.offsetParent.nodeName)&&"http://www.w3.org/2000/svg"!==c.namespaceURI)d+= c.offsetLeft||0,e+=c.offsetTop||0;else if("http://www.w3.org/2000/svg"===c.namespaceURI&&z.fq){var y=z.fq.Rs(f).ff;if(-1a.detail;var d=new Date;b.Xp=== o&&f.Oa===f.pa().sm()||b.Xp===q&&f.Oa===f.pa().Zo()||220>d-g?f.Ta^=Dg:(g=d,c(a,ma(b,a)),f.dispatchEvent(b),f.Ta^=Dg,a.returnValue=q);Ab(a)}}var f=a;f.tY=a.Vb();a.Va.F3=ca(q);x.M(f.platform,"mousemove",function(a){0===f.Ta&&f.dispatchEvent(c(a,ma(new O("onmousemove"),a)))});x.M(f.platform,"mousedown",function(a){if(f.K.hD){a=window.event||a;x.da.la||Ab(a);var b=f.R;b.Hc=o;var d=a.srcElement||a.target;b.mb&&(b.mb.stop(),b.mb=p,f.dispatchEvent(new O("onmoveend")));b.mu=a.clientX||a.pageX||0;for(b.nu= a.clientY||a.pageY||0;d&&d!==f.Va;){if(x.D.bt(d,"BMap_Marker")){b.Hc=q;var e=x.lang.Kc(d.ba);if(e instanceof T&&e.z.hf===o||e.z.Yb===o)return}d=d.parentNode}x.da.la&&f.ve.setCapture&&f.ve.setCapture();f.dispatchEvent(c(a,ma(new O("onmousedown"),a)));f.K.Yb&&(!(f.Ta&8)&&2!==a.button)&&(b.vp=b.mu,b.Ck=b.nu,b.ly=f.offsetX,b.m=f.offsetY,f.Ta|=8,f.platform.style.cursor=0===f.R.Pe.length?f.K.Fd:"pointer")}});x.M(document,"mousemove",function(a){var a=window.event||a,b=f.R,d=a.clientX||a.pageX||0,e=a.clientY|| a.pageY||0;if(b.mu||b.nu)b.Yx=d-b.mu,b.Zx=e-b.nu;var g=ab(),i=40g-b.ut)&&(i&&(b.qM=g),b.ut=g,f.Ta&8&&f.K.Yb)){var w=f.platform.style;w.cursor.replace(/"|\\s/g,"")!==f.K.Fd&&(w.cursor=f.K.Fd);b.Yj||(f.dispatchEvent(c(a,ma(new O("ondragstart"),a))),f.dispatchEvent(new O("onmovestart")),b.RC=new Q(d,e),b.SC=g);0===b.vp&&(0===b.Ck&&f.R.k3)&&(b.vp=d,b.Ck=e,b.ly=f.offsetX,b.m=f.offsetY);if(0!==d-b.vp||0!==e-b.Ck)f.R.Yj=o,f.dispatchEvent(c(a,ma(new O("ondragging"),a))),f.Je(b.ly+d-b.vp,b.m+ e-b.Ck,p,i)}});x.M(document,"mouseup",function(a){x.da.la&&f.ve.releaseCapture&&f.ve.releaseCapture();var b=f.R;b.O3&&f.a2(o);var a=window.event||a,d=a.clientX||a.pageX,e=a.clientY||a.pageY;if(f.Ta&8&&f.K.Yb){f.Ta^=8;f.platform.style.cursor=0===b.Pe.length?f.K.Xb:"pointer";if(f.R.Yj){var g=c(a,ma(new O("ondragend"),a));f.dispatchEvent(g);Gg(f,new Q(d,e))}b.Yj=q}b.Hc=q;2===a.button&&(b.mu=p,b.nu=p,b.Yx=0,b.Zx=0);f.dispatchEvent(c(a,ma(new O("onmouseup"),a)))});4<=x.da.nf?(x.M(f.Va,"mouseup",function(a){2=== a.button&&d(a)}),x.M(f.Va,"contextmenu",function(a){oa(a)})):x.M(f.Va,"contextmenu",function(a){d(a);oa(a)});var g=new Date,i;a.K.RK&&(i=new Hg(a),a.L1=i);if(x.da.la&&9>=x.da.la||f.tY)i=p;x.M(f.Va,"mousewheel",i?b:e);window.addEventListener&&f.Va.addEventListener("DOMMouseScroll",i?b:e,q);x.M(f.platform,"click",function(a){var b=new O("onclick"),d=new O("onclickex"),e=f.R;c(a,ma(b,a));c(a,ma(d,a));if(!f.Ta){var g=!e.Yx&&!e.Zx;g&&f.dispatchEvent(b);if(!e.Mi)e.Mi=setTimeout(function(){e.Mi=p;g&&f.dispatchEvent(d)}, f.K.jC)}e.mu=p;e.nu=p;e.Yx=0;e.Zx=0});x.M(f.platform,"dblclick",function(a){if(!f.Ta){f.Ta=f.Ta|Cg;x.da.la&&f.dispatchEvent(c(a,ma(new O("onclick"),a)));var b=f.R;if(b.Mi){clearTimeout(b.Mi);b.Mi=p}f.dispatchEvent(c(a,ma(new O("ondblclick"),a)));f.Ta=f.Ta^Cg}});x.M(document,"mousedown",function(b){var b=window.event||b,b=b.srcElement||b.target,c=f.R;c.aC=c.aC?x.D.contains(a.Va,b):x.D.contains(a.platform,b)})}); function Gg(a,b){if(a.K.Zw){var c=a.R,d=ab();if(100f){b.Od=g?b.Od+0.13:b.Od-0.16;var e=a.domEvent.wheelDelta- this.sM,f=e-this.zE,k=this.zE;this.zE=e;this.sM=a.domEvent.wheelDelta;this.rM=g;if("boolean"===typeof this.rM&&g!==this.rM||"padScroll"===this.Dk&&3===d&&!isNaN(f)&&50e&&0k)5>i&&(this.ht=q);else return}this.wN=this.Od;d=a.domEvent.wheelDelta/120||-a.domEvent.detail/3;0===d&&x.da.nf&&(d=-a.domEvent.deltaY);if(0!==d&&(d=Math.ceil(Math.abs(d))*(0<=d?1:-1),"padPinch"===this.Dk&&(d=a.domEvent.deltaY),i=0i&& (b.HE=-1),0=b.$b&&0i&&-1===b.IE))){"mouseWheel"!==this.Dk&&(d*=0.6);b.Od+=d;"mouseWheel"===this.Dk&&(b.Od=b.vM(b.Od));var l=new Q(a.jb.x,a.jb.y);if("mouseWheel"!==this.Dk){if(!b.Uk&&!b.ze&&!(0===b.Od||b.ht===o))b.ze=setTimeout(function(){var a=Math.abs(b.Od),a=Math.round(a);b.Od=g?a:-a;b.Od=b.vM(b.Od);b.Od!==0&&b.WO(l,b.Od);b.ze=p},30)}else b.Uk&&(b.Uk.stop(),b.Uk=p),b.ze&&clearTimeout(b.ze),b.ze=setTimeout(function(){b.WO(l,b.Od);b.ze=p},25)}}}; Jg.vM=function(a){var b=this.gc,c=this.$b,d=this.map.fa(),a=Math.min(Math.max(a,-3),3);d+a>c?a=c-d:d+a0){k=i+a*(g-i);y=-l*(k-1)*n-c.width*a;C=-m*(k-1)*t-c.height*a}else{k=i-a*(i-g);y=l*(1-k)*n;C=m*(1-k)*t}B[A]="translate3d("+y+"px, "+C+"px, 0) scale("+k+")";d.WE=k},finish:function(){var c=e.fa(),c=Math.round(c+b);e.Lc=e.Oa;e.Oa=c;var c=f.gA(a),g=e.pa().Bc(e.fa());e.mc=new H(c.lng+(e.width/2-a.x)*g,c.lat-(e.height/2-a.y)*g);e.gf=e.xe.oh(e.mc,e.Wb);w.visibility="";f.Uf();e.od&&(x.da.la&&x.da.la<8||document.compatMode=== "BackCompat"?x.D.show(e.od):setTimeout(function(){x.D.show(e.od)},100));f.wl.style.visibility="";f.bo.style.visibility="";e.dispatchEvent(new O("onzoomend"));d.Od=0;d.WE=1;setTimeout(function(){d.DN()},100);d.DN();d.Uk=p;d.HE=1;d.IE=-1;d.lE=q}})};Jg.DN=function(){this.Zg&&(Mc(this.Zg),this.Zg.parentNode&&(this.Zg.parentNode.removeChild(this.Zg),this.Zg.innerHTML="",this.Zg=p))}; function Ig(){var a="transform",b=document.createElement("div"),c=["Webkit","Moz","O","ms"],d=c.length,e="",b=b.style;a in b&&(e=a);for(a=a.replace(/^[a-z]/,function(a){return a.toUpperCase()});d--;){var f=c[d]+a;if(f in b){e=f;break}}return e}function Kg(a,b,c){var d="mouseWheel";if(120===a&&1>b)d="padPinch";else if(!isNaN(a)&&(10>a||120!==a)&&0===b%1)d="padScroll";x.da.nf&&0===c&&(d="padScroll");x.da.hF&&12===a&&(d="mouseWheel");return d};z.Ue(function(a){x.M(document,"keydown",function(b){a.R.zi==o&&(a.R.zi=q);if(a.K.$w&&a.R.aC)switch(b=window.event||b,b.keyCode||b.which){case 43:case 189:case 109:a.R.Hc=o;a.dispatchEvent(new O("onminuspress"));break;case 43:case 61:case 187:case 107:a.R.Hc=o;a.dispatchEvent(new O("onpluspress"));break;case 33:a.R.Hc=q;a.R.zi=o;a.xg(0,Math.round(0.8*a.height));oa(b);break;case 34:a.R.Hc=q;a.R.zi=o;a.xg(0,-Math.round(0.8*a.height));oa(b);break;case 35:a.R.Hc=q;a.R.zi=o;a.xg(-Math.round(0.8*a.width), 0);oa(b);break;case 36:a.R.Hc=q;a.R.zi=o;a.xg(Math.round(0.8*a.width),0);oa(b);break;case 37:a.R.Hc=o;a.R.lc|=1;a.eb();oa(b);break;case 38:a.R.Hc=o;a.R.lc|=2;a.eb();oa(b);break;case 39:a.R.Hc=o;a.R.lc|=4;a.eb();oa(b);break;case 40:a.R.Hc=o,a.R.lc|=8,a.eb(),oa(b)}});x.M(document,"keyup",function(b){if(a.K.$w)switch(b=window.event||b,b.keyCode||b.which){case 37:a.R.lc&=-2;0!=a.R.lc&&a.eb();break;case 38:a.R.lc&=-3;0!=a.R.lc&&a.eb();break;case 39:a.R.lc&=-5;0!=a.R.lc&&a.eb();break;case 40:a.R.lc&=-9, 0!=a.R.lc&&a.eb()}a.R.Hc=q});La.prototype.eb=function(){if(!this.eb.ay||!(this.eb.IA==this.R.lc&&this.R.zi==o)){var a=this,c=a.R.lc;a.eb.IA=c;a.eb.Kx=30;a.eb.duration=999;a.eb.jf=a.eb.kf=0;c&1&&(a.eb.jf=1);c&2&&(a.eb.kf=1);c&4&&(a.eb.jf=-1);c&8&&(a.eb.kf=-1);c&1&&c&4&&(a.eb.jf=0);c&2&&c&8&&(a.eb.kf=0);if(!a.eb.ay){a.eb.ay=o;a.eb.time=ab();a.eb.dV=a.eb.time;a.dispatchEvent(new O("onmovestart"));var d=new rb({Gc:a.eb.Kx,duration:a.eb.duration,jc:sb.yM,va:function(){var c=a.eb,f=a.R.lc;if(a.eb.IA!=f){a.eb.IA= f;if(f&1)c.jf=1;if(f&2)c.kf=1;if(f&4)c.jf=-1;if(f&8)c.kf=-1;if(f&1&&f&4)c.jf=0;if(f&2&&f&8)c.kf=0}if(a.R.zi==o){c.jf=0;c.kf=0}var f=ab(),g=Math.pow((f-c.dV)/c.duration,2);if(!a.R.lc){c.ay=q;d.EF=o;a.eb.time=ab();setTimeout(function(){a.dispatchEvent(new O("onmoveend"))},40)}var i=f-c.time,k=c.jf*i*g>=0?Math.ceil(c.jf*i*g):Math.floor(c.jf*i*g),g=c.kf*i*g>=0?Math.ceil(c.kf*i*g):Math.floor(c.kf*i*g);if(k!=0&&g!=0){k=Math.round(k*0.7);g=Math.round(g*0.7)}c.time=f;a.Je(a.offsetX+k,a.offsetY+g)},finish:function(){a.eb.time= ab();setTimeout(function(){a.OG()},a.eb.Kx)}})}}};La.prototype.OG=function(){var a=this,c=a.eb;a.R.zi&&(c.jf=0,c.kf=0);if(a.R.lc){var d=ab(),e=d-c.time,f=Math.ceil(c.jf*e),e=Math.ceil(c.kf*e);c.time=d;a.Je(a.offsetX+f,a.offsetY+e);setTimeout(function(){a.OG()},c.Kx)}else c.ay=q,a.dispatchEvent(new O("onmoveend"))}}); '); +_jsload2 && _jsload2('navictrl', 'x.extend(ib.prototype,{xf:function(){this.C&&this.Ee(this.C)},initialize:function(a){Tb.prototype.initialize.call(this,a);this.er();this.Lv();this.Aa();this.ca={};!G()?this.dQ():this.cQ();this.Mv(a.fa());this.eQ(a);this.k.uW&&this.j_();return this.B},er:function(){this.Oi||(this.Oi=o,this.YS=19,this.oo=-1,this.Pv=6,this.Wj=1,this.dl=this.co=-1,this.Nv=this.fJ=this.Nf=p,this.vz="1100")},eQ:function(a){var b=this;a.addEventListener("zoomend",function(){b.C&&(b.Mv(b.C.fa()),!b.qI&&b.jr&&(b.Cf=setTimeout(function(){b.oA()}, 1E3)))});a.addEventListener("mousewheel",function(){b.C&&(b.C.K.Ro&&b.jr)&&(b.Cf&&(clearTimeout(b.Cf),b.Cf=p),b.dJ())});a.addEventListener("load",function(){b.C&&b.Mv(b.C.fa())});a.addEventListener("maptypechange",function(){b.C&&b.ge()});a.addEventListener("zoomspanchange",function(){b.C&&b.ge()})},ge:function(){this.Lv();this.jn(this.k.type);this.C&&this.Mv(this.C.fa())},Lv:function(){var a=this.C.pa();this.Qh=this.C.K.gc;this.Ff=this.C.K.$b;this.jr=a==Pa||this.Qh!=a.Zo()||this.Ff!=a.sm()?q:o;this.B&& (this.B.style.width=this.xH(0).width+"px");this.k.AF||(this.jr=q);this.oo=this.Ff-this.Qh+1;this.co=this.Wj+(this.oo-1)*this.Pv},Aa:function(){Tb.prototype.Aa.call(this);var a=6==x.da.la?" BMap_ie6":"",b=" BMap_stdMpType"+this.k.type,c=this.B;x.D.Ua(c,"BMap_stdMpCtrl");x.D.Ua(c,a);x.D.Ua(c,b);c.innerHTML=this.Tq(this.k.type);this.vB(x.da.opera?"pointer":E.Xb);this.jd=x.$(c.children[0]);a=this.Nf=x.$(c.children[1]);this.Dh=x.$(a.children[0]);this.ag=x.$(a.children[1]);this.fJ=x.$(a.children[2]);this.Nv= x.$(a.children[2].children[0]);this.Ov=x.$(a.children[2].children[1]);this.dG=this.B.children[1];this.uD=this.B.children[2];this.jn(this.k.type)},dU:function(){var a=this.xH(this.k.type),b=a.width,c=a.height,d=a.vu,a=a.bu,e=(this.YS-this.oo)*this.Pv;0==this.k.type&&(c=0<=c-e?c-e:0,d=0<=d-e?d-e:0,a=0<=a-e?a-e:0);this.B.style.width=b+"px";this.B.style.height=c+"px";this.Nf.style.height=d+"px";this.Nf.style.width=b+"px";this.ag.style.top=G()?"44px":d-21+"px";this.fJ.style.height=a+"px";this.Nv.style.height= a+"px";this.Nf.children[0].style.left=3==this.k.type?this.Nf.children[1].style.left="0":this.Nf.children[1].style.left=""},xH:function(a){var b=62;if(!this.k.AF||this.C.pa()==Pa)b=37;return[{width:b,height:204,vu:159,Ry:37,bu:120,Fy:120},{width:37,height:97,vu:42,Ry:37,bu:0,Fy:0},{width:37,height:57,vu:0,Ry:0,bu:0,Fy:0},{width:22,height:42,vu:42,Ry:18,bu:0,Fy:0},{width:35,height:71,Ry:35,vu:71,bu:0,Fy:0}][a]},Tq:function(){var a=[];a.push(this.$z());a.push(this.aA());a.push(this.KR());return a.join("")}, $z:ca(\'
            \'),aA:function(){return G()?[\'
            \', \'
            \',\'
            \',\'
            \',\'
            \'].join(""): \'
            \'}, U0:ca(\'
            \'),S0:ca(\'
            \'), T0:ca(\'
            \'),KR:function(){return G()?[\'"].join(""):[\'"].join("")},WR:function(a){var b= this.WR;"undefined"===typeof b.$J&&(b.$J=me.B.getElementsByTagName("*"));for(var b=b.$J,c=p,d=b.length,e=p,c=0;c=a?a:0;G()&&(this.k.type=4);if(this.C&&this.B){var b=this.B;b.className=b.className.replace(/BMap_stdMpType[0-4]*/,"BMap_stdMpType"+this.k.type);this.dU();0!=a&&x.D.Sb(b.children[1].children[2],"hvr");this.qc(this.k.anchor)}},hp:function(){return this.k.type}, dQ:function(){function a(){if(0!=(c.C.Ta&128)){var e=x.$(g);c.dl=parseInt(e.style.top);x.D.Sb(g,"h");c.C.Ta&=-129;d&&(g&&g.releaseCapture)&&g.releaseCapture();x.da.opera||c.vB(E.Xb);c.C.Dg(c.Ff+1-Math.round(parseFloat(c.dl-c.Wj)/parseFloat(c.co-c.Wj)*(c.oo-1)+1));x.bd(document,"mousemove",b);x.bd(document,"mouseup",a)}}function b(a){0!=(c.C.Ta&128)&&(a=window.event||a,a=c.dl+(a.pageY||a.clientY)-c.ca.Ck,ac.co&&(a=c.co),g.style.top=a+"px",c.Ov.style.top=a+"px",c.Ov.style.height=parseInt(c.Nv.style.height)- a+4+"px")}var c=this,d=c.B;x.M(this.Nf,"mouseover",function(){c.jr&&(c.qI=o,c.Cf&&(clearTimeout(c.Cf),c.Cf=p),c.dJ())});x.M(this.Nf,"mouseout",function(){c.jr&&(c.Cf&&clearTimeout(c.Cf),c.qI=q,c.Cf=setTimeout(function(){c.oA();c.Cf=p},1E3))});x.M(d.children[0],"mouseover",function(){c.oA(o)});x.M(d.children[0].children[0],"click",function(){c.zl(0,Math.round(c.C.height/3))});x.M(d.children[0].children[1],"click",function(){c.zl(Math.round(c.C.width/3),0)});x.M(d.children[0].children[2],"click",function(){c.zl(-Math.round(c.C.width/ 3),0)});x.M(d.children[0].children[3],"click",function(){c.zl(0,-Math.round(c.C.height/3))});x.M(d.children[0].children[0],"mouseover",function(){c.jd.style.backgroundPosition="0 -44px"});x.M(d.children[0].children[1],"mouseover",function(){c.jd.style.backgroundPosition="0 -176px"});x.M(d.children[0].children[2],"mouseover",function(){c.jd.style.backgroundPosition="0 -88px"});x.M(d.children[0].children[3],"mouseover",function(){c.jd.style.backgroundPosition="0 -132px"});x.M(c.jd,"mouseout",function(){c.jd.style.backgroundPosition= "0 0"});var e=d.children[1].children;x.M(e[0],"click",function(){c.BJ()});x.M(e[1],"click",function(){c.CJ()});for(var f=0;5>f;f++)x.M(d.children[0].children[f],"mouseup",function(a){0==(c.C.Ta&128)&&0==(c.C.Ta&8)&&na(a)}),x.M(d.children[0].children[f],"contextmenu",function(a){Ab(a)}),x.M(d.children[0].children[f],"click",function(a){Ab(a)});x.M(e[0],"mouseup",function(a){0==(c.C.Ta&128)&&0==(c.C.Ta&8)&&na(a)});x.M(e[1],"mouseup",function(a){0==(c.C.Ta&128)&&0==(c.C.Ta&8)&&na(a)});x.M(e[0],"contextmenu", function(a){Ab(a)});x.M(e[1],"contextmenu",function(a){Ab(a)});f=d.children[1].children[2].children[2];x.M(f,"mouseup",function(a){0==(c.C.Ta&128)&&0==(c.C.Ta&8)&&na(a)});x.M(e[0],"click",function(a){na(a)});x.M(e[1],"click",function(a){na(a)});x.M(e[0],"mouseover",function(){e[0].style.backgroundPosition="0 -243px"});x.M(e[0],"mouseout",function(){0==(c.C.Ta&128)&&(e[0].style.backgroundPosition="0 -221px")});x.M(e[1],"mouseover",function(){e[1].style.backgroundPosition="0 -287px"});x.M(e[1],"mouseout", function(){0==(c.C.Ta&128)&&(e[1].style.backgroundPosition="0 -265px")});x.M(f,"click",function(a){na(a)});var g=d.children[1].children[2].children[3];x.M(g,"mouseup",function(a){2==a.button&&na(a)});x.M(g,"contextmenu",function(a){Ab(a)});x.M(this.Nf.children[3].children[0],"click",function(){c.C.Dg(17)});x.M(this.Nf.children[3].children[1],"click",function(){c.C.Dg(12)});x.M(this.Nf.children[3].children[2],"click",function(){c.C.Dg(8)});x.M(this.Nf.children[3].children[3],"click",function(){c.C.Dg(4)}); x.M(f,"mousedown",function(a){var a=window.event||a,b=0,b=c.Ff+1-Math.round(c.oo*parseFloat((a.layerY||a.offsetY||0)/(c.oo*c.Pv)));c.C.Dg(b)});x.M(g,"mouseover",function(){x.D.Ua(g,"h")});x.M(g,"mouseout",function(){0==(c.C.Ta&128)&&x.D.Sb(g,"h")});x.M(g,"mousedown",function(d){d=window.event||d;if(2!=d.button&&!(x.da.la&&1!=d.button))return g.setCapture&&g.setCapture(),c.C.Ta|=128,c.ca.Ck=d.pageY||d.clientY||0,x.da.opera||c.vB(E.Fd),x.M(document,"mousemove",b),x.M(document,"mouseup",a),na(d),Ab(d)})}, cQ:function(){var a=this,b=a.B.children[1].children;ja.TK(b[0]);ja.TK(b[1]);ja.M(b[0],"tap",function(){a.BJ()});ja.M(b[1],"tap",function(){a.CJ()})},vB:function(a){this.B.children[1].children[2].children[3].style.cursor=a},zl:function(a,b){this.C.xg(a,b)},BJ:function(){this.C.WF()},CJ:function(){this.C.XF()},Mv:function(a){this.B&&0==this.hp()&&(a=(this.Ff-a)*this.Pv+this.Wj,this.dl=a>this.co?this.co:ax.da.la){var a=this;setTimeout(function(){a.jn(a.k.type)},1)}},fY:function(){var a=this,b={};G()?(b.oj=a.uD.children[0],b.Uo=b.oj.children[0].children[0].children[0]): (b.oj=a.uD.children[0],b.vD=b.oj.children[0],b.Uo=b.vD.children[0]);G()?a.C.addEventListener("resize",function(){b.oj.parentNode.style.left=(-(a.C.width-46)).toString()+"px"}):3===a.k.type&&(a.uD.style.marginLeft="-2px");b.Ft={"default":z.ma+"images/navigation-control/geolocation-control/pc/success-10x10.png",loading:z.ma+"images/navigation-control/geolocation-control/pc/loading-30x30.gif",success:z.ma+"images/navigation-control/geolocation-control/pc/success-10x10.png",fail:z.ma+"images/navigation-control/geolocation-control/pc/fail-10x10.png"}; b.yt={"default":z.ma+"images/navigation-control/geolocation-control/mobile/default-40x40.png",loading:z.ma+"images/navigation-control/geolocation-control/mobile/loading-40x40.png",success:z.ma+"images/navigation-control/geolocation-control/mobile/success-40x40.png",fail:z.ma+"images/navigation-control/geolocation-control/mobile/fail-40x40.png"};var c;a.C.addEventListener("moveend",function(){if(c){var d=a.C.Ka();d.lng===c.lng&&d.lat===c.lat?G()?b.Ub(b.yt.success):b.Ub(b.Ft.success):G()?b.Ub(b.yt["default"]): b.Ub(b.Ft["default"])}});x.M(b.Uo,"click",function(){G()?b.Ub(b.yt.loading):b.Ub(b.Ft.loading);(new Geolocation({timeout:1E4})).getCurrentPosition(function(a){G()?b.Ub(b.yt.success):b.Ub(b.Ft.success);var a=new H(a.longitude,a.latitude),e=new T(a,{icon:new qc(z.ma+"images/navigation-control/geolocation-control/point/position-icon-14x14.png",new N(14,14))});map.Ja(e);map.Dd(a,15);c=a},function(){G()?b.Ub(b.yt.fail):b.Ub(b.Ft.fail)})});b.Ub=function(a){b.Uo.style.backgroundImage="url(\'"+a+"\')"};this.gL= b;this.PW=o},j_:function(){G()||(this.PW||this.fY(),G()||(this.dG.style.top="70px"),this.gL.oj.parentNode.style.display="block")},Y2:function(){G()||(this.dG.style.top="45px");this.gL.oj.parentNode.style.display="none"}});ib.prototype.setType=ib.prototype.jn; '); +_jsload2 && _jsload2('style', 'var xf=".BMap_mask{background:transparent url("+z.ma+"images/blank.gif);}.BMap_noscreen{display:none;}.BMap_button{cursor:pointer;}.BMap_zoomer{background-image:url("+z.ma+"images/mapctrls1d3.gif);background-repeat:no-repeat;overflow:hidden;font-size:1px;position:absolute;width:7px;height:7px;}.BMap_stdMpCtrl div{position:absolute;}.BMap_stdMpPan{width:44px;height:44px;overflow:hidden;background:url("+z.ma+\'images/mapctrls2d0.png) no-repeat;}.BMap_ie6 .BMap_stdMpPan{background:none;}.BMap_ie6 .BMap_smcbg{left:0;width:44px;height:464px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="\'+ z.ma+\'images/mapctrls2d0.png");}.BMap_ie6 .BMap_stdMpPanBg{z-index:-1;}.BMap_stdMpPan .BMap_button{height:15px;width:15px;}.BMap_panN,.BMap_panW,.BMap_panE,.BMap_panS{overflow:hidden;}.BMap_panN{left:14px;top:0;}.BMap_panW{left:1px;top:12px;}.BMap_panE{left:27px;top:12px;}.BMap_panS{left:14px;top:25px;}.BMap_stdMpZoom{top:45px;overflow:hidden;}.BMap_stdMpZoom .BMap_button{width:22px;height:21px;left:12px;overflow:hidden;background-image:url(\'+z.ma+"images/mapctrls2d0.png);background-repeat:no-repeat;z-index:10;}.BMap_ie6 .BMap_stdMpZoom .BMap_button{background:none;}.BMap_stdMpZoomIn{background-position:0 -221px;}.BMap_stdMpZoomOut{background-position:0 -265px;}.BMap_ie6 .BMap_stdMpZoomIn div{left:0;top:-221px;}.BMap_ie6 .BMap_stdMpZoomOut div{left:0;top:-265px;}.BMap_stdMpType4 .BMap_stdMpZoom .BMap_button{left:0;overflow:hidden;background:-webkit-gradient(linear,50% 0,50% 100%,from(rgba(255,255,255,0.85)),to(rgba(217,217,217,0.85)));z-index:10;-webkit-border-radius:22px;width:34px;height:34px;border:1px solid rgba(255,255,255,0.5);-webkit-box-shadow:0 2px 3.6px #CCC;display:-webkit-box;-webkit-box-align:center;-webkit-box-pack:center;-webkit-box-sizing:border-box;}.BMap_stdMpType4 .BMap_smcbg{position:static;background:url("+ z.ma+"images/mapctrls2d0_mb.png) 0 0 no-repeat;-webkit-background-size:24px 32px;}.BMap_stdMpType4 .BMap_stdMpZoomIn{background-position:0 0;}.BMap_stdMpType4 .BMap_stdMpZoomIn .BMap_smcbg{width:24px;height:24px;background-position:0 0;}.BMap_stdMpType4 .BMap_stdMpZoomOut{background-position:0 0;}.BMap_stdMpType4 .BMap_stdMpZoomOut .BMap_smcbg{width:24px;height:6px;background-position:0 -25px;}.BMap_stdMpSlider{width:37px;top:18px;}.BMap_stdMpSliderBgTop{left:18px;width:10px;overflow:hidden;background:url("+ z.ma+"images/mapctrls2d0.png) no-repeat -23px -226px;}.BMap_stdMpSliderBgBot{left:19px;height:8px;width:10px;top:124px;overflow:hidden;background:url("+z.ma+"images/mapctrls2d0.png) no-repeat -33px bottom;}.BMap_ie6 .BMap_stdMpSliderBgTop,.BMap_ie6 .BMap_stdMpSliderBgBot{background:none;}.BMap_ie6 .BMap_stdMpSliderBgTop div{left:-23px;top:-226px;}.BMap_ie6 .BMap_stdMpSliderBgBot div{left:-33px;bottom:0;}.BMap_stdMpSliderMask{height:100%;width:24px;left:10px;cursor:pointer;}.BMap_stdMpSliderBar{height:11px;width:19px;left:13px;top:80px;overflow:hidden;background:url("+ z.ma+"images/mapctrls2d0.png) no-repeat 0 -309px;}.BMap_stdMpSliderBar.h{background:url("+z.ma+"images/mapctrls2d0.png) no-repeat 0 -320px;}.BMap_ie6 .BMap_stdMpSliderBar,.BMap_ie6 .BMap_stdMpSliderBar.h{background:none;}.BMap_ie6 .BMap_stdMpSliderBar div{top:-309px;}.BMap_ie6 .BMap_stdMpSliderBar.h div{top:-320px;}.BMap_zlSt,.BMap_zlCity,.BMap_zlProv,.BMap_zlCountry{position:absolute;left:34px;height:21px;width:28px;background-image:url("+z.ma+"images/mapctrls2d0.png);background-repeat:no-repeat;font-size:0;cursor:pointer;}.BMap_ie6 .BMap_zlSt,.BMap_ie6 .BMap_zlCity,.BMap_ie6 .BMap_zlProv,.BMap_ie6 .BMap_zlCountry{background:none;overflow:hidden;}.BMap_zlHolder{display:none;position:absolute;top:0;}.BMap_zlHolder.hvr{display:block;}.BMap_zlSt{background-position:0 -380px;top:21px;}.BMap_zlCity{background-position:0 -401px;top:52px;}.BMap_zlProv{background-position:0 -422px;top:76px;}.BMap_zlCountry{background-position:0 -443px;top:100px;}.BMap_ie6 .BMap_zlSt div{top:-380px;}.BMap_ie6 .BMap_zlCity div{top:-401px;}.BMap_ie6 .BMap_zlProv div{top:-422px;}.BMap_ie6 .BMap_zlCountry div{top:-443px;}.BMap_stdMpType1 .BMap_stdMpSlider,.BMap_stdMpType2 .BMap_stdMpSlider,.BMap_stdMpType3 .BMap_stdMpSlider,.BMap_stdMpType4 .BMap_stdMpSlider,.BMap_stdMpType2 .BMap_stdMpZoom,.BMap_stdMpType3 .BMap_stdMpPan,.BMap_stdMpType4 .BMap_stdMpPan{display:none;}.BMap_stdMpType3 .BMap_stdMpZoom{top:0;}.BMap_stdMpType4 .BMap_stdMpZoom{top:0;}.BMap_cpyCtrl a{font-size:11px;color:#7979CC;}.BMap_scaleCtrl{height:23px;overflow:hidden;}.BMap_scaleCtrl div.BMap_scaleTxt{font-size:11px;font-family:Arial,sans-serif;}.BMap_scaleCtrl div{position:absolute;overflow:hidden;}.BMap_scaleHBar img,.BMap_scaleLBar img,.BMap_scaleRBar img{position:absolute;width:37px;height:442px;left:0;}.BMap_scaleHBar{width:100%;height:5px;font-size:0;bottom:0;}.BMap_scaleHBar img{top:-437px;width:100%;}.BMap_scaleLBar,.BMap_scaleRBar{width:3px;height:9px;bottom:0;font-size:0;z-index:1;}.BMap_scaleLBar img{top:-427px;left:0;}.BMap_scaleRBar img{top:-427px;left:-5px;}.BMap_scaleLBar{left:0;}.BMap_scaleRBar{right:0;}.BMap_scaleTxt{text-align:center;width:100%;cursor:default;line-height:18px;}.BMap_omCtrl{background-color:#fff;overflow:hidden;}.BMap_omOutFrame{position:absolute;width:100%;height:100%;left:0;top:0;}.BMap_omInnFrame{position:absolute;border:1px solid #999;background-color:#ccc;overflow:hidden;}.BMap_omMapContainer{position:absolute;overflow:hidden;width:100%;height:100%;left:0;top:0;}.BMap_omViewMv{border-width:1px;border-style:solid;border-left-color:#84b0df;border-top-color:#adcff4;border-right-color:#274b8b;border-bottom-color:#274b8b;position:absolute;z-index:600;}.BMap_omViewInnFrame{border:1px solid #3e6bb8;}.BMap_omViewMask{width:1000px;height:1000px;position:absolute;left:0;top:0;background-color:#68c;opacity:.2;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=20);}.BMap_omBtn{height:13px;width:13px;position:absolute;cursor:pointer;overflow:hidden;background:url("+ z.ma+"images/mapctrls1d3.gif) no-repeat;z-index:1210;}.anchorBR .BMap_omOutFrame{border-top:1px solid #999;border-left:1px solid #999;}.quad4 .BMap_omBtn{background-position:-26px -27px;}.quad4 .BMap_omBtn.hover{background-position:0 -27px;}.quad4 .BMap_omBtn.BMap_omBtnClosed{background-position:-39px -27px;}.quad4 .BMap_omBtn.BMap_omBtnClosed.hover{background-position:-13px -27px;}.anchorTR .BMap_omOutFrame{border-bottom:1px solid #999;border-left:1px solid #999;}.quad1 .BMap_omBtn{background-position:-39px -41px;}.quad1 .BMap_omBtn.hover{background-position:-13px -41px;}.quad1 .BMap_omBtn.BMap_omBtnClosed{background-position:-26px -41px;}.quad1 .BMap_omBtn.BMap_omBtnClosed.hover{background-position:0 -41px;}.anchorBL .BMap_omOutFrame{border-top:1px solid #999;border-right:1px solid #999;}.quad3 .BMap_omBtn{background-position:-27px -40px;}.quad3 .BMap_omBtn.hover{background-position:-1px -40px;}.quad3 .BMap_omBtn.BMap_omBtnClosed{background-position:-40px -40px;}.quad3 .BMap_omBtn.BMap_omBtnClosed.hover{background-position:-14px -40px;}.anchorTL .BMap_omOutFrame{border-bottom:1px solid #999;border-right:1px solid #999;}.quad2 .BMap_omBtn{background-position:-40px -28px;}.quad2 .BMap_omBtn.hover{background-position:-14px -28px;}.quad2 .BMap_omBtn.BMap_omBtnClosed{background-position:-27px -28px;}.quad2 .BMap_omBtn.BMap_omBtnClosed.hover{background-position:-1px -28px;}.anchorR .BMap_omOutFrame{border-bottom:1px solid #999;border-left:1px solid #999;border-top:1px solid #999;}.anchorL .BMap_omOutFrame{border-bottom:1px solid #999;border-right:1px solid #999;border-top:1px solid #999;}.anchorB .BMap_omOutFrame{border-top:1px solid #999;border-left:1px solid #999;border-right:1px solid #999;}.anchorT .BMap_omOutFrame{border-bottom:1px solid #999;border-right:1px solid #999;border-left:1px solid #999;}.anchorNon .BMap_omOutFrame,.withOffset .BMap_omOutFrame{border:1px solid #999;}.BMap_zoomMask0,.BMap_zoomMask1{position:absolute;left:0;top:0;width:100%;height:100%;background:transparent url("+ z.ma+"images/blank.gif);z-index:1000;}.BMap_contextMenu{position:absolute;border-top:1px solid #adbfe4;border-left:1px solid #adbfe4;border-right:1px solid #8ba4d8;border-bottom:1px solid #8ba4d8;padding:0;margin:0;width:auto;visibility:hidden;background:#fff;z-index:10000000;}.BMap_cmShadow{position:absolute;background:#000;opacity:.3;filter:alpha(opacity=30);visibility:hidden;z-index:9000000;}div.BMap_cmDivider{border-bottom:1px solid #adbfe4;font-size:0;padding:1px;margin:0 6px;}div.BMap_cmFstItem{margin-top:2px;}div.BMap_cmLstItem{margin-bottom:2px;}.BMap_shadow img{border:0 none;margin:0;padding:0;height:370px;width:1144px;}.BMap_pop .BMap_top{border-top:1px solid #ababab;background-color:#fff;}.BMap_pop .BMap_center{border-left:1px solid #ababab;border-right:1px solid #ababab;background-color:#fff;}.BMap_pop .BMap_bottom{border-bottom:1px solid #ababab;background-color:#fff;}.BMap_shadow,.BMap_shadow img,.BMap_shadow div{-moz-user-select:none;-webkit-user-select:none;}.BMap_checkbox{background:url("+ z.ma+"images/mapctrls1d3.gif);vertical-align:middle;display:inline-block;width:11px;height:11px;margin-right:4px;background-position:-14px 90px;}.BMap_checkbox.checked{background-position:-2px 90px;}.BMap_pop .BMap_top img,.BMap_pop .BMap_center img,.BMap_pop .BMap_bottom img{display:none;}@media print{.BMap_noprint{display:none;}.BMap_noscreen{display:block;}.BMap_mask{background:none;}.BMap_pop .BMap_top img,.BMap_pop .BMap_center img,.BMap_pop .BMap_bottom img{display:block;}}.BMap_vectex{cursor:pointer;width:11px;height:11px;position:absolute;background-repeat:no-repeat;background-position:0 0;}.BMap_vectex_nodeT{background-image:url("+ z.ma+"images/nodeT.gif);}.BMap_vectex_node{background-image:url("+z.ma+\'images/node.gif);}.iw{width:100%;-webkit-box-sizing:border-box;border:.3em solid transparent;-webkit-background-clip:padding;}.iw_rt{position:relative;height:46px;width:195px;-webkit-box-sizing:border-box;display:-webkit-box;-webkit-box-align:center;margin:2px 5px 0 2px;background-color:rgba(0,0,0,0.8);-webkit-box-shadow:2px 2px 7px rgba(0,0,0,0.3);-webkit-border-radius:2px;color:#fff;}.iw_rt:after{content:"";position:absolute;left:50%;bottom:-8px;width:0;height:0;border-left:5px solid transparent;border-top:8px solid rgba(0,0,0,0.8);border-right:5px solid transparent;margin:0 0 0 -6px;}.iw_s{text-align:center;vertical-align:middle;height:100%;-webkit-box-sizing:border-box;}.iw_rt .iw_s1{color:#cbcbcb;}.iw_rt b{color:#fff;font-weight:bold;}.iw_rt_gr{margin-left:-4px;}.iw_busline{margin:32px 0 0 -3px;}.iw_busline .iw_cc{text-align:center;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding:0 6px;}.iw_r{-webkit-box-ordinal-group:3;}.iw_r,.iw_l{height:100%;font-size:4.5em;text-align:center;color:#747474;border:none;-webkit-box-sizing:border-box;-webkit-border-radius:0;line-height:.7em;border:1px solid rgba(255,255,255,0.2);width:41px;}.iw_r{border-style:none none none solid;}.iw_l{border-style:none solid none none;}.iw_search,.iw_l{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAlCAYAAAAuqZsAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEz NDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNl SUQ9InhtcC5paWQ6QjA3NjMyREJDNzQ2MTFFMTlBQUM5QzlCRDZGODZCQkYiIHhtcE1NOkRvY3Vt ZW50SUQ9InhtcC5kaWQ6QjA3NjMyRENDNzQ2MTFFMTlBQUM5QzlCRDZGODZCQkYiPiA8eG1wTU06 RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCMDc2MzJEOUM3NDYxMUUxOUFB QzlDOUJENkY4NkJCRiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCMDc2MzJEQUM3NDYxMUUx OUFBQzlDOUJENkY4NkJCRiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1w bWV0YT4gPD94cGFja2V0IGVuZD0iciI/PllB9T8AAAKuSURBVHjaxFjRcdpAEAX+mVEqiFxB5AoQ HZAKElcArsBWBSgVQCoAVwCuwEoFlivwGQpI7jKrzGXn7ep0EsPO7BjLp/O73bdv9xifTqdRpCXW c+sz65n1lNy3mvzZemX9aN34C6bTKdx8HAHMgVlaX0QeaGv9J4EcBJgD9EA/hzAH7N4Cq/oAW1tf KX+vKEXP7PlMSLFvhQX32BWY49GBOIRO7FKy57wBlnoUQHu5yJX+g4mymdvgFWzkAM3JtwGgmiJw a2/pvQoEYBQCLKNI8RfuaeNjT245gAUdqgHdmkqUPiOctLdJVYkithkAVO/K5cC+M30KAZVSxboo /ybnn1eIR5r5qUyI7P4GX6nqJHskbQsxQ7wqu6aSn2qrgHLrXjqAat5ZC0WlRuzVE0J3uhtBCjRt a3qjX92JIMiOIqYtYgumzpo+7RRtu/E0zvknokMF5GgdQv4Ze/5DWL8CFVe2aNuedGsLCi1vS+WL F4WKNkL2Dnh414FnO1b1R5vKuRaxjKUF2YKBqjuCGtF6nyL5+XxOJWCcL2/CpjzdRYRuGpDShQQs ARUj9U/OnRh7Yr9/CW1JXU4fYxXoHIMCu+iB+gBLIt/LgShDYCYktGCDfCBgvyRgVQgZwTy/jIzy EnQNMZV1QCT4bJ+3XFCkS81/WijdkiYAdSak04BWtabWEmIbsNZYgU00YE+gjyErQeo31GpShVMH Yc+/dwsEzh97/D6ojT2ZMlM1XwN8WP9Ma7NAbZvbtBoEjE+jBT2TusCu5SIbI7z/wLWN1rdKi0o6 cqwTuAmYyTm5NQW/82atWvlnBbo7apxD98qDJxl7mkC76JQ2Qm0CI1xKF95Gb4oLXHJDwJlxjy/u LgruGtNFM8lqnNtfK2JqN3CVeW1gzWj9jThd0xd59R8BBgAAiefGO1Bt1gAAAABJRU5ErkJggg==") no-repeat 50% 50%;-webkit-background-size:19px 19px;}.iw_line_s,.iw_r{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACUAAAAmCAYAAABDClKtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEz NDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNl SUQ9InhtcC5paWQ6QjA3NjMyREZDNzQ2MTFFMTlBQUM5QzlCRDZGODZCQkYiIHhtcE1NOkRvY3Vt ZW50SUQ9InhtcC5kaWQ6QjA3NjMyRTBDNzQ2MTFFMTlBQUM5QzlCRDZGODZCQkYiPiA8eG1wTU06 RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCMDc2MzJEREM3NDYxMUUxOUFB QzlDOUJENkY4NkJCRiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCMDc2MzJERUM3NDYxMUUx OUFBQzlDOUJENkY4NkJCRiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1w bWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqheQ+MAAAEtSURBVHja7JftDYIwEIbB8JeEUXACZQPd oGygE+gGxAnQEZzAOgEdwREIDKBXUgjBIqW5Npj0kvcHpG0erveFX1WVZ8l2oBhEhRoLw/BroW8J KgeR3vMVlI5BrSwAHQZAnngmYxtMe4oIL41ZAp6iNqF4/BQTa0oBxmxAcaAHKFJY+wKtAaw0CRUJ oHjGHiY8VpqCKmYCdRkJUKmJ7Ms1gZqkqOs6w/bUGXRCOGePCcXjaItwDsW8PoZ0zhM70IeeyiZi jH/Isf+CF9MAOdCppDj+LJ6yim6j9802B6VqQa818BFjY6AHakHp9Crj15ctCaiFIi7Q/wCKLRHq vjSoVNKWunH4rTBDv5Cv7NKeKfvvU2nINzHAuexzUA7KQTkoB6UxDicKvc+qfQQYABaiUBxugCsr AAAAAElFTkSuQmCC") no-repeat 50% 50%;-webkit-background-size:19px 19px;}.iw_line{height:64px;width:228px;padding:0 11px;line-height:20px;}.iw_bustrans .iw_cc{text-align:center;}.iw_c{color:#FFFFFF;text-decoration:none;overflow:hidden;display:-webkit-box;-webkit-box-align:center;-webkit-box-flex:1;}.iw_cc{-webkit-box-sizing:border-box;width:100%;border:none;}.gray_background{filter:alpha(opacity=50);-moz-opacity:0.5;-khtml-opacity:0.5;opacity: 0.5} .light_gray_background {filter:alpha(opacity=70);-moz-opacity:0.7;-khtml-opacity:0.7;opacity: 0.7} .panoInfoBox {cursor: pointer; } .panoInfoBox {position: relative; width: 323px; height: 101px; margin-bottom: 4px; cursor: pointer; } .panoInfoBox .panoInfoBoxTitleBg {width: 323px; height: 19px; position: absolute; left: 0; bottom: 0; z-index: 2; background-color: #000; opacity: .7; } .panoInfoBox .panoInfoBoxTitleContent {font-size: 12px; color: #fff; position: absolute; bottom: 2px; left: 5px; z-index: 3; text-decoration: none; } \', xf=xf+(".RouteAddressOuterBkg{position:relative; padding: 32px 4px 4px 3px; background-color:#ffdd99; } .RouteAddressInnerBkg{padding: 3px 5px 8px 8px; background-color:#ffffff; } #RouteAddress_DIV1{margin-top: 5px; } .RouteAddressTip{position:absolute; width:100%; top:0px; text-align:center; height:30px; line-height:30px; color:#994c00; } .route_tip_con {position:absolute;top:145px;} .route_tip_con .route_tip{position:absolute;width:233px;height:29px;color:#803300;text-align:center;line-height:29px;border:#cc967a solid 1px;background:#fff2b2;z-index:100000;} .route_tip_con .route_tip span{position:absolute;top:0;right:0;_right:-1px;width:14px;height:13px;background:url("+ z.ma+"images/addrPage.png?v=20121107) no-repeat 0 -121px;cursor:pointer;} .route_tip_con .route_tip_shadow{width:233px;height:29px; position:absolute;left:1px;top:1px;background:#505050;border:1px solid #505050;opacity:0.2;filter:alpha(opacity=20)} .sel_body_body_page{margin:5px 0} .sel_n{margin-top:5px;overflow:hidden;} .sel_n .sel_top{background:url("+z.ma+"images/bgs.gif) no-repeat 0 -418px;height:4px;font-size:0px;} .sel_n .sel_body_top{height:32px;width:100%;background:url("+z.ma+"images/addrPage.png?v=20121107) no-repeat 0 -41px;} .sel_n .sel_body_title{float:left;width:100%;height:31px;} .sel_n .sel_body_sign{margin-top:1px;width:30px;height:31px;float:left;background:url("+ z.ma+"images/bgs.gif) no-repeat -79px -387px;} .sel_n .sel_body_name{height: 10px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin:0 20px 0 30px;padding:8px 7px 7px;font-size:14px;color:#FA8722;} .sel_n .sel_body_button{float:left;width:55px;margin-left:-55px;padding-top:8px;} .sel_n .sel_body_button a{} .sel_n .sel_bottom{background:url("+z.ma+"images/bgs.gif) no-repeat 0 -415px;height:4px;font-size:0px;} .sel_n .sel_body_body{padding:3px 0 0 0} .sel_n1{margin-top:5px;width:329px;overflow:hidden;} .sel_n1 .sel_top{background:url("+ z.ma+"images/bgs.gif) no-repeat 0 -418px;height:4px;font-size:0px;} .sel_n1 .sel_body_top{height:31px;width:100%;background:url("+z.ma+"images/sel_body_n_top.gif) repeat-x;} .sel_n1 .sel_body_top{height:32px;width:100%;background:url("+z.ma+"images/addrPage.png?v=20121107) no-repeat 0 -41px} .sel_n1 .sel_body_title{float:left;width:100%;height:31px;cursor:pointer;} .sel_n1 .sel_body_sign{margin-top:1px;width:30px;height:31px;float:left;background:url("+z.ma+"images/bgs.gif) no-repeat -79px -387px;} .sel_n1 .sel_body_name{margin:0 20px 0 30px;padding:8px 7px 7px;font-size:14px;color:#FA8722;} .sel_n1 .sel_body_button{float:left;width:20px;height:31px;margin-left:-23px;background:url("+ z.ma+"images/bgs.gif) no-repeat -253px -382px;overflow:hidden;zoom:1;cursor:pointer;} .sel_n1 .sel_body_button a{display:none;} .sel_n1 .sel_body_body{display:none} .sel_n1 .sel_bottom{background:url("+z.ma+"images/bgs.gif) no-repeat 0 -415px;height:4px;font-size:0px;} .sel_y{margin-top:5px;overflow:hidden;} .sel_y .sel_top{background:url("+z.ma+"images/bgs.gif) no-repeat 0 -439px;height:4px;zoom:1;font-size:0px;} .sel_y .sel_body_top{height:32px;width:100%;background:url("+z.ma+"images/addrPage.png?v=20121107) no-repeat 0 0} .sel_y .sel_body_title{float:left;width:100%;height:31px;cursor:pointer;} .sel_y .sel_body_sign{margin-top:1px;width:30px;height:31px;float:left;background:url("+ z.ma+"images/bgs.gif) no-repeat -167px -384px;} .sel_y .sel_body_name{margin:0 20px 0 30px;padding:8px 7px 7px;font-size:14px;color:#5B7BCB;} .sel_y .sel_body_button{float:left;width:20px;height:31px;margin-left:-20px;background:url("+z.ma+"images/bgs.gif) no-repeat -269px -297px;cursor:pointer;} .sel_y .sel_body_button a{display:none;} .sel_y .sel_body_body{display:none;height:0px} .sel_y .sel_body_body_div{} .sel_y .sel_bottom{background:url("+z.ma+"images/bgs.gif) no-repeat 0 -436px;height:4px;font-size:0px;} .sel_y .sel_body_body_page{display:none;height:0px;} .sel_x{margin-top:5px;width:329px;overflow:hidden;} .sel_x .sel_top{background:url("+ z.ma+"images/bgs.gif) no-repeat 0 -418px;height:4px;font-size:0px;} .sel_x .sel_body_top{height:32px;width:100%;background:url("+z.ma+"images/addrPage.png?v=20121107) no-repeat 0 -41px;} .sel_x .sel_body_title{float:left;width:100%;height:31px;} .sel_x .sel_body_sign{margin-top:1px;width:30px;height:31px;float:left;background:url("+z.ma+"images/bgs.gif) no-repeat -122px -384px;} .sel_x .sel_body_name{margin:0 20px 0 30px;padding:8px 7px 7px;font-size:14px;color:#FA8722;} .sel_x .sel_body_button{float:left;width:55px;margin-left:-55px;padding-top:8px;} .sel_x .sel_body_button a{} .sel_x .sel_body_body{} .sel_x .sel_body_body_div{padding:5px 5px 0 5px;} .sel_x .sel_bottom{background:url("+ z.ma+"images/bgs.gif) no-repeat 0 -415px;height:4px;font-size:0px;} .sel_x1{margin-top:5px;width:329px;overflow:hidden;} .sel_x1 .sel_top{background:url("+z.ma+"images/bgs.gif) no-repeat 0 -418px;height:4px;font-size:0px;} .sel_x1 .sel_body_top{height:32px;width:100%;background:url("+z.ma+"images/addrPage.png?v=20121107) no-repeat 0 -41px} .sel_x1 .sel_body_title{float:left;width:100%;height:31px;cursor:pointer;} .sel_x1 .sel_body_sign{margin-top:1px;width:30px;height:31px;float:left;background:url("+ z.ma+"images/bgs.gif) no-repeat -122px -384px;} .sel_x1 .sel_body_name{margin:0 20px 0 30px;padding:8px 7px 7px;font-size:14px;color:#FA8722;} .sel_x1 .sel_body_button{float:left;width:55px;height:31px;margin-left:-55px;} .sel_x1 .sel_body_button a{display:none;} .sel_x1 .sel_body_body{display:none;height:0px;} .sel_x1 .sel_body_body_div{padding:5px 5px 0 5px;} .sel_x1 .sel_bottom{background:url("+z.ma+"images/bgs.gif) no-repeat 0 -415px;height:4px;font-size:0px;} .sel_body_citylist{height:100px;padding: 0 0 0 5px} .sel_body_resitem{table-layout:fixed;overflow-x:hidden;overflow-y:hidden;} .sel_body_resitem table {margin-right:5px;} .sel_body_resitem tr{cursor:pointer;} .sel_body_resitem th{padding-top:5px;padding-left:5px;text-align:left;vertical-align:top;width:22px;} .sel_body_resitem th div.iconbg{background:url("+ z.ma+"images/markers_new_ie6.png) no-repeat scroll 0 0;height:29px;width:24px;} .sel_body_resitem th div.icon{cursor:pointer} .sel_body_resitem th div#no_0_1, .sel_body_resitem th div#no_1_1{background-position:0 -64px} .sel_body_resitem th div#no_0_2, .sel_body_resitem th div#no_1_2{background-position:-24px -64px} .sel_body_resitem th div#no_0_3, .sel_body_resitem th div#no_1_3{background-position:-48px -64px} .sel_body_resitem th div#no_0_4, .sel_body_resitem th div#no_1_4{background-position:-72px -64px} .sel_body_resitem th div#no_0_5, .sel_body_resitem th div#no_1_5{background-position:-96px -64px} .sel_body_resitem th div#no_0_6, .sel_body_resitem th div#no_1_6{background-position:-120px -64px} .sel_body_resitem th div#no_0_7, .sel_body_resitem th div#no_1_7{background-position:-144px -64px} .sel_body_resitem th div#no_0_8, .sel_body_resitem th div#no_1_8{background-position:-168px -64px} .sel_body_resitem th div#no_0_9, .sel_body_resitem th div#no_1_9{background-position:-192px -64px} .sel_body_resitem th div#no_0_10, .sel_body_resitem th div#no_1_10{background-position:-216px -64px} .sel_body_resitem td{line-height:160%;padding:3px 0 3px 3px;vertical-align:top;} .sel_body_resitem div.ra_td_title{float:left;margin-right:40px;} .sel_body_resitem div.ra_td_button{float:right; width:40px;} .sel_body_resitem div.ra_td_button input{height:18px;font-size:12px;width:40px;} .sel_body_resitem div.clear{clear:both;height:0px;width:100%;} .sel_body_resitem td .selBtn {width:70px;height:29px;background:url("+ z.ma+"images/addrPage.png?v=20121107) no-repeat -21px -81px;text-align:center;line-height:29px;visibility:hidden;color:#b35900;display:inline-block;*display:inline;*zoom:1;} .sel_body_resitem td .list_street_view_poi {display:inline-block;float:none;margin-right:6px;position:static;*vertical-align:-3px;_vertical-align:-5px;*display:inline;*zoom:1;} .selInfoWndBtn {width:70px;height:29px;background:url("+z.ma+"images/addrPage.png?v=20121107) no-repeat -21px -81px;text-align:center;line-height:29px;margin: 0 auto;cursor:pointer;color:#b35900} .sel_body_body td a{text-decoration: none; cursor: auto; } .sel_body_body td a:hover,.sel_body_body td a:focus{text-decoration:underline; }"), xf=xf+(".panoInfoBox{cursor:pointer}.panoInfoBox{position:relative;width:323px;height:101px;margin-bottom:4px;cursor:pointer}.panoInfoBox .panoInfoBoxTitleBg{width:323px;height:19px;position:absolute;left:0;bottom:0;z-index:2;background-color:#000;opacity:.7}.panoInfoBox .panoInfoBoxTitleContent{font-size:12px;color:#fff;position:absolute;bottom:2px;left:5px;z-index:3;text-decoration:none}.pano_switch_left,.pano_switch_right{position:absolute;width:28px;height:38px;cursor:pointer;background-color:#252525;background-color:rgba(37,37,37,.9)}.pano_switch_left{background:url("+ z.ma+"images/panorama/zuojiantou.png) no-repeat;-webkit-background-size:100% 100%;background-size:100% 100%}.pano_switch_right{background:url("+z.ma+"images/panorama/youjiantou.png) no-repeat;-webkit-background-size:100% 100%;background-size:100% 100%}.pano_switch_left:hover{background:url("+z.ma+"images/panorama/zuojiantou_hover.png) no-repeat;-webkit-background-size:100% 100%;background-size:100% 100%}.pano_switch_right:hover{background:url("+z.ma+"images/panorama/youjiantou_hover.png) no-repeat;-webkit-background-size:100% 100%;background-size:100% 100%}.pano_switch_left.pano_switch_disable,.pano_switch_right.pano_switch_disable{background:0 0;border:none}.pano_poi_1,.pano_poi_2,.pano_poi_4{display:inline-block;width:16px;height:16px;vertical-align:middle;background:url("+ z.cj+"newmap/static/common/images/pano_whole/guide_icons_4b871b2.png) no-repeat;background-position:0 0}.pano_photo_arrow_l,.pano_photo_arrow_r{position:absolute;top:0;width:20px;height:100%;background:#f3eeee}.pano_photo_arrow_l{left:0}.pano_photo_arrow_r{right:0}.pano_arrow_l,.pano_arrow_r{display:inline-block;width:18px;height:18px;background:url("+z.cj+"newmap/static/common/images/pano_whole/pano-icons_223a291.png) no-repeat}.pano_catlogLi{cursor:pointer;position:relative;line-height:10px;font-size:10px;text-align:center;color:#abb0b2;border:1px solid #53565c;padding:3px 0;margin-top:3px;margin-left:2px;width:90%}.pano_catlogLi:hover{color:#3DAAFC;border:1px solid #3DAAFC}.pano_catlogLiActive{color:#3DAAFC;border:1px solid #3DAAFC}.pano_arrow_l{background-position:0 -36px}.pano_arrow_r{background-position:-54px -36px}.pano_photo_arrow_l:hover .pano_arrow_l{background-position:-18px -36px}.pano_photo_arrow_r:hover .pano_arrow_r{background-position:-72px -36px}.pano_photo_arrow_l.pano_arrow_disable .pano_arrow_l{background-position:-36px -36px}.pano_photo_arrow_r.pano_arrow_disable .pano_arrow_r{background-position:-90px -36px}.pano_photo_item{position:relative;float:left;line-height:0;padding-left:8px}.pano_photo_decs{position:absolute;bottom:1px;left:0;padding:2px 0;text-indent:5px;margin-left:8px;display:inline-block;color:#fff;background:#000;opacity:.5;filter:alpha(opacity=50)9;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.pano_photo_item img{display:inline-block;border:solid 1px #252525}.pano_photo_item:hover img{border-color:#005efc}.pano_photo_item_seleted{position:absolute;top:0;left:-100000px;border:3px solid #097df3}.pano_close{position:absolute;right:10px;top:10px;width:40px;cursor:pointer;height:40px;line-height:40px;border-radius:3px;background-color:rgba(37,37,37,.9);background-image:url("+ z.ma+"images/panorama/close.png);background-repeat:no-repeat;background-position:center center;background-size:90%}.pano_close:hover{background-image:url("+z.ma+"images/panorama/close_hover.png)}.pano_pc_indoor_exit{position:absolute;right:60px;top:10px;width:89px;cursor:pointer;height:40px;line-height:40px;color:#ebedf0;border-radius:3px;background-color:#252525;background-color:rgba(37,37,37,.9);background-image:url("+z.ma+"images/panorama/indoor_exit.png);background-repeat:no-repeat;background-position:15px 12px}.pano_pc_indoor_exit:hover{background-image:url("+ z.ma+"images/panorama/indoor_exit_hover.png);color:#2495ff}.pano_m_indoor_exit{font-size:16px;position:absolute;right:30px;top:10px;width:89px;cursor:pointer;height:40px;line-height:40px;color:#ebedf0;border-radius:3px;background-color:#252525;background-color:rgba(37,37,37,.9);background-image:url("+z.ma+"images/panorama/indoor_exit.png);background-repeat:no-repeat;background-position:15px 12px}"),xf=xf+(".navtrans-table tr{color:#666}.navtrans-table tr:hover{color:#333}.navtrans-navlist-icon{float:left;width:18px;height:16px;background:url("+ z.cj+"wolfman/static/common/images/nav-icon_b5c3223.png) no-repeat 0px 0px;_background:url("+z.cj+"wolfman/static/common/images/nav-icon_ie6_134841b.png) no-repeat 0px 0px;margin-top:2px;margin-right:5px}.navtrans-navlist-icon.s-1{background-position:0px 0px}.navtrans-navlist-icon.s-2{background-position:-18px 0px}.navtrans-navlist-icon.s-3{background-position:-36px 0px}.navtrans-navlist-icon.s-4{background-position:-54px 0px}.navtrans-navlist-icon.s-5{background-position:-72px 0px}.navtrans-navlist-icon.s-6{background-position:-90px 0px}.navtrans-navlist-icon.s-7{background-position:0px -16px}.navtrans-navlist-icon.s-8{background-position:-18px -16px}.navtrans-navlist-icon.s-9{background-position:-36px -16px}.navtrans-navlist-icon.s-10{background-position:-54px -16px}.navtrans-navlist-icon.s-11{background-position:-72px -16px}.navtrans-navlist-icon.s-12{background-position:-90px -16px}.navtrans-navlist-icon.s-13{background-position:0px -32px}.navtrans-navlist-icon.s-14{background-position:-18px -32px}.navtrans-navlist-icon.s-18{background-position:-36px -32px}.navtrans-navlist-icon.s-19{background-position:-54px -32px}.navtrans-navlist-icon.s-20{background-position:-72px -32px}.navtrans-navlist-icon.s-21{background-position:-90px -32px}.navtrans-navlist-icon.nav-st,.navtrans-navlist-icon.nav-through{background-position:-16px -70px}.navtrans-navlist-icon.nav-ed{background-position:0px -70px}.navtrans-view{border-top:1px solid #e4e6e7;border-left:1px solid #e4e6e7;border-right:1px solid #e4e6e7}.navtrans-view:hover{cursor:pointer}.navtrans-view .navtrans-arrow{position:absolute;top:8px;right:5px;width:7px;height:4px;background-image:url("+ z.cj+"wolfman/static/common/images/nav-icon_b5c3223.png);background-repeat:no-repeat;background-position:-40px -70px;margin-top:3px;margin-right:3px;_background-image:url("+z.cj+"wolfman/static/common/images/nav-icon_ie6_134841b.png)}.navtrans-view.expand:hover .navtrans-arrow{background-position:-61px -70px}.navtrans-view.expand .navtrans-arrow{background-position:-54px -70px}.navtrans-view:hover .navtrans-arrow{background-position:-47px -70px}.navtrans-navlist-content{overflow:hidden}.navtrans-res{border-bottom:1px solid #E4E6E7;border-left:1px solid #E4E6E7;border-right:1px solid #E4E6E7}.navtrans-bus-icon{display:inline-block;float:left;background-image:url("+ z.cj+\'wolfman/static/common/images/ui3/mo_banner_e1aa2e6.png);background-repeat:no-repeat}.navtrans-bus-icon.bus{width:13px;height:16px;background-position:-1px -192px;position:relative;top:4px}.navtrans-bus-icon.walk{width:16px;height:18px;background-position:-63px -189px;position:relative;top:2px;left:-2px}.navtrans-bus-desc{line-height:24px;margin-left:20px}.navtrans-busstation{color:#36c;font-weight:600}.tranroute-plan-list.expand .trans-title{border-bottom:1px solid #e4e6e7;background-color:#ebf1fb}.trans-plan-content tr td:hover .bus{background-position:-15px -192px}.trans-plan-content tr td:hover .walk{background-position:-82px -189px}.suggest-plan{position:absolute;background-color:#0C88E8;padding:0px 15px;line-height:20px;color:#fff;left:0px;top:0px}.suggest-plan-des{text-align:left;padding:29px 0px 0px 25px;font-size:13px;color:#000}.bmap-clearfix{*+height:1%}.bmap-clearfix:after{content:".";display:block;height:0px;clear:both;visibility:hidden}\'), yf=xf+=".BMap_CityListCtrl{font-size:12px}.BMap_CityListCtrl a{text-decoration:none!important}.BMap_CityListCtrl a:hover{text-decoration:underline!important}.BMap_CityListCtrl .citylist_popup_main{border:1px solid #cdcdcd;z-index:2;position:relative;width:100%;height:100%;background:#fafafa;overflow:hidden;box-shadow:1px 1px 1px rgba(0,0,0,.1)}.ui_city_change_top .ui_city_change_inner,.ui_city_change_bottom .ui_city_change_inner{display:inline-block;height:24px;line-height:24px;border:1px solid #c4c7cc;background-color:#fff;padding:0 10px 0 10px;color:#000}.ui_city_change_top .ui_city_change_inner i,.ui_city_change_bottom .ui_city_change_inner i{width:8px;height:6px;display:inline-block;position:relative;top:9px;left:5px;-webkit-transition:all ease-in-out .15s;transition:all ease-in-out .15s;display:none9}.ui_city_change_click .ui_city_change_inner i,.ui_city_change_click_close .ui_city_change_inner i{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.ui_city_change_top .ui_city_change_inner:hover em{border-top-color:#0C88E8}.ui_city_change_top .ui_city_change_inner em{width:0;height:0;border-color:rgba(255,255,255,0);border-top-color:#D0D4DA;border-style:solid;border-width:4px}.ui_city_change_top .ui_city_change_inner:hover,.ui_city_change_bottom .ui_city_change_inner:hover{text-decoration:none!important;color:#3d6dcc}.ui_city_change_bottom .ui_city_change_inner:hover em{border-bottom-color:#0C88E8}.ui_city_change_bottom .ui_city_change_inner em{width:0;height:0;border-color:rgba(255,255,255,0);border-bottom-color:#D0D4DA;border-style:solid;border-width:4px;position:relative;top:-18px}.citylist_popup_main .citylist_ctr_title{background:#f9f9f9;border-bottom:1px solid #dadada;height:25px;line-height:25px;font-size:12px;color:#4c4c4c;padding-left:7px}.citylist_popup_main .city_content_top{position:relative;height:30px;padding:15px 10px 0px 10px;border-bottom:1px solid #CCC;margin:0px 10px}.citylist_popup_main .city_content_top .cur_city_info{display:inline-block;margin:0;padding:0;}#city_ctrl_form{position:absolute;right:12px;top:10px}#selCityWd{border:1px solid #ccc;height:20px;width:121px;line-height:20px;text-indent:4px;outline:none}#selCitySubmit:hover{background-position:-355px -98px}#selCitySubmit{float:right;background:url("+ z.cj+"wolfman/static/common/images/index_a2f1ac4.png) no-repeat scroll -302px -98px;height:24px;line-height:24px;width:48px;cursor:pointer;margin-left:5px;text-align:center}#sel_city_letter_list{padding-top:10px}#sel_city_letter_list a{white-space:nowrap;margin-right:11px;line-height:18px;font-size:13px;font-family:Arial,Helvetica,SimSun,sans-serif}.city_content_medium{padding:10px 10px 10px 10px;border-bottom:1px solid #CCC;margin:0px 10px}.city_content_bottom{padding:10px 10px 10px 8px;margin:9px 5px 5px 5px;height:218px;overflow-y:auto}#city_detail_table tr td{vertical-align:top}.sel_city_hotcity a{color:#3d6dcc}.sel_city_letter{padding:0 14px 0 3px}.sel_city_letter div{font-size:24px;line-height:24px;font-weight:700;color:#ccc;padding:0;margin:0;font-family:Arial,Helvetica,SimSun,sans-serif}.sel_city_sf{padding-right:8px;font-weight:700}.sel_city_sf a{white-space:nowrap;line-height:18px;color:#3d6dcc}.city_names_wrap{margin-bottom:9px}.sel_city_name{color:#3d6dcc;white-space:nowrap;margin-right:9px;line-height:18px;float:left}#popup_close{outline:none;position:absolute;z-index:50;top:7px;right:6px;width:12px;height:12px;background:url("+ z.cj+"wolfman/static/common/images/popup_close_15d2283.gif) no-repeat;border:0;cursor:pointer}",zf=document,Af=zf.createElement("style");Af.setAttribute("type","text/css");Af.styleSheet?Af.styleSheet.cssText=yf:Af.appendChild(zf.createTextNode(yf));var Bf=zf.getElementsByTagName("head");Bf.length?Bf[0].appendChild(Af):zf.documentElement.appendChild(Af); '); +_jsload2 && _jsload2('tile', 'function Ff(){this.Cd=this.Gp=this.sp=this.Lj=p;this.pE=q;this.ci=p}x.lang.ua(Ff,kc,"MobileInfoWindow"); x.extend(Ff.prototype,{initialize:function(a){this.C=a;this.ci=document.createElement("div");this.ci.className="iw";this.ci.style.cssText="position:absolute; line-height:28px; text-align:center; border:0px;";var b=this.Lj=document.createElement("div");this.ci.appendChild(b);this.sp=document.createElement("div");this.sp.className="iw_l";b.appendChild(this.sp);this.Gp=document.createElement("div");this.Gp.className="iw_r";b.appendChild(this.Gp);this.kk=document.createElement("a");this.kk.setAttribute("target", "_blank");this.kk.className="iw_s iw_s0 iw_c";this.kk.innerHTML="
            ";b.appendChild(this.kk);a.Rf().rD.appendChild(this.ci);this.bind();this.Cd=this.kk.getElementsByTagName("DIV")[0];this.sp.style.display="block";this.Gp.style.display="block";return this.ci},bind:function(){var a=this;x.M(a.sp,"click",function(b){a.QY();b.preventDefault();b.stopPropagation()});x.M(a.Gp,"click",function(b){a.yY();b.preventDefault();b.stopPropagation()});x.M(a.kk,"click",function(a){a.stopPropagation()}); x.Gb("touchstart touchmove touchend gesturestart gesturechange mousedown mouseout mouseover click mousewheel keydown selectstart".split(" "),function(b){x.M(a.kk,b,na);x.M(a.sp,b,na);x.M(a.Gp,b,na)})},YI:s(),NI:s(),ha:function(){return new H(this.hI.lng,this.hI.lat)},ta:s(),Wa:u("pE"),U:function(){x.D.U(this.V);this.ci.style.display="none";this.pE=q},show:function(a){a&&(this.point=a);x.D.show(this.V);this.ci.style.display="block";this.pE=o;this.C.R.ob=this},UZ:function(){var a=this.C,b=this.Uh,c= this.Lj.offsetWidth,d=this.Lj.offsetHeight,e=a.Bb(),c=c/2+16,d=d/2+78;if(this.Uh){var f=new Q(0,0);b.xe.height-b.y&&(f.y=e.height-b.y-60);0==f.x&&0==f.y||a.xg(f.x,f.y)}},switchTo:function(a){this.Uh=a.point;this.cf=a.name;this.gk=a.uid;this.Zj=a.za;this.rT=parseInt(this.C.platform.style.left);this.sT=parseInt(this.C.platform.style.top);this.hI=this.C.wb(this.Uh);this.show();this.tZ();this.RN()},Y3:function(){this.Lj.className= "iw_rt";this.show();this.RN()},tZ:function(){this.kk.setAttribute("href","http://map.baidu.com/place/detail?uid="+this.gk+"&output=html&source=jsapi&operate=mapclick&clicktype=vector");this.Lj.className="iw_rt";this.Cd.innerHTML="
            "+this.cf+"
            ";this.draw()},RN:function(){var a=this;a.fE||(a.fE=setTimeout(function(){a.UZ();clearTimeout(a.fE);a.fE=p},100))},P4:function(){var a=$("popList"); 43k&&(k=e),f>l&&(l=f);a[b][7]=[g,i,k,l]}return a};z.Db={YK:function(a,b,c,d,e,f){var g=f&&f.xa?f.xa:5,f=f&&f.fillStyle?f.fillStyle:"#817FD1",b=b-2,c=c-3,d=d+4,e=e+4;a.save();a.fillStyle=f;a.beginPath();a.moveTo(b+g,c);a.lineTo(b+d-g,c);a.arc(b+d-g,c+g,g,3*Math.PI/2,2*Math.PI,q);a.lineTo(b+d,c+e-g);a.arc(b+d-g,c+e-g,g,0,Math.PI/2,q);a.lineTo(b+g,c+e);a.arc(b+g,c+e-g,g,Math.PI/2,Math.PI,q);a.lineTo(b,c+g);a.arc(b+g,c+g,g,Math.PI,3*Math.PI/2,q);a.fill();a.restore()},XC:function(a,b,c,d,e,f,g,i,k){6>b.length||(d=d*Math.PI/180,e=e*Math.PI/180,this.eR(a, b,c,d,e,f,i,k),this.sR(a,b,c,d,e,g,i,k))},eR:function(a,b,c,d,e,f,g,i){a.strokeStyle=g;a.lineWidth=i;a.fillStyle=f;f=0;for(g=b.length;f=e?(n=l+c*Math.sin(Math.abs(d)),v=i+c*Math.sin(Math.abs(d)),t=m-c*Math.sin(Math.abs(e)),w=k-c*Math.sin(Math.abs(e))):0>=d&&0<=e? (n=l-c*Math.sin(Math.abs(d)),v=i-c*Math.sin(Math.abs(d)),t=m+c*Math.sin(Math.abs(e)),w=k+c*Math.sin(Math.abs(e))):(n=l-c*Math.sin(Math.abs(d)),v=i-c*Math.sin(Math.abs(d)),t=m-c*Math.sin(Math.abs(e)),w=k-c*Math.sin(Math.abs(e)));a.lineTo(n,t);a.lineTo(v,w);a.stroke();a.fill()}},sR:function(a,b,c,d,e,f,g,i){var k=0,l=0;0<=d&&0<=e?(k=c*Math.sin(Math.abs(d)),l=-c*Math.sin(Math.abs(e))):0<=d&&0>=e?(k=c*Math.sin(Math.abs(d)),l=c*Math.sin(Math.abs(e))):0>=d&&0<=e?(k=-c*Math.sin(Math.abs(d)),l=-c*Math.sin(Math.abs(e))): (k=-c*Math.sin(Math.abs(d)),l=c*Math.sin(Math.abs(e)));a.beginPath();a.moveTo(b[0]+k,b[1]-l);c=2;for(d=b.length;cl&&(n=l);var t=Math.sqrt(n*n/(1+m*m));0>i&&(t=-t);k+= t;g+=m*t;a[e?"lineTo":"moveTo"](k,g);l-=n;e=!e}}a.stroke()},qW:function(a,b,c,d,e,f,g,i,k){for(var l=b.length,f=0==parseInt(g/c)%2?f:f==i?k:i,g=(c-g%c)%c,m=0,n=0;n>>=0;return"rgba("+(a>>24&255)+","+(a>>16&255)+","+(a>>8&255)+","+(a&255)/256+")"},sL:function(a){return a&2?"italic":""},cM:function(a){return!!(a&16)},bM:function(a){return!!(a&4)},mx:function(a){return["butt","square","round"][a]},nx:function(a){return["miter","bevel","round"][a]}};x.extend(Gc.prototype,{WP:function(){this.FG(this.map);this.WH(o);this.Sx(0)},Sx:function(a){this.map.fa();this.loaded||(this.Ix(),this.WH(o),this.loaded=o);this.Uf();0!==a&&this.OO.$d()},ra:function(){var a=this,b=a.map;b.addEventListener("loadcode",function(){a.Sx()});b.addEventListener("addtilelayer",function(b){a.Wg(b)});b.addEventListener("removetilelayer",function(b){a.xh(b)});b.addEventListener("setmaptype",function(b){a.Ag(b)});b.addEventListener("zoomstartcode",function(){a.Jc()});a.map.addEventListener("setcustomstyles", function(b){a.St(b.target);a.Uf(o)});a.FG(b)},FG:function(a){var b=this;a.addEventListener("mousewheel",function(a){b.HY(a)});a.addEventListener("dblclick",function(a){b.zK(a)});a.addEventListener("rightdblclick",function(a){b.zK(a)});a.addEventListener("minuspress",function(a){b.oM(a)});a.addEventListener("pluspress",function(a){b.oM(a)});a.addEventListener("moving",function(){b.Uf()});a.addEventListener("resize",function(){b.map.Vb()||b.Uf()});b.map.addEventListener("setcustomstyles",function(){b.Ev()}); a.addEventListener("onvectorloaded",function(){a.Vb()&&(b.Ev(),b.ld.style.visibility="")})},WH:function(){this.OO=new window.VectorLayer(this.map.K.ue);this.map.Wg(this.OO)},Wg:function(a){var b=this,c=a.target,a=b.map.Vb();if(c instanceof cb)a&&!c.Hm&&(c.ra(this.map,this.ld),c.Hm=o);else if(c.Ch&&this.map.Wg(c.Ch),c.pp){for(a=0;af?o:q;if(e-1;b--){var c=m[b];if(n.children[b]){var d=n.children[b].style;d.top=Math.round(c.top+c.kf*a)+"px";d.left=Math.round(c.left+c.jf*a)+"px";d.width=Math.ceil(c.width+c.tW*a)+"px";d.height= Math.ceil(c.height+c.eW*a)+"px"}}if(i||k){t.left=n.jT-i*a+"px";t.top=n.nT-k*a+"px"}}},finish:function(){c.Uf();d.od&&(x.da.la&&x.da.la<8||document.compatMode==="BackCompat"?x.D.show(d.od):setTimeout(function(){x.D.show(d.od)},100));c.wl.style.visibility="";c.bo.style.visibility="";delete c.Jq;d.dispatchEvent(new O("onzoomend"));setTimeout(function(){if(c.ld)c.ld.style.visibility="";c.Ev()},10);n=p;c.$h=p}})},Ag:function(){var a=this,b=a.map;b.addEventListener("tilesloaded",function(){setTimeout(function(){a.Ev()}, 200);b.removeEventListener("tilesloaded",arguments.callee)});for(var c in this.vg)this.Fx(this.vg[c]);for(c in this.dj)this.Fx(this.dj[c]);c=this.Mm;for(var d=0,e=c.length;d@,;:\\\\\\\\\\\\"\\\\[\\\\]\\\\?=\\\\{\\\\}\\\\/\\\\u0080-\\\\uffff]+$\').test(a)};x.cookie.xX=function(a){return x.cookie.$H(a)&&(a=RegExp("(^| )"+a+"=([^;]*)(;|$)").exec(document.cookie))?a[2]||p:p};x.cookie.get=function(a){a=x.cookie.xX(a);return"string"==typeof a?a=decodeURIComponent(a):p}; x.cookie.YN=function(a,b,c){if(x.cookie.$H(a)){var c=c||{},d=c.bh;"number"==typeof c.bh&&(d=new Date,d.setTime(d.getTime()+c.bh));document.cookie=a+"="+b+(c.path?"; path="+c.path:"")+(d?"; expires="+d.toGMTString():"")+(c.domain?"; domain="+c.domain:"")+(c.GZ?"; secure":"")}};x.cookie.set=function(a,b,c){x.cookie.YN(a,encodeURIComponent(b),c)};x.cookie.remove=function(a,b){b=b||{};b.bh=new Date(0);x.cookie.YN(a,"",b)};x.mt=function(a){return/\\d{11}/.test(a)};x.kY=function(a){return/\\d{4}/.test(a)}; x.cs=function(){function a(a){a=a.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});return(a=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(a))?"rgb("+parseInt(a[1],16)+","+parseInt(a[2],16)+","+parseInt(a[3],16)+")":p}var b={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887", cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3", deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6", lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee", mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6", purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}, c={hex:/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,rgb:/rgb\\(\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*,\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*,\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*\\)/,rgba:/rgba\\(\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*,\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*,\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*,\\s*(0|1|0\\.[1-9])\\s*\\)/};return{OJ:function(a){if(c.hex.test(a))return a;if(c.rgb.test(a))return a=a.match(c.rgb),"#"+("0"+parseInt(a[1],10).toString(16)).slice(-2)+("0"+parseInt(a[2],10).toString(16)).slice(-2)+ ("0"+parseInt(a[3],10).toString(16)).slice(-2);if(b[a])return b[a]},W2:a,F1:function(a){return c.hex.test(a)?a:b[a]?b[a]:"#000"},qC:function(d,e){e===j&&(e=1);if(c.rgba.test(d))return d;"undefined"!=typeof b[d.toLowerCase()]&&(d=b[d.toLowerCase()]);c.hex.test(d)&&(d=a(d));c.rgb.test(d)?(d=d.replace(/rgb/g,"rgba"),d=d.replace(/\\)/,","+e+")")):d="rgba(0,0,0,1)";return d}}}(); '); +_jsload2 && _jsload2('canvablepath', 'function fg(a){a=a.replace(/,/gm," ");a=a.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm,"$1 $2");a=a.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm,"$1 $2");a=a.replace(/([MmZzLlHhVvCcSsQqTtAa])([^\\s])/gm,"$1 $2");a=a.replace(/([^\\s])([MmZzLlHhVvCcSsQqTtAa])/gm,"$1 $2");a=a.replace(/([0-9])([+\\-])/gm,"$1 $2");a=a.replace(/(\\.[0-9]*)(\\.)/gm,"$1 $2");a=a.replace(/([Aa](\\s+[0-9]+){3})\\s+([01])\\s*([01])/gm,"$1 $3 $4 ");a=fg.GV(a);a=fg.trim(a);this.vP=new function(a){this.LF= a.split(" ");this.reset=function(){this.jh=-1;this.Kt=this.Jw="";this.start=new fg.Yf(0,0);this.Kw=new fg.Yf(0,0);this.ib=new fg.Yf(0,0);this.ia=[];this.Ao=[]};this.aM=function(){return this.jh>=this.LF.length-1};this.wj=function(){return this.aM()?o:this.LF[this.jh+1].match(/^[A-Za-z]$/)!=p};this.qE=function(){switch(this.Jw){case "m":case "l":case "h":case "v":case "c":case "s":case "q":case "t":case "a":case "z":return o}return q};this.GL=function(){this.jh++;return this.LF[this.jh]};this.qj=function(){return parseFloat(this.GL())}; this.RY=function(){this.Kt=this.Jw;this.Jw=this.GL()};this.vm=function(){return this.DY(new fg.Yf(this.qj(),this.qj()))};this.yD=function(){var a=this.vm();return this.Kw=a};this.rk=function(){var a=this.vm();return this.ib=a};this.zL=function(){return"c"!=this.Kt.toLowerCase()&&"s"!=this.Kt.toLowerCase()&&"q"!=this.Kt.toLowerCase()&&"t"!=this.Kt.toLowerCase()?this.ib:new fg.Yf(2*this.ib.x-this.Kw.x,2*this.ib.y-this.Kw.y)};this.DY=function(a){this.qE()&&(a.x+=this.ib.x,a.y+=this.ib.y);return a};this.aj= function(a,b,e){e!=p&&(0=w(t,v)&&(n=Math.PI);1<=w(t,v)&&(n=0);t=1-i?1:-1;v=m+t*(n/2);c.OB(new fg.Yf(g.x+k*Math.cos(v),g.y+l*Math.sin(v)),v-t*Math.PI/2);c.OB(e,v-t*Math.PI);d.ng(e.x,e.y);a!=p&&(w=k>l?k:l,e=k>l?1:k/l,k=k>l?l/k:1,a.translate(g.x,g.y),a.rotate(f),a.scale(e,k),a.arc(0,0,w,m,m+n,1-i),a.scale(1/e,1/k),a.rotate(-f),a.translate(-g.x,-g.y))}break;case "Z":case "z":a!=p&&a.closePath(),c.ib=c.start}return d}} fg.trim=function(a){return a.replace(/^\\s+|\\s+$/g,"")};fg.GV=function(a){return a.replace(/[\\s\\r\\t\\n]+/gm," ")};fg.Yf=function(a,b){this.x=a;this.y=b}; fg.bP=function(){this.An=this.zn=this.Cj=this.Bj=Number.NaN;this.x=u("Bj");this.y=u("Cj");this.width=function(){return this.zn-this.Bj};this.height=function(){return this.An-this.Cj};this.ng=function(a,b){if(a!=p){if(isNaN(this.Bj)||isNaN(this.zn))this.zn=this.Bj=a;athis.zn&&(this.zn=a)}if(b!=p){if(isNaN(this.Cj)||isNaN(this.An))this.An=this.Cj=b;bthis.An&&(this.An=b)}};this.SB=function(a){this.ng(a,p)};this.TB=function(a){this.ng(p,a)};this.HJ=function(a, b,c,d,e,f){c=a+2/3*(c-a);d=b+2/3*(d-b);this.NB(a,b,c,c+1/3*(e-a),d,d+1/3*(f-b),e,f)};this.NB=function(a,b,c,d,e,f,g,i){var k=[a,b],l=[c,d],m=[e,f],n=[g,i];this.ng(k[0],k[1]);this.ng(n[0],n[1]);for(gg=0;1>=gg;gg++)if(a=function(a){return Math.pow(1-a,3)*k[gg]+3*Math.pow(1-a,2)*a*l[gg]+3*(1-a)*Math.pow(a,2)*m[gg]+Math.pow(a,3)*n[gg]},b=6*k[gg]-12*l[gg]+6*m[gg],c=-3*k[gg]+9*l[gg]-9*m[gg]+3*n[gg],d=3*l[gg]-3*k[gg],0==c)0!=b&&(b=-d/b,0b&&(0==gg&&this.SB(a(b)),1==gg&&this.TB(a(b))));else if(d=Math.pow(b, 2)-4*d*c,!(0>d)&&(e=(-b+Math.sqrt(d))/(2*c),0e&&(0==gg&&this.SB(a(e)),1==gg&&this.TB(a(e))),b=(-b-Math.sqrt(d))/(2*c),0b))0==gg&&this.SB(a(b)),1==gg&&this.TB(a(b))};this.ng(j,j);this.ng(j,j)};z.cP=fg; '); +_jsload2 && _jsload2('symbol', 'var hg={14:"m-0.00573,-10c-5.51975,0 -9.99427,4.47453 -9.99427,9.99428c0,5.51974 4.47452,9.99425 9.99427,9.99425c5.51972,0 9.99426,-4.47452 9.99426,-9.99425c0,-5.51975 -4.47453,-9.99428 -9.99426,-9.99428zm0,17.92491c-4.37412,0 -7.93132,-3.55788 -7.93132,-7.93063c0,-4.37345 3.5572,-7.93134 7.93132,-7.93134c4.37411,0 7.93062,3.55721 7.93062,7.93134c0,4.37412 -3.55789,7.93063 -7.93062,7.93063zm-0.00068,-15.4088c-0.38027,0 -0.68696,0.30807 -0.68696,0.68765l0,6.34078l-4.15752,1.81815c-0.34794,0.15266 -0.50611,0.55837 -0.35344,0.90632c0.11278,0.25787 0.36445,0.4119 0.6292,0.4119c0.09214,0 0.18635,-0.01857 0.27575,-0.05845l4.55635,-1.99279c0.00344,-0.00137 0.00619,-0.00275 0.00894,-0.00412l0.00275,-0.00138c0.01032,-0.00413 0.01581,-0.01376 0.02545,-0.01719c0.07151,-0.03576 0.13821,-0.07771 0.19185,-0.1341c0.02337,-0.02338 0.03644,-0.05364 0.05431,-0.08045c0.03301,-0.04401 0.06946,-0.08733 0.0894,-0.14028c0.0165,-0.04126 0.01787,-0.08596 0.02613,-0.12997c0.00894,-0.04469 0.02614,-0.08389 0.02614,-0.1286l0,-6.7905c0,-0.37889 -0.30807,-0.68697 -0.68833,-0.68697z", 13:"m-0.00706,-9.5c-5.24281,0 -9.49294,4.25065 -9.49294,9.49294c0,5.24331 4.25014,9.49294 9.49294,9.49294c5.24281,0 9.49294,-4.24964 9.49294,-9.49294c0,-5.2423 -4.25013,-9.49294 -9.49294,-9.49294zm3.08857,3.85997c0.61044,0 1.10279,0.96873 1.10279,2.16271s-0.49384,2.1647 -1.10279,2.1647c-0.60844,0 -1.10228,-0.96873 -1.10228,-2.16372s0.49434,-2.16369 1.10228,-2.16369zm-6.28628,0c0.60844,0 1.10228,0.96873 1.10228,2.16271s-0.49284,2.1647 -1.10228,2.1647s-1.10277,-0.96873 -1.10277,-2.16372s0.49383,-2.16369 1.10277,-2.16369zm3.21167,12.16493c-1.87667,0 -3.63373,-1.14814 -5.14663,-3.14239c1.56571,1.02156 3.27993,1.59064 5.07786,1.59064c1.90905,0 3.72343,-0.63985 5.36539,-1.78497c-1.54429,2.11685 -3.35767,3.33672 -5.29662,3.33672l-0.00001,0z", 12:"m9.27295,5.92958l-2.64443,-4.57961c-0.79727,-1.37992 -2.10131,-3.63983 -2.8986,-5.01973l-2.64441,-4.57858c-0.79782,-1.38093 -2.10186,-1.38093 -2.89913,0l-2.64335,4.57858c-0.79728,1.3799 -2.10188,3.63981 -2.89916,5.01973l-2.64387,4.57961c-0.79728,1.38101 -0.14472,2.50988 1.44983,2.50988l16.37221,0c1.59561,0 2.24711,-1.12887 1.45091,-2.50988l0,0zm-8.88166,0.70811l-1.56837,0l0,-1.50484l1.56837,0l0,1.50484zm-0.07527,-2.61447l-1.41621,0l-0.14044,-6.44231l1.68427,0l-0.12761,6.44231l0,0z",11:"m8.08295,-6.56414l-3.59319,0l0,-1.43586l-8.98155,0l0,1.43586l-3.59321,0c-1.0569,0 -1.915,0.85509 -1.915,1.91159l0,9.92258c0,1.05357 0.8581,1.91158 1.915,1.91158l16.16796,0c1.05692,0 1.91501,-0.85801 1.91501,-1.91158l0,-9.92258c0,-1.0565 -0.85809,-1.91159 -1.91501,-1.91159l0,0zm-8.08397,12.66884c-3.20143,0 -5.80643,-2.60031 -5.80643,-5.79596c0,-3.19569 2.605,-5.79891 5.80643,-5.79891s5.80789,2.60322 5.80789,5.79891c0,3.19565 -2.60794,5.79596 -5.80789,5.79596zm0,-9.6804c-2.15036,0 -3.89142,1.7394 -3.89142,3.88444c0,2.14503 1.74252,3.8844 3.89142,3.8844c2.1489,0 3.89141,-1.73937 3.89141,-3.8844c0,-2.14503 -1.74105,-3.88444 -3.89141,-3.88444z", 10:"m0,-10c-0.20885,0 -0.39491,0.08583 -0.55177,0.24149c-0.15674,0.15536 -0.28646,0.37838 -0.39429,0.65665c-0.21586,0.55655 -0.34853,1.33844 -0.42114,2.27477c-0.07231,0.93446 -0.08474,2.02273 -0.05447,3.18765c-2.58175,1.05925 -7.81787,3.24648 -8.23854,3.73474c-0.56001,0.65029 -0.37908,1.3954 -0.15331,1.89002l8.608,-1.75235c0.18202,2.28374 0.4407,4.5455 0.66615,6.31771c-0.8418,0.24646 -2.41323,0.73303 -2.73754,1.03474c-0.4469,0.41562 -0.4469,1.75793 -0.4469,1.75793l3.52318,-0.28665c0.08286,0.57874 0.13486,0.9163 0.13486,0.9163l0.00511,0.03042l0.02778,0l0.06486,0l0.02778,0l0.00511,-0.03042c0,0 0.05185,-0.33756 0.13486,-0.9163l3.52424,0.28665c0,0 0,-1.34231 -0.44688,-1.75793c-0.32446,-0.30172 -1.89697,-0.7895 -2.73847,-1.0358c0.22484,-1.76681 0.4832,-4.02001 0.66507,-6.29634l8.50712,1.73203c0.22561,-0.49462 0.40765,-1.23973 -0.15237,-1.89002c-0.41538,-0.48221 -5.52504,-2.62071 -8.1386,-3.69423c0.03119,-1.17999 0.01971,-2.28285 -0.05353,-3.22816l0,-0.00233c-0.07263,-0.93523 -0.20545,-1.71635 -0.42114,-2.27244c-0.10784,-0.27827 -0.23634,-0.50114 -0.3932,-0.65665c-0.15689,-0.15567 -0.34293,-0.24149 -0.55195,-0.24149l0,0l0,0l0,0l0.00001,0l0,0l-0.00003,0.00001z", 3:"m-10,0l10,-10l10,10l-10,10l-10,-10z",5:"M0,0 L-5,-15 0,-10 5,-15 z",6:"M0,0 L5,15 0,10 -5,15z",7:"M-5,-15 L0,0 5,-15",8:"M-5,15 L0,0 5,15",9:"m0,-24c-4.4183,0 -8,3.58167 -8,8c0,1.42102 0.3816,2.75 1.0312,3.90601c0.1079,0.19202 0.221,0.38098 0.3438,0.56299l6.625,11.53101l6.625,-11.53101c0.102,-0.151 0.19,-0.31097 0.281,-0.46899l0.063,-0.09399c0.649,-1.15601 1.031,-2.48499 1.031,-3.90601c0,-4.41833 -3.582,-8 -8,-8zm0,4c2.209,0 4,1.79089 4,4c0,2.20898 -1.791,4 -4,4c-2.2091,0 -4,-1.79102 -4,-4c0,-2.20911 1.7909,-4 4,-4z"}; x.extend(rc.prototype,{Kn:function(){var a=this.jB;hg[a]&&(a=hg[a]);switch(a){case 1:var b=a=this.Ou(2),c=this.style.scale,d=this.Hi;this.size=new N(a,b);this.anchor=new N(a/2+d.width*c,b/2+d.height*c);this.path=1;break;case 2:var a=this.Ou(4),b=this.Ou(2),d=this.Hi,e=this.style.nc?this.style.nc:this.style.scale,c=this.style.scale;this.size=new N(a,b);this.qr=new N(Math.floor(-e/2),Math.floor(-e/2));this.anchor=new N(a/2+d.width*c,b/2+d.height*c);this.path=2;break;case 4:b=a=this.Ou(20);d=this.Hi; c=this.style.scale;this.size=new N(a,b);this.anchor=new N(a/2+d.width*c,b/2+d.height*c);this.path=4;break;default:var a=new z.cP(a),f=a.hb(),b=this.style.rotation*Math.PI/180,e=this.style.nc?this.style.nc:this.style.scale,c=this.style.scale,d=this.Hi,g=new N(Math.floor(f.Bj*c-e/2),Math.floor(f.Cj*c-e/2)),c={vO:new Q(Math.floor(f.Bj*c-e/2)-c*d.width,Math.floor(f.Cj*c-e/2)-c*d.height),y1:new Q(Math.floor(f.Bj*c-e/2)-c*d.width,Math.ceil(f.An*c-e/2)-c*d.height),x4:new Q(Math.ceil(f.zn*c+e/2)-c*d.width, Math.floor(f.Cj*c-e/2)-c*d.height),z1:new Q(Math.ceil(f.zn*c+e/2)-c*d.width,Math.ceil(f.An*c+e/2)-c*d.height)},d={},e=[],f=[],i;for(i in c){var k=Math.cos(b)*c[i].x-Math.sin(b)*c[i].y,l=Math.sin(b)*c[i].x+Math.cos(b)*c[i].y;d[i]=new Q(k,l);e.push(k);f.push(l)}xmax=Math.max.apply(Math,e);ymax=Math.max.apply(Math,f);xmin=Math.min.apply(Math,e);ymin=Math.min.apply(Math,f);this.size=new N(Math.ceil(xmax-xmin),Math.ceil(ymax-ymin));this.anchor=new N(-xmin,-ymin);this.qr=new N(xmin-d.vO.x,ymin-d.vO.y); this.zA=new Q(g.width,g.height);this.RI=b;this.path=a}},Ou:function(a){return this.style.nc?a*this.style.scale+this.style.nc%3+this.style.nc:a*this.style.scale+this.style.scale+this.style.scale%2},yb:function(a){var b=this.style.scale;size=this.size;this.br=a;a.getContext&&a.getContext("2d")?(a=this.Ih=a.getContext("2d"),a.fillStyle=x.cs.qC(this.style.fillColor,this.style.qg),a.strokeStyle=x.cs.qC(this.style.strokeColor,this.style.rd)):(a=new z.FP(a),a.fillStyle={color:x.cs.OJ(this.style.fillColor), alpha:this.style.qg},a.strokeStyle={color:x.cs.OJ(this.style.strokeColor),alpha:this.style.rd});a.lineCap="round";a.lineJoin="round";a.lineWidth=this.style.nc||b;this.qr&&a.translate(-this.qr.width,-this.qr.height);this.RI&&a.rotate(this.RI);this.zA&&a.translate(-this.zA.x,-this.zA.y);switch(this.path){case 1:a.arc(size.width/2,size.height/2,b,0,2*Math.PI);break;case 2:a.rect(0,0,4*b,2*b);break;case 4:a.beginPath();for(var c=size.width/2,b=10*b,d=2*Math.PI/10,e=11;0!=e;e--){var f=b*(e%2+1)/2,g=d* e;a.lineTo(f*Math.sin(g)+c,f*Math.cos(g)+c)}a.closePath();break;default:a.lineWidth/=b,a.scale(b,b),this.path.hi(a)}a.fill();a.stroke()},setPath:function(a){this.jB=a;this.Kn()},setAnchor:function(a){this.Hi=this.style.anchor=a;this.Kn()},setRotation:function(a){this.style.rotation=a;this.Kn()},setScale:function(a){this.style.scale=a;this.Kn()},setStrokeWeight:function(a){this.style.nc=a;this.Kn()}}); '); +_jsload2 && _jsload2('marker', 'function ig(a,b){0x.da.nf)&&x.M(this.V,"contextmenu",function(c){b.dispatchEvent(a(c,ma(new O("onrightclick"), c)))}));x.M(this.V,"mousedown",function(c){if(b instanceof T)b.JA=b.ha();b.dispatchEvent(a(c,ma(new O("onmousedown"),c)))});x.M(this.V,"mouseup",function(c){b.dispatchEvent(a(c,ma(new O("onmouseup"),c)));x.da.nf>=4&&(c.button===2&&b.z.hf)&&b.dispatchEvent(a(c,ma(new O("onrightclick"),c)))})}},U:function(){this.Qa!==q&&(this.Qa=q,kc.prototype.U.call(this),this.Cb&&(this.Cb.ab&&this.Cb.ab===this)&&this.Wc())},show:function(){this.Qa!==o&&(this.Qa=o,kc.prototype.show.call(this))},PN:function(a){if(a)for(var b in a)typeof this.z[b]=== typeof a[b]&&(this.z[b]=a[b])},Xt:function(a){this.zIndex=a;this.Nl()},Nl:function(){var a;Eb(this.zIndex)?a=this.zIndex:(a=0,this.map&&this.ha()&&(a=this.ha()?this.ha().lat:0,a=kc.Am(a)+(this.z.XJ||0)));this.V&&(this.V.style.zIndex=a)},wo:function(a){this.hg=a;this.map&&a.ra(this.map,this)},Cp:function(){this.hg.remove();this.hg=p}});S(Ye,{show:Ye.show,hide:Ye.U,addContextMenu:Ye.wo,removeContextMenu:Ye.Cp});T.Iu=kc.Am(-90)+1E6;T.lG=T.Iu+1E6;T.NR=function(a){if(T.Zu[a])return T.Zu[a];var b=T.Zu[a]=["BMap_"+Math.round(1E4*Math.random()),"BMap_"+Math.round(1E4*Math.random())],c=Fc[a],d=T.uU;d||(d=T.uU=M("style",{type:"text/css"}),document.getElementsByTagName("head")[0].appendChild(d));d.textContent+=T.uH(c.Dm,b[0])+T.uH(c.Yt,b[1]);return T.Zu[a]}; T.uH=function(a,b){var c=["@-webkit-keyframes "+b+" {\\\\n"];x.kc.Gb(a,function(a){c.push(100*a.ac,"% { ");c.push("-webkit-transform: translate(",a.translate[0],"px,",a.translate[1],"px); ");c.push("-webkit-animation-timing-function: ",a.hc,"; ");c.push("}\\\\n")});c.push("}\\\\n");return c.join("")}; T.SP=function(a,b){if(!T.Kh&&(T.Kh=M("img",{src:E.qa+"drag_cross.png",width:13,height:9}),T.Kh.style.position="absolute",6==x.da.la)){delete T.Kh;var c=(T.Kh=M("div")).style;c.position="absolute";c.width="13px";c.height="9px";c.filter=\'progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image,src="\'+E.qa+\'drag_cross.png")\'}c=T.Kh.style;c.left=a.width-6+"px";c.top=a.height-5+"px";b.appendChild(T.Kh)};T.GT=function(){T.Kh&&T.Kh.parentNode&&T.Kh.parentNode.removeChild(T.Kh)};T.Zu=[]; T.MG=function(){this.style.WebkitAnimation=""}; x.extend(T.prototype,{initialize:function(a){this.er();fb.prototype.initialize.call(this,a);this.Qa||x.D.U(this.Ac);this.ta(this.point);this.Ub(this.z.uj);this.Ay(this.z.Mk);this.Op(this.z.rotation);this.z.label&&this.Tu&&this.z.label.addEventListener("remove",this.Tu);this.fn(this.z.label);this.Cc(this.z.title);this.vA();return this.V},er:function(){this.Oi||(this.Oi=o,this.Yc=this.Ac=this.Md=this.V=p,this.nl=q)},Hj:function(){var a=this.map.Rf();this.V=yb(a.FE,this.eT());this.Ac=yb(a.JM,this.XS()); this.Ac.ba=this.ba},eT:function(){var a=[\'\');return a.join("")},XS:function(){var a=[\'\');return a.join("")},iU:function(){var a=[\'\');return a.join("")},draw:function(){if(this.V){var a=this.hS();this.V.style.left=a[0].x+"px";this.V.style.top=a[0].y+"px";this.Ac&&(this.Ac.style.left=a[0].x+"px",this.Ac.style.top=a[0].y+"px"); this.Md&&(this.Md.style.left=a[1].x+"px",this.Md.style.top=a[1].y+"px");this.Cb!=p&&this.Cb.Wa()&&this.Cb.ta();this.Nl()}},hS:function(){var a=this.z.za||new N(0,0),b=this.z.uj.anchor||new N(0,0),c=this.map.Te(this.ha()),b=[new Q(c.x+a.width-b.width,c.y+a.height-b.height)];if(this.z.Mk){var d=this.z.Mk.anchor||new N(0,0);b[1]=new Q(c.x+a.width-d.width,c.y+a.height-d.height)}return b},yb:function(){this.map?(this.V=this.initialize(this.map),this.vq&&(this.dn(this.vq),delete this.vq)):delete this.vq}, remove:function(){this.dn(p);this.Ac&&this.Ac.parentNode&&this.Ac.parentNode.removeChild(this.Ac);this.Md&&this.Md.parentNode&&this.Md.parentNode.removeChild(this.Md);this.Cb&&(this.Cb.ab&&this.Cb.ab===this)&&(this.Wc(),this.Cb=p);this.cc=this.Yc=this.Md=this.Ac=p;if(this.z.label){var a=this.z.label;a.removeEventListener("remove",this.Tu);x.lang.Tw(a.ba);a.SN(p);a.V=p;this.z.label=p}fb.prototype.remove.call(this)},U:function(){fb.prototype.U.call(this);this.V&&x.D.U(this.V);this.Ac&&x.D.U(this.Ac); this.Md&&x.D.U(this.Md)},show:function(){fb.prototype.show.call(this);this.V&&x.D.show(this.V);this.Ac&&x.D.show(this.Ac);this.Md&&x.D.show(this.Md)},Ub:function(a){if(a instanceof qc||a instanceof rc)if(this.z.uj=a,this.map&&this.V&&this.Ac){try{this.Yc&&(this.Ac.removeChild(this.Yc),this.Yc=p),this.V.style.width=a.size.width+"px",this.V.style.height=a.size.height+"px"}catch(b){}if(this.z.uj){var c=this.Yc=M(a instanceof qc?"div":"canvas"),d=c.style;d.position="absolute";d.padding=d.margin="0";d.width= a.size.width+"px";d.height=a.size.height+"px";d.overflow="hidden";a instanceof rc?(c.width=a.size.width,c.height=a.size.height,a.yb(c)):(c.innerHTML=jg(a),c.eL=q);this.Ac.appendChild(this.Yc)}this.draw()}},Ay:function(a){if(a instanceof qc&&(this.z.Mk=a,this.map&&this.V&&this.Ac)){this.Md||(this.Md=yb(this.map.Rf().KM,this.iU()));try{this.cc&&(this.Md.removeChild(this.cc),this.cc=p),this.Md.style.width=a.size.width+"px",this.Md.style.height=a.size.height+"px"}catch(b){}if(this.z.Mk){var c=this.cc= M("div"),d=c.style;d.position="absolute";d.padding=d.margin="0";d.width=a.size.width+"px";d.height=a.size.height+"px";d.overflow="hidden";c.innerHTML=jg(a);c.eL=q;this.Md.appendChild(this.cc)}this.draw()}},fn:function(a){if(a&&a instanceof uc){var b=this;I.load("marker",function(){b.bU(a)},o)}},bU:function(a){if(a instanceof uc){this.z.label=a;var b=this;this.z.label.Ji||(this.z.label.Ji=o,this.Tu=function(){b.z.label=p},this.z.label.addEventListener("remove",this.Tu));if(this.map){a.Ee(this.map); a.V?this.Ac.appendChild(a.V):(a.V=yb(this.V,a.va()),a.V.ba=a.ba);var c=a.V.style;c.left=a.z.za.width+"px";c.top=a.z.za.height+"px";a.SN(this)}}},vA:function(){function a(a,b){b.pixel=b.jb=a.jb;b.point=b.point=a.point;return b}function b(a){var b=a.clientX,c=a.clientY;a.changedTouches&&(b=a.changedTouches[0].clientX,c=a.changedTouches[0].clientY);return new Q(b,c)}if(this.V&&!this.V.Ji){this.V.Ji=o;var c=this.map,d=this,e=0,f=0,g=0,i={x:0,y:0};this.Bs=function(a){if(d.z.Yb&&2!=a.button){d.nl=o;var i= c.bc(d.point),m=b(a);e=m.x-i.x;f=m.y-i.y;g=ab();d.map&&d.map.R&&(d.map.R.$u=d);x.M(d.map.platform,"mousemove",d.ij);x.M(d.map.platform,"mouseup",d.hj);x.M(d.map.platform,"touchmove",d.ij);x.M(d.map.platform,"touchend",d.hj);d.V&&d.V.setCapture&&d.V.setCapture();d.V.style.cursor=d.z.Fd;"touchstart"==a.type&&na(a)}};this.ij=function(g){if(d.nl&&(g=b(g),i=g=new Q(g.x-e,g.y-f),d.Uz=g,d.z.GN&&15=g.x||g.x>=d.map.width-20||50>=g.y||g.y>=d.map.height-10){if(20>=g.x?d.Al=8:g.x>=d.map.width-20&&(d.Al=-8),50>=g.y?d.Bl=8:g.y>=d.map.height-10&&(d.Bl=-8),!d.De)d.De=setInterval(function(){c.xg(d.Al,d.Bl,{noAnimation:o});var a=c.wb(d.Uz);d.ta(a)},30)}else d.De&&(clearInterval(d.De),d.De=p),d.ta(l);d.fl||(d.dispatchEvent(a(m,new O("ondragstart"))),d.fl=o,d.z.zN&&(d.dn(3),T.SP(d.z.uj.anchor,d.Ac)));d.dispatchEvent(a(m,new O("ondragging")))}};this.hj=function(){d.V&&d.V.releaseCapture&&d.V.releaseCapture(); d.nl=q;d.map&&d.map.R&&(d.map.R.$u=p);x.bd(document,"mousemove",d.ij);x.bd(document,"mouseup",d.hj);x.bd(document,"touchmove",d.ij);x.bd(document,"touchend",d.hj);e=f=0;d.De&&(clearInterval(d.De),d.De=p);if(100<=ab()-g&&(2
            \'),a.printImageUrl&&(b.push(\'\'))):(b=[\'\'));return b=b.join("")};x.extend(uc.prototype,{Hj:function(){var a=this.z,b=this.content,c=M("label",{"class":"BMapLabel",unselectable:"on"});a.title&&(c.title=a.title);var d=c.style;d.position="absolute";d.MozUserSelect="none";0==a.width||"auto"==a.width?d.display="inline":(d.width=a.width+"px",d.display="block",d.overflow="hidden");"true"==a.hf?d.cursor="pointer":x.da.la||(d.cursor="inherit");c.innerHTML=b;this.map.Rf().xE.appendChild(c);this.V=c;this.Ld(a.Up);return c},ta:function(a){a instanceof H&&!this.px()&&(this.point= this.z.position=new H(a.lng,a.lat),this.draw())},draw:function(){if(this.V&&this.ha()&&!this.px()){var a=this.z.za||new N(0,0),b=this.map.Te(this.ha());this.V.style.left=b.x+a.width+"px";this.V.style.top=b.y+a.height+"px";this.Nl()}},yb:function(){this.map&&!this.sv&&(this.V=this.initialize(this.map),this.draw())},ad:function(a){this.content=a;this.V&&(this.V.innerHTML=a)},tF:function(a){0<=a&&1>=a&&(this.z.opacity=a);if(this.V){var b=this.V.style;b.opacity=a;b.filter="alpha(opacity="+100*a+")"}}, Ve:function(a){a instanceof N&&(this.z.za=new N(a.width,a.height),this.px()&&this.V?(this.V.style.left=a.width+"px",this.V.style.top=a.height+"px"):this.draw())},Ld:function(a){a=a||{};this.z.Up=x.extend(this.z.Up,a);if(this.V)for(var b in a)try{this.V.style[b]=a[b]}catch(c){}},Cc:function(a){this.z.title=a+"";this.V&&(this.V.title=this.z.title)}});S($e,{setStyle:$e.Ld,setContent:$e.ad,setPosition:$e.ta,setOffset:$e.Ve,setTitle:$e.Cc}); '); +_jsload2 && _jsload2('infowindow', 'x.extend(tc.prototype,{initialize:function(a){var b=this.map=a.map;this.ab=a;this.va();this.ca();this.z.ah?this.ah():this.Ww();this.Tc()&&(this.map.La.jy.style.display="none",this.map.La.gy.style.display=this.z.iD?"block":"none");this.Cc(this.z.title);this.ad(this.content,o);this.z.ZX&&this.XZ(o);this.ge(p,o);if(b=b.La)b.Nm=a instanceof T?a:p},va:function(){var a=this.map,b=a.La,c=this.Di;if(!b){b=a.La={};a.Cb=a.La;var d=[\'");d.push(\'");b.yc=yb(a.platform,d.join(""));b.cc=b.yc.previousSibling;b.Wm=b.yc.children;b.Zt=b.cc.getElementsByTagName("div");b.ei=b.Wm[8];b.Wp=yb(b.Wm[8],\'
            \');b.og=yb(b.Wm[8],\'
            \'); b.qi=yb(b.Wm[8],\'\');a=10;G()&&(a=15);b.Hw=yb(b.yc,\'\');b.gy=yb(b.yc,\'\');b.jy=yb(b.yc, \'\');b.ee=yb(b.yc,\'\');b.Cx=yb(b.yc,\'
            \');this.ZS(b)}b.ba=b.yc.ba=this.ba}, ZS:function(a){if(x.da.la&&!(6b[c].src.indexOf(".png")||(b[c].style.cssText+=";FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="+b[c].src+",sizingMethod=crop)",b[c].src=this.Di+"blank.gif");a=a.cc.getElementsByTagName("IMG");for(c=0;cb&&(b=0);var d=c.za.width,e=c.za.height,c=[25,-1,25,-1,25,-1,25,34],f=[25,-1,25,-1,25,-1,25,50];c[1]=a-c[0]-c[2];c[3]=x.da.la&&"CSS1Compat"!=document.compatMode?a:a-2;c[5]=a-c[4]-c[6];f[1]=f[0];f[3]=b-f[0]-f[4];f[5]=x.da.la&&"CSS1Compat"!=document.compatMode?f[4]:f[4]-1;var g=[0,c[0],a-c[2],0,0,c[4],a-c[6],Math.ceil((a-c[7])/2)],i=[0,0,0,f[0],b-c[4],b-c[4],b-c[4],b-c[4]];this.IG=d-Math.round((a-c[7])/2);this.JG=e-b-24;var k=Math.floor((b+f[7])/2.03)+30,l=[70,-1,70,-1,-1,-1, 50,-1,140,-1,70],m=[30,30,30,25,25,25,60,60,60,60,60];l[7]=Math.round((a+80-(l[6]+l[8]+l[10])-50)/2);l[9]=l[7]+50;l[1]=l[6]+l[7]+l[8]+l[9]+l[10]-l[0]-l[2]-29;l[5]=l[3]=k-m[0]-m[6]+70;m[3]=m[4]=m[5]=k-m[0]-m[6];l[4]=l[0]+l[1]+l[2]+m[3]+29-l[5]-l[3];var n=[k-60-1,k-60-1+l[0],k-60-1+l[0]+l[1],29,29+l[3],29+l[3]+l[4],0,l[6],l[6]+l[7],l[6]+l[7]+l[8],l[6]+l[7]+l[8]+l[9]],t=[0,0,0,m[0],m[0],m[0],m[0]+m[3],m[0]+m[3],m[0]+m[3],m[0]+m[3],m[0]+m[3]];this.KG=d-l[6]-l[7]-70;this.LG=e-k+30;d=323-k+90;shadowRightImageLeft= 740+d;if((e=this.map.La)&&e.Wm)for(k=0;8>k;k++)e.Wm[k].style.cssText="box-sizing:content-box;overflow: hidden; z-index: 1; position: absolute; left:"+g[k]+"px; top:"+i[k]+"px; width:"+c[k]+"px; height:"+f[k]+"px";if(e&&e.Zt){for(k=0;kd?0:d)+"px";e.Zt[5].firstChild.style.marginLeft="-"+shadowRightImageLeft+"px"}this.ta()},Bh:function(a){a*=1;if(!(!a&&0!=a||isNaN(a)||0>a))if(0!=a&&(220>a&&(a=220),730a))if(0!=a&&(60>a&&(a=60),650a)||(0!=a&&(220>a&&(a=220),730c.map.height?c.map.height-60:b;m=m<220?220:m;m=m>730?730:m;b=b<55?55:b;b=b>650?650:b;c.xB(m+32,b+32);d.ei.style.width=m+"px";d.ei.style.height=b+"px";d.Hw.style.left=m+f+"px";if(c.z.SK){d.ee.style.left=m-2*g+f+"px";d.jy.style.left=m-g+f+"px"}else d.ee.style.left=m-g+f+"px";if(c.z.iD){d.ee.style.left=m-3*g+f+"px";d.gy.style.left=m-2*g+f+"px"}d.ei.style.overflow="hidden";if(c.z.eD)d.ei.style.overflow="auto";c.dispatchEvent(new O("onresize")); a()},1);else{var i=d.og.style,k=d.Wp.style,l=d.ei.style;i.width=l.width=k.width="auto";i.height=l.height=k.height="auto";i.whiteSpace="nowrap";"none"==d.yc.style.display&&this.show();d.yc.style.visibility="hidden";d.cc.style.visibility="hidden";var m=d.ei.clientWidth||0,m=0==c.z.width?m:c.z.width,m=m>c.map.width?c.map.width-60:m,m=220>m?220:m,m=730c.map.height-92?c.map.height-92:h;h=h<55?55:h;h=h>650?650:h;c.xB(m+32,h+32);d.yc.style.visibility="";d.cc.style.visibility="";l.height=h+"px";d.Hw.style.left=m+f+"px";if(c.z.SK){d.ee.style.left=m-2*g+f+"px";d.jy.style.left=m-g+f+"px"}else d.ee.style.left=m-g+f+"px";if(c.z.iD){d.ee.style.left=m-3*g+f+"px";d.gy.style.left=m-2*g+f+"px"}c.dispatchEvent(new O("onresize"));a()},1)}}},ta:function(){if(this.Tc()){var a=this.map.La,b=this.ab,c= this.map.Te(b.ha()),d=b.Yo(),b=new Q(c.x-d.anchor.width+d.infoWindowAnchor.width+b.Qf().width,c.y-d.anchor.height+d.infoWindowAnchor.height+b.Qf().height);this.IG!=j&&(this.JG!=j&&this.KG!=j&&this.LG!=j)&&(a.yc.style.left=this.IG+b.x+"px",a.yc.style.top=this.JG+b.y+"px",a.cc.style.left=this.KG+b.x+"px",a.cc.style.top=this.LG+b.y+"px")}},Lk:function(a){var b=this;setTimeout(function(){b.$Z()},a||200)},$Z:function(){if(this.ab&&this.ab.ha()&&this.z.Fs&&this.Tc()){var a=this.map,b=a.La,c=b.Wm,d=b.yc; if(c&&d){var b=parseInt(c[3].style.width)+2,c=parseInt(c[1].style.height)+parseInt(c[3].style.height)+parseInt(c[7].style.height),e=parseInt(d.style.left)+this.map.offsetX,f=parseInt(d.style.top)+this.map.offsetY,d=new Q(e,f),e=new Q(b+e,c+f);0!=this.z.height&&document.all&&(a.R.Hx||(a.R.Hx=-1),f=-a.R.Hx,a.R.Hx=-a.R.Hx);var g=f=0,i=this.z.margin[0],k=this.z.margin[1],l=this.z.margin[2],m=this.z.margin[3];d.xa.width-k&&(f=a.width-e.x-k);e.y>a.height-l&&(g=a.height- e.y-l);this.QS();i=this.z.lC;d.xa.width-i[1][0]&&d.y=b?f=-e.x+a.width-i[1][0]:(g=-d.y+i[1][1],a.width-i[0][0]-i[1][0]a.height-i[3][1]&&(Math.abs(-d.x+ i[3][0])=b?f=-d.x+i[3][0]:g=-e.y+a.height-i[3][1],a.height-i[0][1]-i[3][1]a.width-i[2][0]&&e.y>a.height-i[2][1]&&(Math.abs(-e.x+a.width-i[2][0])=b?f=-e.x+a.width-i[2][0]:(g=a.height-i[1][1]-i[2][1]>=c?-e.y+a.height-i[2][1]:-d.y+i[1][1],a.width-i[0][0]- i[2][0]f[0]?g:f[0],i>f[1]?i:f[1]]}},ah:function(){this.z.ah=o;this.Tc()&&(this.map.La.ee.style.display="block")},Ww:function(){this.z.ah=q;this.Tc()&&(this.map.La.ee.style.display="none")},show:function(){if(this.Tc()){var a=this.map.La;"none"==a.yc.style.display&&(Gb(this.content)&&(a.og.appendChild(this.content),this.z.kD&&a.og.appendChild(this.TD())), Gb(this.z.title)&&a.Wp.appendChild(this.z.title),x.D.show(a.yc),x.D.show(a.cc),a=new O("onopen"),a.point=a.point=this.ha(),this.dispatchEvent(a),this.ge())}},U:function(){if(!this.Tc())return q;var a=this.map.La;if("none"==a.yc.style.display||this.z.UY()==q)return q;Gb(this.content)&&(a.og.removeChild(this.content),this.z.kD&&a.og.removeChild(this.TD()));Gb(this.z.title)&&a.Wp.removeChild(this.z.title);x.D.U(a.yc);x.D.U(a.cc);this.be&&(this.be=q,a.qi.style.display="none",a.og.style.display="",a.ee.src= this.Di+"iw_plus1d3.gif");a=new O("onclose");a.point=a.point=this.ha();this.dispatchEvent(a);this.map.R.Vu?(clearTimeout(this.map.R.Vu),this.map.R.Vu=p):(this.map.removeEventListener("click",this.map.R.Fz),this.map.R.Ez=q);x.lang.Tw(this.ba);return o},Vx:function(){if(this.map&&(this.Wa()&&this.z.ah&&!this.be)&&this.Tc()){var a=this.map.La.ee;this.be=o;a.src=this.Di+"iw_minus1d3.gif";this.Tt();this.map.La.qi.style.display="block";this.ge();this.dispatchEvent(new O("onmaximize"));this.Lk()}},restore:function(){this.map&& (this.Wa()&&this.be)&&this.Tc()&&(this.be=q,this.map.La.ee.src=this.Di+"iw_plus1d3.gif",this.ad(this.content,o),this.map.La.qi.style.display="none",this.ge(),this.dispatchEvent(new O("onrestore")),this.Lk())},f1:function(){if(this.Tc()){this.be=q;var a=this.map.La;a.Wp.innerHTML="";a.og.innerHTML="";a.qi.innerHTML="";a.ee.src=this.Di+"iw_plus1d3.gif"}},YI:function(){var a=this.map;if(this.Tc()){var a=a.La,b=a.ei.style;a.Av=b.overflowX;a.Bv=b.overflowY;b.overflowX="hidden";b.overflowY="hidden";this.z.eD&& (b.overflowX="auto",b.overflowY="auto",a.Av=b.overflowX,a.Bv=b.overflowY)}},NI:function(){var a=this.map;if(this.Tc()&&a.La.Av&&a.La.Bv){var a=a.La,b=a.ei.style;b.overflowX=a.Av;b.overflowY=a.Bv;delete a.Av;delete a.Bv}},Wa:function(){if(!this.map)return q;var a=this.map.R.ob;return!a||!this.Tc()?q:a&&a.ab===this.ab&&this.map.La&&"none"==this.map.La.yc.style.display?q:o},XZ:function(a){if(this.Tc()){var b=this.map.La;b.ee.style.display="block";var c=b.ee;!!a!=!!this.be&&(a?(this.be=o,c.src=this.Di+ "iw_minus1d3.gif",this.Tt(),b.qi.style.display="block"):(this.be=q,c.src=this.Di+"iw_plus1d3.gif",this.ad(this.content,o),b.qi.style.display="none"),this.ge())}},yb:function(){this.Qa==o&&this.ab&&this.ab.Nb(this)},Tc:function(){return this.map&&this.map.La&&this.map.La.ba==this.ba},TD:function(){this.map.kF?this.map.kF.reset(this):this.map.kF=new Ag(this);return this.map.kF.Id()}}); fb.prototype.Nb=function(a){var b=this.map;if(b&&this.V&&!(this.kh()==q||!a instanceof tc)){var c=b.R;c.ob&&(c.ob.ab&&c.ob.ab.DR)&&b.Wc();if(c.ob===a&&c.ob.Wa()&&c.ob.ab===this)a.Lk();else{b.Wc();this.Cb=a;c.ob==p||c.ob!=a?(b.La&&(b.La.Hw.onclick=p,b.La.ee.onclick=p),c.ob=a,a.initialize(this)):a.ge(p,o);x.lang.Ca.call(a,a.ba);c.Fz||(c.Fz=function(a){if(!a.ab&&b.R.ob&&b.R.ob.z.dD){b.Wc();b.removeEventListener("click",arguments.callee);c.Ez=q}});c.Ez||(c.Vu=setTimeout(function(){b.addEventListener("click", c.Fz);c.Ez=o;c.Vu=p},200));c.ml&&delete c.ml;a.ab=this;var d=b.La;this.map.Rf().rD.appendChild(d.yc);this.map.Rf().cL.appendChild(d.cc);a.Lk();this.dispatchEvent(new O("oninfowindowopen"))}}};fb.prototype.Wc=function(){if(this.map&&this.map.La&&this.Cb&&this.Cb.ba==this.map.La.ba)try{this.Cb.U()==o&&(this.dispatchEvent(new O("oninfowindowclose")),this.map.R.ob=this.Cb=p)}catch(a){}};S(Ye,{openInfoWindow:Ye.Nb,closeInfoWindow:Ye.Wc}); S(bf,{redraw:bf.ge,setTitle:bf.Cc,setPosition:bf.ta,setWidth:bf.Bh,setMaxWidth:bf.TN,setHeight:bf.zh,setContent:bf.ad,setMaxContent:bf.Tt,enableMaximize:bf.ah,disableMaximize:bf.Ww,isOpen:bf.Wa,show:bf.show,hide:bf.U,maximize:bf.Vx,restore:bf.restore});var Bg=z.wc;function zg(){}zg.prototype=new kc; x.extend(zg.prototype,{initialize:function(a){this.C=a;this.Va=this.LW();this.C.Na().appendChild(this.Va);this.eY();this.bind();this.zX();this.tw=0;return this.Va},draw:s(),K:{KZ:Bg+"ws/message?method=send",LU:Bg+"ws/message?method=activate",yV:Bg+"ws/message?method=ckActivate",h_:z.url.proto+z.url.domain.message+"/?"},LW:function(){var a=document.createElement("div"),b=this.C.Bb(),c=0,d=0;450\\u53d1\\u9001\\u5230\\u624b\\u673a
            \\u53d1\\u9001\\u65b9\\u624b\\u673a\\u53f7 
            \\u63a5\\u6536\\u65b9\\u624b\\u673a\\u53f7 
            \\u8bb0\\u4f4f\\u6b64\\u53f7
            \\u70b9\\u51fb\\u66f4\\u6362\\u6570\\u5b57
            \\u77ed\\u4fe1\\u5185\\u5bb9\\uff1a

            \\u6211\\u4eec\\u4fdd\\u8bc1\\u4e0d\\u5411\\u4efb\\u4f55\\u7b2c\\u4e09\\u65b9\\u63d0\\u4f9b\\u8f93\\u5165\\u7684\\u624b\\u673a\\u53f7\\u7801

            \', \'\',\'\'].join(""); return a},eY:function(){this.D={dO:x.$("BMapLib_sms_tip"),EJ:x.$("BMapLib_activate_btn"),om:x.$("BMapLib_phone_0"),MF:x.$("BMapLib_phone_1"),gM:x.$("BMapLib_is_remember_phone"),n_:x.$("BMapLib_sms_pnl_phone"),u_:x.$("BMapLib_success_tip"),MJ:x.$("BMapLib_add_phone_con"),o1:x.$("BMapLib_add_phone_btn"),LB:x.$("BMapLib_activateBox"),Xr:x.$("BMapLib_activateTip"),mw:x.$("BMapLib_activate"),rO:x.$("BMapLib_time_surplus"),PO:x.$("BMapLib_ver_image"),c0:x.$("BMapLib_ver_input")}},k_:function(){this.D.rO.style.display= "";this.D.EJ.style.display="none";this.rK(59)},rK:function(a){var b=this.D.rO;b.value="\\u91cd\\u65b0\\u83b7\\u53d6("+(10>a?"0"+a:a)+"\\u79d2)";var c=this;this.IF&&clearTimeout(this.IF);this.IF=setTimeout(function(){c.rK(--a)},1E3);0==a&&(clearTimeout(this.IF),b.style.display="none",this.D.EJ.style.display="")},$t:function(a){var b=a.error,c={PHONE_NUM_INVALID:"\\u624b\\u673a\\u53f7\\u7801\\u65e0\\u6548",SMS_SEND_SUCCESS:"\\u53d1\\u9001\\u5230\\u624b\\u673a\\u6210\\u529f",AK_INVALID:"\\u4f60\\u6240\\u4f7f\\u7528\\u7684key\\u65e0\\u6548", INTERNAL_ERROR:"\\u670d\\u52a1\\u5668\\u9519\\u8bef",OVER_MAX_ACTIVATE_TIME:"\\u4eca\\u5929\\u5df2\\u8d85\\u8fc7\\u53d1\\u9001\\u6fc0\\u6d3b\\u7801\\u6700\\u5927\\u6b21\\u6570",SMS_ACTIVATE_SUCCESS:"\\u6fc0\\u6d3b\\u7801\\u5df2\\u53d1\\u9001\\u5230\\u60a8\\u7684\\u624b\\u673a\\uff0c\\u8bf7\\u6ce8\\u610f\\u67e5\\u6536\\uff01",ACTIVATE_FAIL:"\\u624b\\u673a\\u6fc0\\u6d3b\\u7801\\u65e0\\u6548",SMS_LACK:"\\u4eca\\u5929\\u60a8\\u8fd8\\u80fd\\u5f805\\u4e2a\\u624b\\u673a\\u53d1\\u9001\\u77ed\\u4fe1",PARAM_INVALID:"\\u8bf7\\u586b\\u5b8c\\u6240\\u6709\\u9009\\u9879",SEND_ACTIVATE_FAIL:"\\u6fc0\\u6d3b\\u7801\\u53d1\\u9001\\u5931\\u8d25", VCODE_VERITY_FAIL:"\\u9a8c\\u8bc1\\u7801\\u6821\\u9a8c\\u5931\\u8d25"}[b];"SMS_LACK"==b&&(a=a.res_sms,c="\\u4eca\\u5929\\u60a8\\u8fd8\\u80fd\\u5f80"+a+"\\u4e2a\\u624b\\u673a\\u53d1\\u9001\\u77ed\\u4fe1",this.tw=a-1);c&&(this.D.dO.innerHTML=c,this.D.dO.style.display="inline");this.dF();"SMS_SEND_SUCCESS"==b&&(this.nZ(),this.JZ())},bind:function(){var a=this;x.M(this.Va,"click",function(b){b=b.target||b.srcElement;switch(b.getAttribute("bid")){case "close":a.CV();break;case "sendToPhoneBtn":a.HZ();break;case "activate":a.KU(); break;case "addPhone":a.NU();break;case "deletePhone":a.aW(b)}});x.M(this.Va,"keypress",function(a){var a=a||window.event,a=a.which||a.keyCode,c=q;if(48<=a&&57>=a||44==a||8==a)c=o;return c});x.M(this.D.om,"blur",function(){x.mt(a.D.om.value)?a.fK():(a.D.Xr.innerHTML="",a.D.LB.style.display="none")});x.M(this.D.mw,"blur",function(){x.kY(a.D.mw.value)&&a.fK()});a.dF();x.M(this.D.PO,"click",function(){a.dF()})},dF:function(){var a=this;this.bb(z.url.proto+z.url.domain.baidumap+"/maps/services/captcha?", {cbName:"cb"},function(b){a.NO=b.content.vcode;a.D.PO.src=z.url.proto+z.url.domain.baidumap+"/maps/services/captcha/image?vcode="+a.NO})},fK:function(){var a=this;this.bb(this.K.yV,{phone:this.D.om.value,activate:this.D.mw.value,cbName:"callback"},function(b){!b||b.isactivate==q?(a.D.LB.style.display="table-row",a.D.Xr.style.color="red",a.D.Xr.innerHTML="\\u672a\\u6fc0\\u6d3b"):(a.D.LB.style.display="none",a.D.Xr.style.color="green",a.D.Xr.innerHTML="\\u5df2\\u6fc0\\u6d3b")})},KU:function(){var a=this, b={phone:this.D.om.value,ak:qa,cbName:"callback"};x.mt(b.phone)?this.bb(this.K.LU,b,function(b){b&&a.$t(b);(b.error="SMS_ACTIVATE_SUCCESS")&&a.k_()}):this.$t({error:"PHONE_NUM_INVALID"})},CV:function(){this.C.Tb(this)},G2:s(),HZ:function(){var a=this;if(this.a0()){tophoneStr=x.$("BMapLib_phone_1").value;for(var b=this.D.MJ.getElementsByTagName("input"),c=0,d=b.length;c]*>/g,""):e.innerHTML.replace(/<\\/?[^>]*>/g,""),e=e.replace(/\\u8be6\\u60c5»/g,""),f=x.lang.tg(f)?f.replace(/<\\/?[^>]*>/g,""):f.innerHTML.replace(/<\\/?[^>]*>/g,"");c.z.message?b+=c.z.message:(this.Y_&&(b+=this.Y_+"\\u5206\\u4eab\\u4e00\\u4e2a\\u4f4d\\u7f6e\\u7ed9\\u60a8\\uff0c"), e&&(b+="\\u540d\\u79f0\\u4e3a\\uff1a"+e+"\\uff0c"),this.address&&(b+="\\u5927\\u81f4\\u4f4d\\u7f6e\\u5728"+this.address+"\\uff0c"));var g="http://api.map.baidu.com/marker?location="+d.lat+","+d.lng+"&title="+encodeURIComponent(e)+"&content="+encodeURIComponent(f)+"&output=html&operate=jsapi_message",i=this;this.bb(this.K.h_,{url:encodeURIComponent(g),t:(new Date).getTime(),cbName:"callback"},function(c){b=b+(" \\u67e5\\u770b\\u5730\\u56fe "+(c.url?c.url:g));i.FY=b;a.innerHTML=b})},nZ:function(){this.D.gM.checked? x.cookie.set("BMapLib_phone",this.D.MF.value,{path:"/",bh:2592E6}):x.cookie.remove("BMapLib_phone",{path:"/"})},zX:function(){var a=x.cookie.get("BMapLib_phone");a&&(this.D.MF.value=a,this.D.gM.checked=o)},JZ:function(){this.D.n_.style.display="none";this.D.u_.style.display="block";var a=this;setTimeout(function(){a.C.Tb(a)},1500)},NU:function(){if(!(4<=this.tw)){var a=document.createElement("div");a.innerHTML=\'\\u5220\\u9664\'; this.D.MJ.appendChild(a);this.tw++}},aW:function(a){a.parentNode.parentNode.removeChild(a.parentNode);this.tw--},bb:function(a,b,c){var d=(1E5*Math.random()).toFixed(0);window.BMap["BMap_cbk"+d]=function(a){c&&c(a);delete window.BMap["BMap_cbk"+d]};for(var e in b)"cbName"!=e&&(a+="&"+e+"="+b[e]);a+="&"+b.cbName+"=BMap.BMap_cbk"+d;pa(a)}});function Ag(a){this.ra(a)}x.lang.ua(Ag,x.lang.Ca,"SearchTool"); x.extend(Ag.prototype,{K:{qa:E.qa+"iw_bg.png",YB:E.qa+"blank.gif"},ra:function(a){var b=this;this.fM=o;var c=a.map,d=this.D=M("div",{style:"font-size:12px;"});this.VM=this.BM=p;var e="border:0;width:47px;height:25px;line-height:25px;margin:0 0 0 5px;vertical-align:bottom;background:url("+this.K.qa+") repeat-x 0 -87px;",f=this.WM=M("span",{style:"float:left;text-align:center;line-height:18px;padding:6px 0;border-left:1px solid #dadada;"}),g=this.tO=M("span",{style:"float:left;text-align:center;line-height:18px;padding:6px 0;border-left:1px solid #dadada;"}), i=this.dL=M("span",{style:"float:left;text-align:center;line-height:18px;padding:6px 0;border-left:1px solid #dadada;"});f.style.borderLeft="";f.innerHTML="\\u5728\\u9644\\u8fd1\\u627e";g.innerHTML="\\u5230\\u8fd9\\u91cc\\u53bb";i.innerHTML="\\u4ece\\u8fd9\\u91cc\\u51fa\\u53d1";x.M(f,"click",function(){b.Ey("near")});x.M(g,"click",function(){b.Ey("toHere")});x.M(i,"click",function(){b.Ey("fromHere")});var k=M("div",{style:"margin-top:5px;overflow:hidden;background:url("+this.K.qa+") repeat-x 0 0;*zoom:1;"}); k.appendChild(f);k.appendChild(g);k.appendChild(i);f=this.FZ=M("div",{style:"padding:10px 5px 0 5px;"});localSearchDiv=M("div",{style:"margin-top: 4px;margin-right: 3px;-margin-right: 2px;white-space: nowrap;float: left;"});hotelLink=M("a",{style:"margin-top: 4px;margin-right: 3px;-margin-right: 2px;white-space: nowrap;float: left;",filter:"query",style:"color: #3d6dcc;text-decoration: none;margin-left: 6px;margin-left: 0"});hotelLink.innerHTML="\\u9152\\u5e97";localSearchDiv.appendChild(hotelLink); caterLink=M("a",{style:"margin-top: 4px;margin-right: 3px;-margin-right: 2px;white-space: nowrap;float: left;",filter:"query",style:"color: #3d6dcc;text-decoration: none;margin-left: 6px;"});caterLink.innerHTML="\\u9910\\u9986";localSearchDiv.appendChild(caterLink);bankLink=M("a",{style:"margin-top: 4px;margin-right: 3px;-margin-right: 2px;white-space: nowrap;float: left;",filter:"query",style:"color: #3d6dcc;text-decoration: none;margin-left: 6px;"});bankLink.innerHTML="\\u94f6\\u884c";localSearchDiv.appendChild(bankLink); hostpLink=M("a",{style:"margin-top: 4px;margin-right: 3px;-margin-right: 2px;white-space: nowrap;float: left;",filter:"query",style:"color: #3d6dcc;text-decoration: none;margin-left: 6px;"});hostpLink.innerHTML="\\u533b\\u9662";localSearchDiv.appendChild(hostpLink);busLink=M("a",{style:"margin-top: 4px;margin-right: 3px;-margin-right: 2px;white-space: nowrap;float: left;",filter:"query",style:"color: #3d6dcc;text-decoration: none;margin-left: 6px;"});busLink.innerHTML="\\u516c\\u4ea4\\u7ad9";localSearchDiv.appendChild(busLink); localSearchInput=M("input",{style:"height:22px;line-height:22px;padding:0;margin:0;border:1px solid #A5ACB2;width:85px;",type:"text"});localSearchBtn=M("input",{style:e+"width:50px;",type:"button",value:"\\u641c\\u7d22"});f.appendChild(localSearchDiv);f.appendChild(localSearchInput);f.appendChild(localSearchBtn);var l=c.Vb()?"vector":"tile";x.M(localSearchBtn,"click",function(){var a="http://api.map.baidu.com/place/search?query="+localSearchInput.value+"&location="+b.position.lat+","+b.position.lng+ "&radius=1000&output=html&src=jsapi&operate=searchtool&clicktype"+l+"®ion="+b.sk();window.open(a,"_blank")});c=this.OY=M("div",{style:"padding:10px 5px 0 5px;"});x.D.U(c);navSearchLabel=this.PY=M("span",{style:"margin-right:5px;"});navSearchLabel.innerHTML="\\u8d77\\u70b9";navSearchInput=M("input",{style:"height:22px;line-height:22px;padding:0;margin:0;border:1px solid #A5ACB2;width:125px;",type:"text"});transitSearchBtn=M("input",{style:e,type:"button",value:"\\u516c\\u4ea4"});drivingSearchBtn=M("input", {style:e,type:"button",value:"\\u9a7e\\u8f66"});navBtn=M("input",{style:e,type:"button",value:"\\u5bfc\\u822a"});c.appendChild(navSearchLabel);c.appendChild(navSearchInput);c.appendChild(transitSearchBtn);c.appendChild(drivingSearchBtn);c.appendChild(navBtn);x.M(transitSearchBtn,"click",function(){b.BO("transit")});x.M(drivingSearchBtn,"click",function(){b.BO("driving")});x.M(navBtn,"click",function(){window.open("http://wuxian.baidu.com/map/navi.html","_blank")});d.appendChild(k);d.appendChild(f);d.appendChild(c); x.kc.Gb([hostpLink,hotelLink,caterLink,busLink,bankLink],function(a){x.M(a,"mouseover",function(){x.$(this).style.textDecoration="underline";x.$(this).style.cursor="pointer"});x.M(a,"mouseout",function(){x.$(this).style.textDecoration="none";x.$(this).style.cursor="defult"})});x.kc.Gb([hostpLink,hotelLink,caterLink,busLink,bankLink],function(c){x.M(c,"click",function(){Ra(6002);var c=b.map.Vb()?"vector":"tile",d=a.ha(),c="http://api.map.baidu.com/place/search?query="+this.innerHTML+"&location="+d.lat+ ","+d.lng+"&radius=1000&output=html&src=jsapi&operate=searchtool&clicktype"+c+"®ion="+b.sk();window.open(c,"_blank")})});this.reset(a);this.eV(a,localSearchInput,navSearchInput)},reset:function(a){this.map=a.map;this.Cb=a;this.position=a.ha();this.Ey("near");this.TU()},TU:function(){var a=this;setTimeout(function(){var b=a.Cb.z.width,c=Math.floor((b-2)/3);a.WM.style.width=c+"px";a.tO.style.width=c+"px";a.dL.style.width=b-2-2*c+"px"},100)},eV:function(a,b,c){var d=this;a.addEventListener("open", function(){d.BM==p&&(d.BM=new Ld({input:b,location:a.map}));d.VM==p&&(d.VM=new Ld({input:c,location:a.map}))})},sk:function(){return this.map.Yg},Id:u("D"),BO:function(a){var b=this.position.lat+","+this.position.lng,c=navSearchInput.value,d=this.sk(),e;if(e=this.Cb.getTitle())e=x.lang.tg(e)?e.replace(/<\\/?[^>]*>/g,""):e.innerHTML.replace(/<\\/?[^>]*>/g,""),e=e.replace(/\\u8be6\\u60c5»/g,""),b="name:"+e+"|latlng:"+b;this.fM?(e=b,b=c):e=c;c=this.map.Vb()?"vector":"tile";window.open("http://api.map.baidu.com/direction?origin="+ e+"&destination="+b+"&mode="+a+"&output=html&src=jsapi&operate=searchtool&clicktype"+c+"®ion="+d,"_blank")},Ey:function(a){var b=this.WM,c=this.tO,d=this.FZ,e=this.PY,f=this.OY,g=this.dL;x.kc.Gb([b,c,g],function(a){a.style.background="";a.style.cursor="pointer"});var i="url("+this.K.qa+") repeat-x 0 -44px",k=p;switch(a){case "near":k=b;x.D.show(d);x.D.U(f);break;case "toHere":k=c;x.D.U(d);x.D.show(f);e.innerHTML="\\u8d77\\u70b9";this.dK("destination");break;case "fromHere":k=g,x.D.U(d),x.D.show(f), e.innerHTML="\\u7ec8\\u70b9",this.dK("origin")}k.style.background=i},dK:function(a){this.fM="origin"==a?o:q}}); '); +_jsload2 && _jsload2('newvectordrawlib', 'function Gf(a){this.aI=o;this.k=x.object.extend(a||{},{Ch:o});Hc.call(this,this.k);this.yg={};this.loaded=q;this.Gt=p;this.XB=q}Gf.prototype=new Hc; Gf.prototype.ra=function(a){if(!this.loaded){this.loaded=o;var b=this;b.map=a;b.cb=b.map.cb;b.map=a;this.Ib=this.map.pa();this.Pb=this.Ib.k.Pb;this.zc=this.map.K.devicePixelRatio;b.Vw=q;b.wK=p;b.Qe=b.k.style||"normal";b.ln=b.k.styleStr||p;b.dq=200;b.ze=p;b.Zd=0;b.xb=this.cb.Nn(0);b.cb.ld.appendChild(this.xb);b.cb.xb=b.xb;b.Jb=new z.NewVectorDrawLib(a);b.Jb.Pb=this.Ib.k.Pb;b.gs="";b.Jb.mC=b.Qe;b.Zl();b.Qe&&"normal"!==b.Qe||b.ln&&0d.map.height?b=o:(f=[],f.push("
            "),f.push("\'"+"),f.push("
            \\u8fdb\\u5165\\u5168\\u666f>>"),f.push("
            "),l.innerHTML=f.join("")));i&&(f=M("p",{style:"padding:0;margin:0;line-height:18px;font-size:12px;color:#4d4d4d;"}),f.innerHTML= "\\u5730\\u5740\\uff1a"+i,l.appendChild(f));k&&(f=M("p",{style:"padding:0;margin:0;line-height:18px;font-size:12px;color:#4d4d4d;"}),f.innerHTML="\\u7535\\u8bdd\\uff1a"+k,l.appendChild(f));e.tag&&(k=M("p",{style:"padding:0;margin:0;line-height:18px;font-size:12px;color:#4d4d4d;color:#7f7f7f;"}),k.innerHTML="\\u6807\\u7b7e\\uff1a"+e.tag,l.appendChild(k));a="http://api.map.baidu.com/place/detail?uid="+a+"&output=html&source=jsapi&operate=mapclick&clicktype=vector";k="
            "+ e.name+"";a=new tc(l,{width:322,enableSearchTool:o,title:k+("\\u8be6\\u60c5»")+"
            ",enableParano:b});b&&(a.street_id=g);a.addEventListener("open",function(){var a=x.$("panoInfoBox");if(a){var b=e.street_id||"";Pb(function(){Ra(5052);d.Dq(b)},a,"pano_thumnail_img|panoInfoBoxTitleBg|panoInfoBoxTitleContent")}}); this.map.Nb(a,c)}},Dq:function(a){var b=z.sg("pano","scape/")[0],c=this,d=(new Date).getTime(),e="Pano"+d;z[e]=function(a){var b=c.map.tm(),a=a.content[0];b.rc(a.poiinfo.PID);b.show();b.Mc({heading:a.poiinfo.Dir,pitch:a.poiinfo.Pitch})};d=(new Date).getTime();pa(b+("?qt=poi&udt=20131021&uid="+a+"&t="+d+"&fn=BMap."+e),q)},Vq:function(a){for(var b=[],c=0,d=a.length;ck.left&&c<=k.left+f&&d>k.top&&d<=k.top+f){e=b[g];break}}if(e==j||e.Xd==j)return q;f=e.Xd;b=0;for(i=f.length;b=iconX-15&&a.offsetX<=iconX+ 15&&a.offsetY>=iconY-15&&a.offsetY<=iconY+15))return{type:c[5].c||"",name:d,uid:n.u||"",point:{x:iconX,y:iconY},clickFea:{tileId:e.id,tile:e,fea:c}}}return q},Nx:function(){return/M040/i.test(navigator.userAgent)},Qf:function(a){for(var b=a.offsetLeft,c=a.offsetTop,a=a.offsetParent;a&&a!=this.map.Na();)b+=a.offsetLeft,c+=a.offsetTop,a=a.offsetParent;return{top:c,left:b}},nC:function(a){if(this.map.Vb()){this.map.pa().k.$b=18;var a=this.Gt=a,b;for(b in a)switch(b){case "style":this.Lp(a);break;case "styleStr":this.Lp(a); break;case "features":this.ON(a[b]);break;case "poiElements":this.WN(a[b])}}},bE:function(){this.pu();"dark"==this.Qe?x.D.Ua(this.xb,"light_gray_background"):x.D.Ua(this.xb,"gray_background")},pu:function(){x.D.Sb(this.xb,"gray_background");x.D.Sb(this.xb,"light_gray_background")}});window.VectorLayer=Gf;var Hf=1,If=2,Jf=3,Kf=4,Lf=5; function Mf(a){this.Jm=q;this.ft=[z.url.proto+z.url.domain.TILE_ONLINE_URLS[1]+"/"];this.RF=[z.url.proto+z.url.domain.TILE_ONLINE_URLS[1]+"/gvd/?",z.url.proto+z.url.domain.TILE_ONLINE_URLS[2]+"/gvd/?",z.url.proto+z.url.domain.TILE_ONLINE_URLS[3]+"/gvd/?",z.url.proto+z.url.domain.TILE_ONLINE_URLS[4]+"/gvd/?"];this.cb=p;this.pk={};this.map=a;this.We=this.jj=0;this.bi=p;this.Fb=window.Fb;this.oz=x.extend({},window.Fb);this.em={dark:{backColor:"#2D2D2D",textColor:"#bfbfbf",iconUrl:"vector/dicons"},normal:{backColor:"#F3F1EC", textColor:"#c61b1b",iconUrl:"vector/nicons_hd"},light:{backColor:"#EBF8FC",textColor:"#017fb4",iconUrl:"vector/licons"}};this.Ms={};this.op=o;this.nk=p;this.$l=/.*GT-I9300.*Version\\/\\d+.*Safari\\/\\d+\\.\\d+$/ig.test(navigator.userAgent)||/baiduboxapp/ig.test(navigator.userAgent)} Mf.prototype={Cs:function(a){var b=this.map,c=b.fa();this.We=a.length;this.jj=0;this.zc=this.map.K.devicePixelRatio;this.kz=this.lz=this.jz=this.Ju=0;b=b.Ka();new H(b.lng,b.lat);this.map.dispatchEvent(new O("onvectorbegin"));for(var b=0,d=this.We;ba?"_":"")+(0>b?"$":"")+parseInt(Math.abs(a)+""+Math.abs(b)+""+c,10).toString(36),g=g[i]+"qt=lgvd&layers=bg,df&"+k+"&styles=pl&f=jsapi&v=002&udt=20150526",g=g+("&fn=BMap."+l),f=f.Ka(),m=new H(f.lng,f.lat),n=e.map.fa();z[l]=function(f){if(f=f.content){d.oq=(new Date).getTime();var g=e.map,i=g.Ka(),g=g.fa();if(!i.nb(m)||g!=n){delete z[l];return}f=(f.bg||[]).concat(f.df||[]);d.Xd=f;d.Ya="#c"+a+"r"+b+"z"+c;f&&e.Mo(f,d,m,n)}delete z[l]};pa(g)},nj:function(a){var a=a.getContext("2d"),b=this.Pb* this.zc;this.$l||(a.save(),a.clearRect(0,0,b,b),a.restore())},UC:function(a,b,c){a.fillStyle=c||"#F5F3F0";a.fillRect(0,0,b,b)},Mo:function(a,b,c,d){function e(){b.OP=+new Date;var e=i.map.Ka(),f=i.map.fa();if(e.nb(c)&&f==d){for(i.map.K.OF&&a.M_&&i.Q1(g,a.M_);l=d&&f[5]&&0d&&this.PF(a,C,A,d);var B=1;z.Db.bM(t)&&(z.Db.YK(a,C-e/2,A-D/2,e,D,{fillStyle:k(l)}),B=0);f?(a.save(),a.scale(0.9,0.9),m&&a.strokeText(n[v],(C-e/2+1)/0.9,(A+D/2+1)/0.9),a.fillText(n[v],(C-e/2+1)/0.9,(A+D/2+1)/0.9),a.restore()):(B=i?2:B,m&&a.strokeText(n[v],C-e/2,A+D/2+B),a.fillText(n[v],C-e/2,A+D/2+B))}}},Us:function(a,b){var c=[Hf,"",[]];a&&(a[0]==Lf?c[2]=a:c=a);b&&(b[0]==Lf?c[2]=b:c[1]=b[1]);return c},PF:function(a,b,c,d){d=d/180* Math.PI;cv=Math.cos(d);sv=Math.sin(d);yy=xx=cv;xy=sv;yx=-sv;x0=b-b*cv-c*sv;y0=c+b*sv-c*cv;a.transform(xx,yx,xy,yy,x0,y0)},eF:function(a,b,c,d,e){if(16>=e)for(var f=c;f=e?"228,218,201,1"!=i[1]&&this.pe(a,m,i,q):this.pe(a,m,i,q)}for(g=f;g=e&&"228,218,201,1"== i[1]&&(k[1]="231,231,157,1"),this.pe(a,m,k,q));f=c}else{for(f=c;f=d?1:0;default:return 0}},kt:function(a,b){return a&&0=this.LF.length-1};this.wj=function(){return this.aM()?o:this.LF[this.jh+1].match(/^[A-Za-z]$/)!=p};this.qE=function(){switch(this.Jw){case "m":case "l":case "h":case "v":case "c":case "s":case "q":case "t":case "a":case "z":return o}return q};this.GL=function(){this.jh++;return this.LF[this.jh]};this.qj=function(){return parseFloat(this.GL())}; this.RY=function(){this.Kt=this.Jw;this.Jw=this.GL()};this.vm=function(){return this.DY(new fg.Yf(this.qj(),this.qj()))};this.yD=function(){var a=this.vm();return this.Kw=a};this.rk=function(){var a=this.vm();return this.ib=a};this.zL=function(){return"c"!=this.Kt.toLowerCase()&&"s"!=this.Kt.toLowerCase()&&"q"!=this.Kt.toLowerCase()&&"t"!=this.Kt.toLowerCase()?this.ib:new fg.Yf(2*this.ib.x-this.Kw.x,2*this.ib.y-this.Kw.y)};this.DY=function(a){this.qE()&&(a.x+=this.ib.x,a.y+=this.ib.y);return a};this.aj= function(a,b,e){e!=p&&(0=w(t,v)&&(n=Math.PI);1<=w(t,v)&&(n=0);t=1-i?1:-1;v=m+t*(n/2);c.OB(new fg.Yf(g.x+k*Math.cos(v),g.y+l*Math.sin(v)),v-t*Math.PI/2);c.OB(e,v-t*Math.PI);d.ng(e.x,e.y);a!=p&&(w=k>l?k:l,e=k>l?1:k/l,k=k>l?l/k:1,a.translate(g.x,g.y),a.rotate(f),a.scale(e,k),a.arc(0,0,w,m,m+n,1-i),a.scale(1/e,1/k),a.rotate(-f),a.translate(-g.x,-g.y))}break;case "Z":case "z":a!=p&&a.closePath(),c.ib=c.start}return d}} fg.trim=function(a){return a.replace(/^\\s+|\\s+$/g,"")};fg.GV=function(a){return a.replace(/[\\s\\r\\t\\n]+/gm," ")};fg.Yf=function(a,b){this.x=a;this.y=b}; fg.bP=function(){this.An=this.zn=this.Cj=this.Bj=Number.NaN;this.x=u("Bj");this.y=u("Cj");this.width=function(){return this.zn-this.Bj};this.height=function(){return this.An-this.Cj};this.ng=function(a,b){if(a!=p){if(isNaN(this.Bj)||isNaN(this.zn))this.zn=this.Bj=a;athis.zn&&(this.zn=a)}if(b!=p){if(isNaN(this.Cj)||isNaN(this.An))this.An=this.Cj=b;bthis.An&&(this.An=b)}};this.SB=function(a){this.ng(a,p)};this.TB=function(a){this.ng(p,a)};this.HJ=function(a, b,c,d,e,f){c=a+2/3*(c-a);d=b+2/3*(d-b);this.NB(a,b,c,c+1/3*(e-a),d,d+1/3*(f-b),e,f)};this.NB=function(a,b,c,d,e,f,g,i){var k=[a,b],l=[c,d],m=[e,f],n=[g,i];this.ng(k[0],k[1]);this.ng(n[0],n[1]);for(gg=0;1>=gg;gg++)if(a=function(a){return Math.pow(1-a,3)*k[gg]+3*Math.pow(1-a,2)*a*l[gg]+3*(1-a)*Math.pow(a,2)*m[gg]+Math.pow(a,3)*n[gg]},b=6*k[gg]-12*l[gg]+6*m[gg],c=-3*k[gg]+9*l[gg]-9*m[gg]+3*n[gg],d=3*l[gg]-3*k[gg],0==c)0!=b&&(b=-d/b,0b&&(0==gg&&this.SB(a(b)),1==gg&&this.TB(a(b))));else if(d=Math.pow(b, 2)-4*d*c,!(0>d)&&(e=(-b+Math.sqrt(d))/(2*c),0e&&(0==gg&&this.SB(a(e)),1==gg&&this.TB(a(e))),b=(-b-Math.sqrt(d))/(2*c),0b))0==gg&&this.SB(a(b)),1==gg&&this.TB(a(b))};this.ng(j,j);this.ng(j,j)};z.cP=fg; '); +_jsload2 && _jsload2('copyrightctrl', 'x.extend(Yb.prototype,{xf:function(){this.C&&this.Ee(this.C)},initialize:function(a){Tb.prototype.initialize.call(this,a);this.Aa();this.ro();this.ca(a);return this.B},ca:function(a){var b=this;a.addEventListener("load",function(){b.ro()});a.addEventListener("moveend",function(){b.ro()});a.addEventListener("zoomend",function(){b.ro()});a.addEventListener("maptypechange",function(){b.B&&(b.B.style.color=b.C.pa().ym())})},Aa:function(){Tb.prototype.Aa.call(this);x.D.Ua(this.B,"BMap_cpyCtrl");var a= this.B.style;a.cursor="default";a.whiteSpace="nowrap";a.MozUserSelect="none";a.color=this.C.pa().ym();a.background="none";a.font="11px/15px "+E.fontFamily;Tb.prototype.Lr.call(this)},ro:function(){if(this.C&&this.B&&0!=this.dc.length)for(var a=0,b=this.dc.length;a"+a.content+"")},Id:function(a){var b=Tb.prototype.Id.call(this); if(Eb(a)){if(b)for(var c=0,d=b.children.length;c to avoid XSS via location.hash (#9521) + quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Check if a string has a non-whitespace character in it + rnotwhite = /\S/, + + // Used for trimming whitespace + trimLeft = /^\s+/, + trimRight = /\s+$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + + // Useragent RegExp + rwebkit = /(webkit)[ \/]([\w.]+)/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, + rmsie = /(msie) ([\w.]+)/, + rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + + // Matches dashed string for camelizing + rdashAlpha = /-([a-z]|[0-9])/ig, + rmsPrefix = /^-ms-/, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return ( letter + "" ).toUpperCase(); + }, + + // Keep a UserAgent string for use with jQuery.browser + userAgent = navigator.userAgent, + + // For matching the engine and version of the browser + browserMatch, + + // The deferred used on DOM ready + readyList, + + // The ready event handler + DOMContentLoaded, + + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + push = Array.prototype.push, + slice = Array.prototype.slice, + trim = String.prototype.trim, + indexOf = Array.prototype.indexOf, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // The body element only exists once, optimize finding it + if ( selector === "body" && !context && document.body ) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = ( context ? context.ownerDocument || context : document ); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); + selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes; + } + + return jQuery.merge( this, selector ); + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.7.1", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return slice.call( this, 0 ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = this.constructor(); + + if ( jQuery.isArray( elems ) ) { + push.apply( ret, elems ); + + } else { + jQuery.merge( ret, elems ); + } + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Attach the listeners + jQuery.bindReady(); + + // Add the callback + readyList.add( fn ); + + return this; + }, + + eq: function( i ) { + i = +i; + return i === -1 ? + this.slice( i ) : + this.slice( i, i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.fireWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).off( "ready" ); + } + } + }, + + bindReady: function() { + if ( readyList ) { + return; + } + + readyList = jQuery.Callbacks( "once memory" ); + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + return setTimeout( jQuery.ready, 1 ); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + // A crude way of determining if an object is a window + isWindow: function( obj ) { + return obj && typeof obj === "object" && "setInterval" in obj; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + for ( var name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction( object ); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } + + return object; + }, + + // Use native String.trim function wherever possible + trim: trim ? + function( text ) { + return text == null ? + "" : + trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); + }, + + // results is for internal usage only + makeArray: function( array, results ) { + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + var type = jQuery.type( array ); + + if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }, + + inArray: function( elem, array, i ) { + var len; + + if ( array ) { + if ( indexOf ) { + return indexOf.call( array, elem, i ); + } + + len = array.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in array && array[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var i = first.length, + j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var ret = [], retVal; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + var args = slice.call( arguments, 2 ), + proxy = function() { + return fn.apply( context, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + + return proxy; + }, + + // Mutifunctional method to get and set values to a collection + // The value/s can optionally be executed if it's a function + access: function( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + sub: function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }, + + browser: {} +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +// IE doesn't match non-breaking spaces with \s +if ( rnotwhite.test( "\xA0" ) ) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch(e) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +return jQuery; + +})(); + + +// String to Object flags format cache +var flagsCache = {}; + +// Convert String-formatted flags into Object-formatted ones and store in cache +function createFlags( flags ) { + var object = flagsCache[ flags ] = {}, + i, length; + flags = flags.split( /\s+/ ); + for ( i = 0, length = flags.length; i < length; i++ ) { + object[ flags[i] ] = true; + } + return object; +} + +/* + * Create a callback list using the following parameters: + * + * flags: an optional list of space-separated flags that will change how + * the callback list behaves + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible flags: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( flags ) { + + // Convert flags from String-formatted to Object-formatted + // (we check in cache first) + flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {}; + + var // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = [], + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Add one or several callbacks to the list + add = function( args ) { + var i, + length, + elem, + type, + actual; + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + // Inspect recursively + add( elem ); + } else if ( type === "function" ) { + // Add if not in unique mode and callback is not in + if ( !flags.unique || !self.has( elem ) ) { + list.push( elem ); + } + } + } + }, + // Fire callbacks + fire = function( context, args ) { + args = args || []; + memory = !flags.memory || [ context, args ]; + firing = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) { + memory = true; // Mark as halted + break; + } + } + firing = false; + if ( list ) { + if ( !flags.once ) { + if ( stack && stack.length ) { + memory = stack.shift(); + self.fireWith( memory[ 0 ], memory[ 1 ] ); + } + } else if ( memory === true ) { + self.disable(); + } else { + list = []; + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + var length = list.length; + add( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away, unless previous + // firing was halted (stopOnFalse) + } else if ( memory && memory !== true ) { + firingStart = length; + fire( memory[ 0 ], memory[ 1 ] ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + var args = arguments, + argIndex = 0, + argLength = args.length; + for ( ; argIndex < argLength ; argIndex++ ) { + for ( var i = 0; i < list.length; i++ ) { + if ( args[ argIndex ] === list[ i ] ) { + // Handle firingIndex and firingLength + if ( firing ) { + if ( i <= firingLength ) { + firingLength--; + if ( i <= firingIndex ) { + firingIndex--; + } + } + } + // Remove the element + list.splice( i--, 1 ); + // If we have some unicity property then + // we only need to do this once + if ( flags.unique ) { + break; + } + } + } + } + } + return this; + }, + // Control if a given callback is in the list + has: function( fn ) { + if ( list ) { + var i = 0, + length = list.length; + for ( ; i < length; i++ ) { + if ( fn === list[ i ] ) { + return true; + } + } + } + return false; + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory || memory === true ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( stack ) { + if ( firing ) { + if ( !flags.once ) { + stack.push( [ context, args ] ); + } + } else if ( !( flags.once && memory ) ) { + fire( context, args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!memory; + } + }; + + return self; +}; + + + + +var // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ + + Deferred: function( func ) { + var doneList = jQuery.Callbacks( "once memory" ), + failList = jQuery.Callbacks( "once memory" ), + progressList = jQuery.Callbacks( "memory" ), + state = "pending", + lists = { + resolve: doneList, + reject: failList, + notify: progressList + }, + promise = { + done: doneList.add, + fail: failList.add, + progress: progressList.add, + + state: function() { + return state; + }, + + // Deprecated + isResolved: doneList.fired, + isRejected: failList.fired, + + then: function( doneCallbacks, failCallbacks, progressCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks ); + return this; + }, + always: function() { + deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments ); + return this; + }, + pipe: function( fnDone, fnFail, fnProgress ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ], + progress: [ fnProgress, "notify" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + obj = promise; + } else { + for ( var key in promise ) { + obj[ key ] = promise[ key ]; + } + } + return obj; + } + }, + deferred = promise.promise({}), + key; + + for ( key in lists ) { + deferred[ key ] = lists[ key ].fire; + deferred[ key + "With" ] = lists[ key ].fireWith; + } + + // Handle state + deferred.done( function() { + state = "resolved"; + }, failList.disable, progressList.lock ).fail( function() { + state = "rejected"; + }, doneList.disable, progressList.lock ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( firstParam ) { + var args = sliceDeferred.call( arguments, 0 ), + i = 0, + length = args.length, + pValues = new Array( length ), + count = length, + pCount = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(), + promise = deferred.promise(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + deferred.resolveWith( deferred, args ); + } + }; + } + function progressFunc( i ) { + return function( value ) { + pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + deferred.notifyWith( promise, pValues ); + }; + } + if ( length > 1 ) { + for ( ; i < length; i++ ) { + if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return promise; + } +}); + + + + +jQuery.support = (function() { + + var support, + all, + a, + select, + opt, + input, + marginDiv, + fragment, + tds, + events, + eventName, + i, + isSupported, + div = document.createElement( "div" ), + documentElement = document.documentElement; + + // Preliminary tests + div.setAttribute("className", "t"); + div.innerHTML = "
            a"; + + all = div.getElementsByTagName( "*" ); + a = div.getElementsByTagName( "a" )[ 0 ]; + + // Can't get basic test support + if ( !all || !all.length || !a ) { + return {}; + } + + // First batch of supports tests + select = document.createElement( "select" ); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName( "input" )[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute("href") === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.55/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Tests for enctype support on a form(#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent( "onclick" ); + } + + // Check if a radio maintains its value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; + + input.setAttribute("checked", "checked"); + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.lastChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + fragment.removeChild( input ); + fragment.appendChild( div ); + + div.innerHTML = ""; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( window.getComputedStyle ) { + marginDiv = document.createElement( "div" ); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.style.width = "2px"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; + } + + // Technique from Juriy Zaytsev + // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for( i in { + submit: 1, + change: 1, + focusin: 1 + }) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + fragment.removeChild( div ); + + // Null elements to avoid leaks in IE + fragment = select = opt = marginDiv = div = input = null; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, outer, inner, table, td, offsetSupport, + conMarginTop, ptlm, vb, style, html, + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + conMarginTop = 1; + ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;"; + vb = "visibility:hidden;border:0;"; + style = "style='" + ptlm + "border:5px solid #000;padding:0;'"; + html = "
            " + + "" + + "
            "; + + container = document.createElement("div"); + container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px"; + body.insertBefore( container, body.firstChild ); + + // Construct the test element + div = document.createElement("div"); + container.appendChild( div ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + div.innerHTML = "
            t
            "; + tds = div.getElementsByTagName( "td" ); + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE <= 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Figure out if the W3C box model works as expected + div.innerHTML = ""; + div.style.width = div.style.paddingLeft = "1px"; + jQuery.boxModel = support.boxModel = div.offsetWidth === 2; + + if ( typeof div.style.zoom !== "undefined" ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = ""; + div.innerHTML = "
            "; + support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); + } + + div.style.cssText = ptlm + vb; + div.innerHTML = html; + + outer = div.firstChild; + inner = outer.firstChild; + td = outer.nextSibling.firstChild.firstChild; + + offsetSupport = { + doesNotAddBorder: ( inner.offsetTop !== 5 ), + doesAddBorderForTableAndCells: ( td.offsetTop === 5 ) + }; + + inner.style.position = "fixed"; + inner.style.top = "20px"; + + // safari subtracts parent border width here which is 5px + offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 ); + inner.style.position = inner.style.top = ""; + + outer.style.overflow = "hidden"; + outer.style.position = "relative"; + + offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 ); + offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop ); + + body.removeChild( container ); + div = container = null; + + jQuery.extend( support, offsetSupport ); + }); + + return support; +})(); + + + + +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([A-Z])/g; + +jQuery.extend({ + cache: {}, + + // Please use with caution + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var privateCache, thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey, + isEvents = name === "events"; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = ++jQuery.uuid; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + privateCache = thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Users should not attempt to inspect the internal events object using jQuery.data, + // it is undocumented and subject to change. But does anyone listen? No. + if ( isEvents && !thisCache[ name ] ) { + return privateCache.events; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, l, + + // Reference to internal data cache key + internalKey = jQuery.expando, + + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + + // See jQuery.data for more information + id = isNode ? elem[ internalKey ] : internalKey; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split( " " ); + } + } + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject(cache[ id ]) ) { + return; + } + } + + // Browsers that fail expando deletion also refuse to delete expandos on + // the window, but it will allow it on all other JS objects; other browsers + // don't care + // Ensure that `cache` is not a window object #10080 + if ( jQuery.support.deleteExpando || !cache.setInterval ) { + delete cache[ id ]; + } else { + cache[ id ] = null; + } + + // We destroyed the cache and need to eliminate the expando on the node to avoid + // false lookups in the cache for entries that no longer exist + if ( isNode ) { + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( jQuery.support.deleteExpando ) { + delete elem[ internalKey ]; + } else if ( elem.removeAttribute ) { + elem.removeAttribute( internalKey ); + } else { + elem[ internalKey ] = null; + } + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + if ( elem.nodeName ) { + var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; + + if ( match ) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + + return true; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var parts, attr, name, + data = null; + + if ( typeof key === "undefined" ) { + if ( this.length ) { + data = jQuery.data( this[0] ); + + if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) { + attr = this[0].attributes; + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( this[0], name, data[ name ] ); + } + } + jQuery._data( this[0], "parsedAttrs", true ); + } + } + + return data; + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + // Try to fetch any internally stored data first + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + data = dataAttr( this[0], key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + + } else { + return this.each(function() { + var self = jQuery( this ), + args = [ parts[0], value ]; + + self.triggerHandler( "setData" + parts[1] + "!", args ); + jQuery.data( this, key, value ); + self.triggerHandler( "changeData" + parts[1] + "!", args ); + }); + } + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + jQuery.isNumeric( data ) ? parseFloat( data ) : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + + + + +function handleQueueMarkDefer( elem, type, src ) { + var deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + defer = jQuery._data( elem, deferDataKey ); + if ( defer && + ( src === "queue" || !jQuery._data(elem, queueDataKey) ) && + ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) { + // Give room for hard-coded callbacks to fire first + // and eventually mark/queue something else on the element + setTimeout( function() { + if ( !jQuery._data( elem, queueDataKey ) && + !jQuery._data( elem, markDataKey ) ) { + jQuery.removeData( elem, deferDataKey, true ); + defer.fire(); + } + }, 0 ); + } +} + +jQuery.extend({ + + _mark: function( elem, type ) { + if ( elem ) { + type = ( type || "fx" ) + "mark"; + jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 ); + } + }, + + _unmark: function( force, elem, type ) { + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 ); + if ( count ) { + jQuery._data( elem, key, count ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }, + + queue: function( elem, type, data ) { + var q; + if ( elem ) { + type = ( type || "fx" ) + "queue"; + q = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + q.push( data ); + } + } + return q || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + hooks = {}; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + jQuery._data( elem, type + ".run", hooks ); + fn.call( elem, function() { + jQuery.dequeue( elem, type ); + }, hooks ); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue " + type + ".run", true ); + handleQueueMarkDefer( elem, type, "queue" ); + } + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function() { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, object ) { + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) { + count++; + tmp.add( resolve ); + } + } + resolve(); + return defer.promise(); + } +}); + + + + +var rclass = /[\n\t\r]/g, + rspace = /\s+/, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea)?$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + nodeHook, boolHook, fixSpecified; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.attr ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.prop ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classNames, i, l, elem, className, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + classNames = ( value || "" ).split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + className = (" " + elem.className + " ").replace( rclass, " " ); + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[ c ] + " ", " "); + } + elem.className = jQuery.trim( className ); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var self = jQuery(this), val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, i, max, option, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + i = one ? index : 0; + max = one ? index + 1 : options.length; + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + + attr: function( elem, name, value, pass ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var propName, attrNames, name, l, + i = 0; + + if ( value && elem.nodeType === 1 ) { + attrNames = value.toLowerCase().split( rspace ); + l = attrNames.length; + + for ( ; i < l; i++ ) { + name = attrNames[ i ]; + + if ( name ) { + propName = jQuery.propFix[ name ] || name; + + // See #9699 for explanation of this approach (setting first, then removal) + jQuery.attr( elem, name, "" ); + elem.removeAttribute( getSetAttribute ? name : propName ); + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && propName in elem ) { + elem[ propName ] = false; + } + } + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + // Use the value property for back compat + // Use the nodeHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional) +jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex; + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + // Fall back to attribute presence where some booleans are not supported + var attrNode, + property = jQuery.prop( elem, name ); + return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + fixSpecified = { + name: true, + id: true + }; + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ? + ret.nodeValue : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); + } + return ( ret.nodeValue = value + "" ); + } + }; + + // Apply the nodeHook to tabindex + jQuery.attrHooks.tabindex.set = nodeHook.set; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + if ( value === "" ) { + value = "false"; + } + nodeHook.set( elem, value, name ); + } + }; +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = "" + value ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); + + + + +var rformElems = /^(?:textarea|input|select)$/i, + rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/, + rhoverHack = /\bhover(\.\S+)?\b/, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, + quickParse = function( selector ) { + var quick = rquickIs.exec( selector ); + if ( quick ) { + // 0 1 2 3 + // [ _, tag, id, class ] + quick[1] = ( quick[1] || "" ).toLowerCase(); + quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" ); + } + return quick; + }, + quickIs = function( elem, m ) { + var attrs = elem.attributes || {}; + return ( + (!m[1] || elem.nodeName.toLowerCase() === m[1]) && + (!m[2] || (attrs.id || {}).value === m[2]) && + (!m[3] || m[3].test( (attrs[ "class" ] || {}).value )) + ); + }, + hoverHack = function( events ) { + return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); + }; + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + add: function( elem, types, handler, data, selector ) { + + var elemData, eventHandle, events, + t, tns, type, namespaces, handleObj, + handleObjIn, quick, handlers, special; + + // Don't attach events to noData or text/comment nodes (allow plain objects tho) + if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + events = elemData.events; + if ( !events ) { + elemData.events = events = {}; + } + eventHandle = elemData.handle; + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = jQuery.trim( hoverHack(types) ).split( " " ); + for ( t = 0; t < types.length; t++ ) { + + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = ( tns[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: tns[1], + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + quick: quickParse( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + handlers = events[ type ]; + if ( !handlers ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var elemData = jQuery.hasData( elem ) && jQuery._data( elem ), + t, tns, type, origType, namespaces, origCount, + j, events, special, handle, eventType, handleObj; + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = jQuery.trim( hoverHack( types || "" ) ).split(" "); + for ( t = 0; t < types.length; t++ ) { + tns = rtypenamespace.exec( types[t] ) || []; + type = origType = tns[1]; + namespaces = tns[2]; + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector? special.delegateType : special.bindType ) || type; + eventType = events[ type ] || []; + origCount = eventType.length; + namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + + // Remove matching events + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !namespaces || namespaces.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + eventType.splice( j--, 1 ); + + if ( handleObj.selector ) { + eventType.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( eventType.length === 0 && origCount !== eventType.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + handle = elemData.handle; + if ( handle ) { + handle.elem = null; + } + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery.removeData( elem, [ "events", "handle" ], true ); + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Don't do events on text and comment nodes + if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { + return; + } + + // Event object or event type + var type = event.type || event, + namespaces = [], + cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType; + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "!" ) >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf( "." ) >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.isTrigger = true; + event.exclusive = exclusive; + event.namespace = namespaces.join( "." ); + event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; + + // Handle a global trigger + if ( !elem ) { + + // TODO: Stop taunting the data cache; remove global events and always attach to document + cache = jQuery.cache; + for ( i in cache ) { + if ( cache[ i ].events && cache[ i ].events[ type ] ) { + jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); + } + } + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + eventPath = [[ elem, special.bindType || type ]]; + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; + old = null; + for ( ; cur; cur = cur.parentNode ) { + eventPath.push([ cur, bubbleType ]); + old = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( old && old === elem.ownerDocument ) { + eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); + } + } + + // Fire handlers on the event path + for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { + + cur = eventPath[i][0]; + event.type = eventPath[i][1]; + + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + // Note that this is a bare JS function and not a jQuery handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + // IE<9 dies on focus/blur to hidden element (#1486) + if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( old ) { + elem[ ontype ] = old; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event || window.event ); + + var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), + delegateCount = handlers.delegateCount, + args = [].slice.call( arguments, 0 ), + run_all = !event.exclusive && !event.namespace, + handlerQueue = [], + i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Determine handlers that should run if there are delegated events + // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) { + + // Pregenerate a single jQuery object for reuse with .is() + jqcur = jQuery(this); + jqcur.context = this.ownerDocument || this; + + for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { + selMatch = {}; + matches = []; + jqcur[0] = cur; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + sel = handleObj.selector; + + if ( selMatch[ sel ] === undefined ) { + selMatch[ sel ] = ( + handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel ) + ); + } + if ( selMatch[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, matches: matches }); + } + } + } + + // Add the remaining (directly-bound) handlers + if ( handlers.length > delegateCount ) { + handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); + } + + // Run delegates first; they may want to stop propagation beneath us + for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { + matched = handlerQueue[ i ]; + event.currentTarget = matched.elem; + + for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { + handleObj = matched.matches[ j ]; + + // Triggered event must either 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { + + event.data = handleObj.data; + event.handleObj = handleObj; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + return event.result; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** + props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, + originalEvent = event, + fixHook = jQuery.event.fixHooks[ event.type ] || {}, + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = jQuery.Event( originalEvent ); + + for ( i = copy.length; i; ) { + prop = copy[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Target should not be a text node (#504, Safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8) + if ( event.metaKey === undefined ) { + event.metaKey = event.ctrlKey; + } + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + ready: { + // Make sure the ready event is setup + setup: jQuery.bindReady + }, + + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + + focus: { + delegateType: "focusin" + }, + blur: { + delegateType: "focusout" + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +// Some plugins are using, but it's undocumented/deprecated and will be removed. +// The 1.7 special event interface should provide all the hooks needed now. +jQuery.event.handle = jQuery.event.dispatch; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + if ( elem.detachEvent ) { + elem.detachEvent( "on" + type, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var target = this, + related = event.relatedTarget, + handleObj = event.handleObj, + selector = handleObj.selector, + ret; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !form._submit_attached ) { + jQuery.event.add( form, "submit._submit", function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + }); + form._submit_attached = true; + } + }); + // return undefined since we don't need an event listener + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + jQuery.event.simulate( "change", this, event, true ); + } + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + elem._change_attached = true; + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on.call( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + var handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( var type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + live: function( types, data, fn ) { + jQuery( this.context ).on( types, this.selector, data, fn ); + return this; + }, + die: function( types, fn ) { + jQuery( this.context ).off( types, this.selector || "**", fn ); + return this; + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + + if ( jQuery.attrFn ) { + jQuery.attrFn[ name ] = true; + } + + if ( rkeyEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; + } + + if ( rmouseEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; + } +}); + + + +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + expando = "sizcache" + (Math.random() + '').replace('.', ''), + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true, + rBackslash = /\\/g, + rReturn = /\r\n/g, + rNonWord = /\W/; + +// Here we check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function() { + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function( selector, context, results, seed ) { + results = results || []; + context = context || document; + + var origContext = context; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var m, set, checkSet, extra, ret, cur, pop, i, + prune = true, + contextXML = Sizzle.isXML( context ), + parts = [], + soFar = selector; + + // Reset the position of the chunker regexp (start from head) + do { + chunker.exec( "" ); + m = chunker.exec( soFar ); + + if ( m ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + } while ( m ); + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context, seed ); + + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) { + selector += parts.shift(); + } + + set = posProcess( selector, set, seed ); + } + } + + } else { + // Take a shortcut and set the context if the root selector is an ID + // (but not if it'll be faster if the inner selector is an ID) + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + + ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? + Sizzle.filter( ret.expr, ret.set )[0] : + ret.set[0]; + } + + if ( context ) { + ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + + set = ret.expr ? + Sizzle.filter( ret.expr, ret.set ) : + ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray( set ); + + } else { + prune = false; + } + + while ( parts.length ) { + cur = parts.pop(); + pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + Sizzle.error( cur || selector ); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + + } else if ( context && context.nodeType === 1 ) { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + + } else { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function( results ) { + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; + +Sizzle.matches = function( expr, set ) { + return Sizzle( expr, null, null, set ); +}; + +Sizzle.matchesSelector = function( node, expr ) { + return Sizzle( expr, null, null, [node] ).length > 0; +}; + +Sizzle.find = function( expr, context, isXML ) { + var set, i, len, match, type, left; + + if ( !expr ) { + return []; + } + + for ( i = 0, len = Expr.order.length; i < len; i++ ) { + type = Expr.order[i]; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + left = match[1]; + match.splice( 1, 1 ); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace( rBackslash, "" ); + set = Expr.find[ type ]( match, context, isXML ); + + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( "*" ) : + []; + } + + return { set: set, expr: expr }; +}; + +Sizzle.filter = function( expr, set, inplace, not ) { + var match, anyFound, + type, found, item, filter, left, + i, pass, + old = expr, + result = [], + curLoop = set, + isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); + + while ( expr && set.length ) { + for ( type in Expr.filter ) { + if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { + filter = Expr.filter[ type ]; + left = match[1]; + + anyFound = false; + + match.splice(1,1); + + if ( left.substr( left.length - 1 ) === "\\" ) { + continue; + } + + if ( curLoop === result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + pass = not ^ found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + + } else { + curLoop[i] = false; + } + + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + // Improper expression + if ( expr === old ) { + if ( anyFound == null ) { + Sizzle.error( expr ); + + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Utility function for retreiving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +var getText = Sizzle.getText = function( elem ) { + var i, node, + nodeType = elem.nodeType, + ret = ""; + + if ( nodeType ) { + if ( nodeType === 1 || nodeType === 9 ) { + // Use textContent || innerText for elements + if ( typeof elem.textContent === 'string' ) { + return elem.textContent; + } else if ( typeof elem.innerText === 'string' ) { + // Replace IE's carriage returns + return elem.innerText.replace( rReturn, '' ); + } else { + // Traverse it's children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + } else { + + // If no nodeType, this is expected to be an array + for ( i = 0; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + if ( node.nodeType !== 8 ) { + ret += getText( node ); + } + } + } + return ret; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + + match: { + ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + + leftMatch: {}, + + attrMap: { + "class": "className", + "for": "htmlFor" + }, + + attrHandle: { + href: function( elem ) { + return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); + } + }, + + relative: { + "+": function(checkSet, part){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !rNonWord.test( part ), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag ) { + part = part.toLowerCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + + ">": function( checkSet, part ) { + var elem, + isPartStr = typeof part === "string", + i = 0, + l = checkSet.length; + + if ( isPartStr && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + + } else { + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + + "": function(checkSet, part, isXML){ + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); + }, + + "~": function( checkSet, part, isXML ) { + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); + } + }, + + find: { + ID: function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }, + + NAME: function( match, context ) { + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], + results = context.getElementsByName( match[1] ); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + + TAG: function( match, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( match[1] ); + } + } + }, + preFilter: { + CLASS: function( match, curLoop, inplace, result, not, isXML ) { + match = " " + match[1].replace( rBackslash, "" ) + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { + if ( !inplace ) { + result.push( elem ); + } + + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + + ID: function( match ) { + return match[1].replace( rBackslash, "" ); + }, + + TAG: function( match, curLoop ) { + return match[1].replace( rBackslash, "" ).toLowerCase(); + }, + + CHILD: function( match ) { + if ( match[1] === "nth" ) { + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + match[2] = match[2].replace(/^\+|\s*/g, ''); + + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( + match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + // calculate the numbers (first)n+(last) including if they are negative + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + // TODO: Move to normal caching system + match[0] = done++; + + return match; + }, + + ATTR: function( match, curLoop, inplace, result, not, isXML ) { + var name = match[1] = match[1].replace( rBackslash, "" ); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + // Handle if an un-quoted value was used + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + + PSEUDO: function( match, curLoop, inplace, result, not ) { + if ( match[1] === "not" ) { + // If we're dealing with a complex expression, or a simple one + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + + if ( !inplace ) { + result.push.apply( result, ret ); + } + + return false; + } + + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + + POS: function( match ) { + match.unshift( true ); + + return match; + } + }, + + filters: { + enabled: function( elem ) { + return elem.disabled === false && elem.type !== "hidden"; + }, + + disabled: function( elem ) { + return elem.disabled === true; + }, + + checked: function( elem ) { + return elem.checked === true; + }, + + selected: function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + parent: function( elem ) { + return !!elem.firstChild; + }, + + empty: function( elem ) { + return !elem.firstChild; + }, + + has: function( elem, i, match ) { + return !!Sizzle( match[3], elem ).length; + }, + + header: function( elem ) { + return (/h\d/i).test( elem.nodeName ); + }, + + text: function( elem ) { + var attr = elem.getAttribute( "type" ), type = elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); + }, + + radio: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; + }, + + checkbox: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; + }, + + file: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; + }, + + password: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; + }, + + submit: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; + }, + + image: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; + }, + + reset: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; + }, + + button: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; + }, + + input: function( elem ) { + return (/input|select|textarea|button/i).test( elem.nodeName ); + }, + + focus: function( elem ) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + first: function( elem, i ) { + return i === 0; + }, + + last: function( elem, i, match, array ) { + return i === array.length - 1; + }, + + even: function( elem, i ) { + return i % 2 === 0; + }, + + odd: function( elem, i ) { + return i % 2 === 1; + }, + + lt: function( elem, i, match ) { + return i < match[3] - 0; + }, + + gt: function( elem, i, match ) { + return i > match[3] - 0; + }, + + nth: function( elem, i, match ) { + return match[3] - 0 === i; + }, + + eq: function( elem, i, match ) { + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function( elem, match, i, array ) { + var name = match[1], + filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; + + } else if ( name === "not" ) { + var not = match[3]; + + for ( var j = 0, l = not.length; j < l; j++ ) { + if ( not[j] === elem ) { + return false; + } + } + + return true; + + } else { + Sizzle.error( name ); + } + }, + + CHILD: function( elem, match ) { + var first, last, + doneName, parent, cache, + count, diff, + type = match[1], + node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + + case "nth": + first = match[2]; + last = match[3]; + + if ( first === 1 && last === 0 ) { + return true; + } + + doneName = match[0]; + parent = elem.parentNode; + + if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) { + count = 0; + + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + + parent[ expando ] = doneName; + } + + diff = elem.nodeIndex - last; + + if ( first === 0 ) { + return diff === 0; + + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + } + }, + + ID: function( elem, match ) { + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + + TAG: function( elem, match ) { + return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match; + }, + + CLASS: function( elem, match ) { + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + + ATTR: function( elem, match ) { + var name = match[1], + result = Sizzle.attr ? + Sizzle.attr( elem, name ) : + Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + !type && Sizzle.attr ? + result != null : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value !== check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + + POS: function( elem, match, i, array ) { + var name = match[2], + filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS, + fescape = function(all, num){ + return "\\" + (num - 0 + 1); + }; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); +} + +var makeArray = function( array, results ) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +// Perform a simple check to determine if the browser is capable of +// converting a NodeList to an array using builtin methods. +// Also verifies that the returned array holds DOM nodes +// (which is not the case in the Blackberry browser) +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; + +// Provide a fallback method if it does not work +} catch( e ) { + makeArray = function( array, results ) { + var i = 0, + ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + + } else { + if ( typeof array.length === "number" ) { + for ( var l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + + } else { + for ( ; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder, siblingCheck; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + return a.compareDocumentPosition ? -1 : 1; + } + + return a.compareDocumentPosition(b) & 4 ? -1 : 1; + }; + +} else { + sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + + siblingCheck = function( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + }; +} + +// Check to see if the browser returns elements by name when +// querying by getElementById (and provide a workaround) +(function(){ + // We're going to inject a fake input element with a specified name + var form = document.createElement("div"), + id = "script" + (new Date()).getTime(), + root = document.documentElement; + + form.innerHTML = ""; + + // Inject it into the root element, check its status, and remove it quickly + root.insertBefore( form, root.firstChild ); + + // The workaround has to do additional checks after a getElementById + // Which slows things down for other browsers (hence the branching) + if ( document.getElementById( id ) ) { + Expr.find.ID = function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + + return m ? + m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? + [m] : + undefined : + []; + } + }; + + Expr.filter.ID = function( elem, match ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + + root.removeChild( form ); + + // release memory in IE + root = form = null; +})(); + +(function(){ + // Check to see if the browser returns only elements + // when doing getElementsByTagName("*") + + // Create a fake element + var div = document.createElement("div"); + div.appendChild( document.createComment("") ); + + // Make sure no comments are found + if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function( match, context ) { + var results = context.getElementsByTagName( match[1] ); + + // Filter out possible comments + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + } + + // Check to see if an attribute returns normalized href attributes + div.innerHTML = ""; + + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + div.firstChild.getAttribute("href") !== "#" ) { + + Expr.attrHandle.href = function( elem ) { + return elem.getAttribute( "href", 2 ); + }; + } + + // release memory in IE + div = null; +})(); + +if ( document.querySelectorAll ) { + (function(){ + var oldSizzle = Sizzle, + div = document.createElement("div"), + id = "__sizzle__"; + + div.innerHTML = "

            "; + + // Safari can't handle uppercase or unicode characters when + // in quirks mode. + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function( query, context, extra, seed ) { + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && !Sizzle.isXML(context) ) { + // See if we find a selector to speed up + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); + + if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { + // Speed-up: Sizzle("TAG") + if ( match[1] ) { + return makeArray( context.getElementsByTagName( query ), extra ); + + // Speed-up: Sizzle(".CLASS") + } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { + return makeArray( context.getElementsByClassName( match[2] ), extra ); + } + } + + if ( context.nodeType === 9 ) { + // Speed-up: Sizzle("body") + // The body element only exists once, optimize finding it + if ( query === "body" && context.body ) { + return makeArray( [ context.body ], extra ); + + // Speed-up: Sizzle("#ID") + } else if ( match && match[3] ) { + var elem = context.getElementById( match[3] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id === match[3] ) { + return makeArray( [ elem ], extra ); + } + + } else { + return makeArray( [], extra ); + } + } + + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(qsaError) {} + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || id, + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if ( !old ) { + context.setAttribute( "id", nid ); + } else { + nid = nid.replace( /'/g, "\\$&" ); + } + if ( relativeHierarchySelector && hasParent ) { + context = context.parentNode; + } + + try { + if ( !relativeHierarchySelector || hasParent ) { + return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); + } + + } catch(pseudoError) { + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } + } + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + // release memory in IE + div = null; + })(); +} + +(function(){ + var html = document.documentElement, + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; + + if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); + + } catch( pseudoError ) { + pseudoWorks = true; + } + + Sizzle.matchesSelector = function( node, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + + if ( !Sizzle.isXML( node ) ) { + try { + if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } + } + } catch(e) {} + } + + return Sizzle(expr, null, null, [node]).length > 0; + }; + } +})(); + +(function(){ + var div = document.createElement("div"); + + div.innerHTML = "
            "; + + // Opera can't find a second classname (in 9.6) + // Also, make sure that getElementsByClassName actually exists + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) { + return; + } + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function( match, context, isXML ) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + // release memory in IE + div = null; +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( elem.nodeName.toLowerCase() === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +if ( document.documentElement.contains ) { + Sizzle.contains = function( a, b ) { + return a !== b && (a.contains ? a.contains(b) : true); + }; + +} else if ( document.documentElement.compareDocumentPosition ) { + Sizzle.contains = function( a, b ) { + return !!(a.compareDocumentPosition(b) & 16); + }; + +} else { + Sizzle.contains = function() { + return false; + }; +} + +Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +var posProcess = function( selector, context, seed ) { + var match, + tmpSet = [], + later = "", + root = context.nodeType ? [context] : context; + + // Position selectors must be done after the filter + // And so must :not(positional) so we move all PSEUDOs to the end + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet, seed ); + } + + return Sizzle.filter( later, tmpSet ); +}; + +// EXPOSE +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +Sizzle.selectors.attrMap = {}; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.filters; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})(); + + +var runtil = /Until$/, + rparentsprev = /^(?:parents|prevUntil|prevAll)/, + // Note: This RegExp should be improved, or likely pulled from Sizzle + rmultiselector = /,/, + isSimple = /^.[^:#\[\.,]*$/, + slice = Array.prototype.slice, + POS = jQuery.expr.match.POS, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + var ret = this.pushStack( "", "find", selector ), + length, n, r; + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + POS.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var ret = [], i, l, cur = this[0]; + + // Array (deprecated as of jQuery 1.7) + if ( jQuery.isArray( selectors ) ) { + var level = 1; + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( i = 0; i < selectors.length; i++ ) { + + if ( jQuery( cur ).is( selectors[ i ] ) ) { + ret.push({ selector: selectors[ i ], elem: cur, level: level }); + } + } + + cur = cur.parentNode; + level++; + } + + return ret; + } + + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( i = 0, l = this.length; i < l; i++ ) { + cur = this[i]; + + while ( cur ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + + } else { + cur = cur.parentNode; + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { + break; + } + } + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + andSelf: function() { + return this.add( this.prevObject ); + } +}); + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return jQuery.nth( elem, 2, "nextSibling" ); + }, + prev: function( elem ) { + return jQuery.nth( elem, 2, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( elem.parentNode.firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.makeArray( elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, slice.call( arguments ).join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + nth: function( cur, result, dir, elem ) { + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} + + + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, + rtagName = /<([\w:]+)/, + rtbody = /", "" ], + legend: [ 1, "
            ", "
            " ], + thead: [ 1, "", "
            " ], + tr: [ 2, "", "
            " ], + td: [ 3, "", "
            " ], + col: [ 2, "", "
            " ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }, + safeFragment = createSafeFragment( document ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE can't serialize and ",'"];return e.file=e.hasLink?"cflash":"flash",e.imageClickUrl=e.clickUrl,e.hasLink||(e.clickUrl=""),t.lang.format(i.join(""),e)},this.materialFactory.rich=function(t){return t.content},this.materialFactory.slide=function(e,i){for(var n='
            {html:string}
            ',o=[],r=e.materials,s=0;s"+o.join("
            ")+"
            ";var d=i.response.placement,l=d.container;return e.width=i.width||l.width,e.height=i.height||l.height,t.lang.format(n,e)}},formatMaterial:function(t,e,i){if("string"==typeof t)return t;if(!t.type)return"";var n=this.materialFactory[t.type];if(n){var o="string"==typeof n?this.lang.format(n,t):n(t,e);return i?o:""+o}return""}}),t.define({name:"monitor",namespace:"dup.business",sendLog:function(t){if(t.response){var e=t.response.pdb_deliv.deliv_des,i=e._html,n=i&&i.monitorUrl;if(n){var o=new Image,r="log"+ +new Date;window[r]=o,"http"==n.substr(0,4).toLowerCase()?("http://"==n.substr(0,7).toLowerCase()&&(n=n.replace("http://","//")),"https://"==n.substr(0,8).toLowerCase()&&(n=n.replace("https://","//"))):n="//"+n;var s=function(){o.onload=o.onerror=o.onabort=null;try{delete window[r]}catch(t){window[r]=void 0}};o.onload=o.onerror=o.onabort=s,o.src=n}}}}),t.define({name:"inlayFix",namespace:"dup.ui.assertion",deps:{},painterName:"inlayFix",assert:function(t){var e=t.placement,i=e.basic,n=e.container,o=n.floated;return 1===i.rspFormat&&1===i.flowType&&1===n.anchoredType?o?1===o.trigger?!0:!this.isFloat(o):!0:!1},isFloat:function(t){for(var e in t)return!0;return!1}}),t.define({name:"float",namespace:"dup.ui.assertion",deps:{},painterName:"float",assert:function(t){var e=t.placement,i=e.basic,n=e.container;return 1===i.rspFormat&&1===i.flowType&&3===n.anchoredType}}),t.define({name:"unicode",namespace:"dup.common.utility",deps:{},toDecode:function(t){var e=[];if(t instanceof Array){for(var i=0;i0?(e=e||window,e.document.getElementById(t)):!t.nodeName||1!==t.nodeType&&9!==t.nodeType?null:t:null},getDocument:function(t){return 9===t.nodeType?t:t.ownerDocument||t.document},getWindow:function(t){var e=this.getDocument(t);return e.parentWindow||e.defaultView||null},isWindow:function(t){try{if(t&&"object"==typeof t&&t.document&&"setInterval"in t)return!0}catch(e){return!1}return!1},isInIframe:function(t,e){return t=t||window,t!=window.top&&t!=t.parent||!this.isWindow(t)},checkParentAccess:function(t){try{return!!t.parent.location.toString()}catch(e){return!1}},isInCrossDomainIframe:function(t,e){e=2===arguments.length?e:t.parent;for(var i=0,n=10;i++=n},ready:function(e,i,n){n=n||this.win||window;var o=n.document;i=i||0,this.domReadyMonitorRunTimes=0,this.readyFuncArray=this.readyFuncArray||[],this.readyFuncArray.push({func:e,delay:i,done:!1});var r=t.proxy(this,function(){var t=!1;this.domReadyMonitorRunTimes++;var e=!1;try{n.frameElement&&(e=!0)}catch(i){e=!0}if(this.browser.ie&&this.browser.ie<9&&!e)try{o.documentElement.doScroll("left"),t=!0}catch(i){}else if("complete"===o.readyState||this.domContentLoaded)t=!0;else if(this.domReadyMonitorRunTimes>3e5)return void(this.domReadyMonitorId&&(n.clearInterval(this.domReadyMonitorId),this.domReadyMonitorId=null));if(t)try{if(this.readyFuncArray&&this.readyFuncArray.length)for(var r=0,s=this.readyFuncArray.length;s>r;r++){var a=this.readyFuncArray[r];a&&a.func&&!a.done&&(a.delay?(a.done=!0,n.setTimeout(a.func,a.delay)):(a.done=!0,a.func()))}}catch(d){throw d}finally{this.domReadyMonitorId&&(n.clearInterval(this.domReadyMonitorId),this.domReadyMonitorId=null)}},this),s=t.proxy(this,function(){this.domContentLoaded=!0,r()});this.domReadyMonitorId||(this.domReadyMonitorId=n.setInterval(r,50),o.addEventListener?(o.addEventListener("DOMContentLoaded",s,!1),n.addEventListener("load",s,!1)):o.attachEvent&&n.attachEvent("onload",s,!1))},bind:function(t,e,i){return"string"==typeof t&&(t=this.g(t)),e=e.replace(/^on/i,"").toLowerCase(),t.addEventListener?t.addEventListener(e,i,!1):t.attachEvent&&t.attachEvent("on"+e,i),t},getNotCrossDomainTopWindow:function(t,e){1===arguments.length&&"number"===this.lang.getType(arguments[0])&&(e=arguments[0],t=void 0),e=e||10;for(var i=window,n=0;n++i&&(e=e.substr(0,i)),e},getPageClient:function(){var t;return"number"==typeof window.innerWidth?t={width:window.innerWidth,height:window.innerHeight}:document.documentElement&&document.documentElement.clientWidth?t={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight}:document.body&&document.body.clientWidth&&(t={width:document.body.clientWidth,height:document.body.clientHeight}),t},getNotCrossDomainWin:function(){var t=this.getWinList();return t[t.length-1]},getWinList:function(){for(var t=0,e=window,i=e.top,n=[e];e!==i&&t++<10&&this.isWindow(e)&&this.isWindow(e.parent);)e=e.parent,n.push(e);return getWinList=function(){return n},n}}),t.define({name:"style",namespace:"dup.common.utility",deps:{dom:"dup.common.utility.dom",lang:"dup.common.utility.lang",browser:"dup.common.utility.browser"},$style:function(){},getClientWidth:function(t){t=t||window;try{var e=this.dom.getTopElement(t).clientWidth;if(e||0===e)return e}catch(i){}return-1},getClientHeight:function(t){t=t||window;try{var e=this.dom.getTopElement(t).clientHeight;if(e||0===e)return e}catch(i){}return-1},getPositionCore:function(t){var e={top:0,left:0};if(t===this.dom.getTopElement(t))return e;var i=this.dom.getDocument(t),n=i.body,o=i.documentElement;if(t.getBoundingClientRect){var r=t.getBoundingClientRect();e.left=Math.floor(r.left)+Math.max(o.scrollLeft,n.scrollLeft),e.top=Math.floor(r.top)+Math.max(o.scrollTop,n.scrollTop),e.left-=o.clientLeft,e.top-=o.clientTop;var s=this.getStyle(n,"borderLeftWidth"),a=this.getStyle(n,"borderTopWidth"),d=parseInt(s,10),l=parseInt(a,10);e.left-=isNaN(d)?2:d,e.top-=isNaN(l)?2:l}return e},getStyle:function(t,e){if(!t)return"";var i="";i=e.indexOf("-")>-1?e.replace(/[-][^-]{1}/g,function(t){return t.charAt(1).toUpperCase()}):e.replace(/[A-Z]{1}/g,function(t){return"-"+t.charAt(0).toLowerCase()});var n,o=this.dom.getWindow(t);if(o&&o.getComputedStyle){if(n=o.getComputedStyle(t,null))return n.getPropertyValue(e)||n.getPropertyValue(i)}else if(t.currentStyle)return n=t.currentStyle,n[e]||n[i];return""},getPosition:function(t){if(t){var e=this.dom.g(t);if(!e)return!1;var i=this.getPositionCore(e),n=this.dom.getWindow(e);if(!n)return i;for(var o=0,r=10;n!==n.parent&&o++5)try{o=parseInt(this.lang.getAttribute(e,"filters.alpha.opacity"),10)||100}catch(r){}n=n>o?o:n}else{try{o=100*(i.getComputedStyle(e,null).opacity||1)}catch(r){}n*=o/100}e=e.parentNode}return 0===n?0:n||100},getOpacity:function(t){for(var e=this.dom.g(t),i=this.dom.getWindow(e),n=this.getOpacityInWin(e),o=0,r=10;o++l;l++)o=s[l].split("="),e=o[0],i=o[1],n=d[e],"undefined"==typeof n?d[e]=i:"[object Array]"==Object.prototype.toString.call(n)?n.push(i):d[e]=[n,i];return d},getQueryURI:function(t){for(var e=[],i=0;t>i;i++){var n=String.fromCharCode(Math.floor(26*Math.random())+"a".charCodeAt(0)),o=/^[a-z]+$/g;o.test(n)&&e.push(n)}return e}}),t.define({name:"data",namespace:"dup.common.utility",deps:{lang:"dup.common.utility.lang",dom:"dup.common.utility.dom"},$data:function(){this.pageInfo={}},data:function(){this.topWin=this.dom.getNotCrossDomainTopWindow(),this.globalInfo=this.topWin.BAIDU_SSP__info||(this.topWin.BAIDU_SSP__info={})},forEach:function(t,e){var i,n,o,r=t.length;if("function"==typeof e)for(o=0;r>o&&(n=t[o],i=e.call(t,n,o),i!==!1);o++);return t},putInfo:function(t,e,i){var n,o=i?this.globalInfo:this.pageInfo;if("string"===this.lang.getType(t)){for(var r=t.split("."),s=o;r.length;){var a=r.shift();s[a]=r.length?void 0!==s[a]?s[a]:{}:e,s=s[a]}n=e}return n},removeInfo:function(t,e){var i=e?this.globalInfo:this.pageInfo;switch(this.lang.getType(t)){default:return!1;case"string":for(var n=t.split(".");n.length;){var o=n.shift();if(!n.length||void 0===i[o])return delete i[o],!0;i=i[o]}}return!1},getInfo:function(t,e){var i,n=e?this.globalInfo:this.pageInfo;return"string"===this.lang.getType(t)&&(i=this.lang.getAttribute(n,t)),i},getOnce:function(t){var e=window,i=e[t];return e[t]=void 0,i},defineOnce:function(t,e){var i=window;return i[t]?i[t]:(i[t]=e,e)},getConfig:function(t){return t?(this.pageInfo=this.getInfo("pageConfig")||{},this.pageInfo[t]):!1},putConfig:function(t,e){return t&&e?(this.pageInfo=this.getInfo("pageConfig")||{},this.pageInfo[t]=e,this.putInfo("pageConfig",this.pageInfo),!0):!1}}),t.define({name:"origentation",namespace:"dup.business",deps:{lang:"dup.common.utility.lang",data:"dup.common.utility.data"},orientKey:"bizOrientations",orientUrgentKey:"bizUrgentOrientations",hasOwn:Object.prototype.hasOwnProperty,watchingSlotsMap:{},slotFinishedCallback:function(){},addOrientation:function(t,e){var i=this.beforeSavingOrientation.apply(this,arguments);return this.saveOrientation(t,i)},addOrientationOnce:function(t,e){var i=this.beforeSavingOrientation.apply(this,arguments);return this.saveOrientation(t,i,{urgent:!0,merge:!0})},setOrientationOnce:function(t,e){var i=this.beforeSavingOrientation.apply(this,arguments);return this.saveOrientation(t,i,{urgent:!0,override:!0})},beforeSavingOrientation:function(t,e){var i=/^[0-9a-zA-Z]+$/;return t&&i.test(t)&&e?e="array"===this.lang.getType(e)?e:Array.prototype.slice.call(arguments,1):[]},saveOrientation:function(t,e,i){if(!e||!e.length)return!1;i=i||{urgent:!1,merge:!1,override:!1};var n=i.merge?this.data.getInfo(this.orientKey):{},o=i.urgent?this.orientUrgentKey:this.orientKey,r=i.override?{}:this.data.getInfo(o)||n,s={};for(var a in r)this.hasOwn.call(r,a)&&(s[a]="array"===this.lang.getType(r[a])?r[a].slice():r[a]);for(var d=s[t]||[],l=e.length,c=0;l>c;c++){var h=e[c];"string"==typeof h&&(h=encodeURIComponent(h),h.length<=100&&(d[d.length]=h))}return d.length?(s[t]=this.lang.unique(d),this.data.putInfo(o,s),!0):!1},getOrientationQuery:function(t){t=t||500,t=Math.max(0,Math.min(t,500));var e,i=[],n=this.data.getInfo(this.orientUrgentKey)||this.data.getInfo(this.orientKey)||{};if("object"===this.lang.getType(n))for(var o in n)this.lang.hasOwn.call(n,o)&&(e=o+"="+n[o].join(","),i[i.length]=e);this.data.putInfo(this.orientUrgentKey,void 0),i.sort(function(t,e){return t.length-e.length});for(var r="",s=i.length,a=0;s>a&&!(r.length+i[a].length>=t);a++)r+=(a?"&":"")+i[a];return r},addSlotStatusCallback:function(t,e){this.setSlotFinishCallback(t),this.addWatchSlotId(e)},setSlotFinishCallback:function(t){this.slotFinishedCallback=t},addWatchSlotId:function(t){this.watchingSlotsMap[t]=!0}}),t.define({name:"browserParam",namespace:"dup.business.parameter",deps:{config:"dup.common.config",browser:"dup.common.utility.browser",dom:"dup.common.utility.dom",style:"dup.common.utility.style",url:"dup.common.utility.url",cookie:"dup.common.utility.cookie"},$browserParam:function(){this.win=window,this.doc=this.win.document,this.nav=this.win.navigator},getTopWin:function(){return this.topWindow||(this.topWindow=this.dom.getNotCrossDomainTopWindow()),this.topWindow},paramsList:[{key:"dbv",value:function(){return this.browser.qihoo?"1":this.browser.chrome?"2":"0"}},{key:"drs",value:function(){var t={uninitialized:0,loading:1,loaded:2,interactive:3,complete:4};try{return t[this.doc.readyState]}catch(e){return-1}}},{key:"pcs",value:function(){var t=[this.style.getClientWidth(this.getTopWin()),this.style.getClientHeight(this.getTopWin())];return t.join("x")}},{key:"pss",value:function(){var t=[this.style.getScrollWidth(this.getTopWin()),this.style.getScrollHeight(this.getTopWin())];return t.join("x")}},{key:"cfv",value:function(){return this.browser.getFlashPlayerVersion()}},{key:"cpl",value:function(){return this.nav.plugins.length||0}},{key:"chi",value:function(){return this.win.history.length||0}},{key:"cce",value:function(){return this.nav.cookieEnabled||0}},{key:"cec",value:function(){return(this.doc.characterSet?this.doc.characterSet:this.doc.charset)||""}},{key:"tlm",value:function(){return Date.parse(this.doc.lastModified)/1e3}},{key:"prot",value:function(){return"https:"===this.config.HTTP_PROTOCOL?"2":""}},{key:"rw",value:function(){var t=Math.max(320,Math.min(window.innerWidth,window.innerHeight));return isNaN(t)&&(t=Math.min(this.style.getClientWidth(),this.style.getClientHeight())),t||0}},{key:"ltu",encode:!0,limit:700,value:function(){if(this.slotInfo.rpdn&&0!==location.protocol.indexOf("http"))return this.config.HTTP_PROTOCOL+"//"+this.slotInfo.rpdn;var e=t.proxy(this,function(t){var e=200,i=60,n=this.style.getClientWidth(t),o=this.style.getClientHeight(t);return e>0&&i>0&&n>2*e&&o>2*i}),i=this.url.getTopWindowUrl(e);return i.indexOf("cpro_prev")>0&&(i=i.slice(0,i.indexOf("?"))),i}},{key:"liu",encode:!0,limit:700,value:function(){return this.dom.isInIframe(this.win)?this.doc.URL:""}},{key:"ltr",encode:!0,limit:300,value:function(){var t=this.getTopWin(),e="";try{e=t.opener?t.opener.document.location.href:""}catch(i){}return e||t.document.referrer}},{key:"lcr",encode:!0,value:function(){if("union"===this.slotInfo.productLine)return"";var t=this.doc.referrer,e=t.replace(/^https?:\/\//,"");e=e.split("/")[0],e=e.split(":")[0],e=this.url.getMainDomain(e);var i=this.url.getMainDomain(),n=this.cookie.get(this.config.LCR_COOKIE_NAME);return n&&i===e?n:i!==e?(this.cookie.set(this.config.LCR_COOKIE_NAME,t,{domain:i}),t):""}},{key:"ecd",encode:!0,value:function(){return this.browser.ie&&this.browser.ie<8?0:1}}],setSlotInfo:function(t){this.slotInfo=t}}),t.define({name:"systemParam",namespace:"dup.business.parameter",deps:{dom:"dup.common.utility.dom",style:"dup.common.utility.style"},$systemParam:function(){this.win=window,this.doc=this.win.document,this.screen=this.win.screen,this.nav=this.win.navigator},paramsList:[{key:"psr",value:function(){var t=[this.screen.width,this.screen.height];return t.join("x")}},{key:"par",value:function(){var t=[this.screen.availWidth,this.screen.availHeight];return t.join("x")}},{key:"pis",value:function(){var t=this.dom.isInIframe(this.win)?[this.style.getClientWidth(),this.style.getClientHeight()]:[-1,-1];return t.join("x")}},{key:"ccd",value:function(){return this.screen.colorDepth||0}},{key:"cja",value:function(){return this.nav.javaEnabled().toString()}},{key:"cmi",value:function(){return this.nav.mimeTypes.length||0}},{key:"col",value:function(){return(this.nav.language||this.nav.browserLanguage||this.nav.systemLanguage||"").replace(/[^a-zA-Z0-9\-]/g,"")}},{key:"cdo",value:function(){var t=this.win.orientation;return void 0===t&&(t=-1),t}},{key:"tcn",value:function(){var t=+new Date;return Math.round(t/1e3)}}]}),t.define({name:"event",namespace:"dup.common.utility",deps:{dom:"dup.common.utility.dom"},bind:function(t,e,i){var n=this.dom.isWindow(t)?t:this.dom.g(t);if(n)if(n.addEventListener)n.addEventListener(e,i,!1);else if(n.attachEvent)n.attachEvent("on"+e,i);else{var o=n["on"+e];n["on"+e]=function(){o&&o.apply(this,arguments),i.apply(this,arguments)}}return n},off:function(t,e,i){var n,o,r=t._listeners_;if(!r)return t;if("undefined"==typeof e){for(n in r)delete r[n];return t}if(e.indexOf("on")&&(e="on"+e),"undefined"==typeof i)delete r[e];else if(o=r[e])for(n=o.length-1;n>=0;n--)o[n].handler===i&&o.splice(n,1);return t},unBind:function(t,e,i){return"string"==typeof t&&(t=this.dom.g(t)),t=this.off(t,e.replace(/^\s*on/,""),i)},app:function(t,e){return t.bind.apply(t,Array.prototype.slice.call(arguments,1))}}),t.define({name:"fingerPrint",namespace:"dup.business",deps:{browser:"dup.common.utility.browser",event:"dup.common.utility.event",dom:"dup.common.utility.dom",storage:"dup.common.utility.storage"},start:function(){this.idPrefix="BAIDU_DUP_fp_",this.fpElId=this.idPrefix+"wrapper",this.dom.g(this.fpElId)||this.event.bind(window,"load",t.proxy(this,this.createFPIframe))},createFPIframe:function(){if(!this.dom.g(this.fpElId)){var t=window,e=t.document,i=e.body,n=this.dom.isInIframe(t)?e.URL:"",o=null,r=null;if((this.browser.ie>9||!this.browser.ie)&&n)try{o=e.cookie,r=this.storage.isAvailable}catch(s){return}var a="https://pos.baidu.com/wh/o.htm?ltr=",d=e.createElement("div");d.id=this.fpElId,d.style.position="absolute",d.style.left="-1px",d.style.bottom="-1px",d.style.zIndex=0,d.style.width=0,d.style.height=0,d.style.overflow="hidden",d.style.visibility="hidden",d.style.display="none";var l=e.createElement("iframe");l.id=this.idPrefix+"iframe",l.src=a,l.style.width=0,l.style.height=0,l.style.visibility="hidden",l.style.display="none";try{d.insertBefore(l,d.firstChild),i&&i.insertBefore(d,i.firstChild)}catch(s){}}}}),t.define({name:"asserter",namespace:"dup.ui.assertion",deps:{mobile:"dup.ui.assertion.mobile.float",dynamicFloat:"dup.ui.assertion.dynamicFloat"},assert:function(t){for(var e=t.response.placement.userdefine||"",i=e.split("|"),n={},o=0,r=i.length;r>o;o++){var s=i[o],a=s.split("="),d=a[0];d&&(n[d]=a[1])}if(n.hasOwnProperty("painter"))return n.painter;var l=t.styleOpenApi.tn||"",c=parseInt(t.styleOpenApi.xuanting||0,10);return l.indexOf("mobile")>=0?c>0||this.mobile.assert(t.response)?"mobile.float":"mobile.inlayFix":"template_float_searchBar"===l?"searchBar":"template_float_bottom_lu"===l?"slide":l.indexOf("_xuanfu")>=0||l.indexOf("float")>=0?"float":c>0||this.dynamicFloat.assert(t.response)?"dynamicFloat":l&&l.length>0?"inlayFix":""}}),t.define({name:"sceneTactics",namespace:"dup.business",deps:{config:"dup.common.config",exp:"dup.business.expBranch",url:"dup.common.utility.url",browser:"dup.common.utility.browser"},$sceneTactics:function(){try{this.QueryURI=this.url.getQueryURI(2)}catch(t){this.QueryURI=["a","o"]}this.config.REQUEST_URL_CNAME&&this.replaceDomain(),this.config.POS_URL=this.config.HTTP_PROTOCOL+this.config.REQUEST_URL+this.QueryURI[0]+"c"+this.QueryURI[1]+"m?",this.config.EXP_SWITCH&&this.exp.tactics()},sceneTactics:function(){},replaceDomain:function(){(this.browser.uc||this.browser.tencent)&&(this.config.REQUEST_URL=this.url.domainProto(this.config.REQUEST_URL_CNAME),this.config.IS_CNAME=!0)}}),t.define({name:"creativePreview",namespace:"dup.business",deps:{url:"dup.common.utility.url",dom:"dup.common.utility.dom",cookie:"dup.common.utility.cookie",config:"dup.common.config",lang:"dup.common.utility.lang"},PREV_TEMP_URL:"//cpro.baidu.com/cpro/ui/preview/templates/",validate:function(t,e,i,n,o){var r=!1,s=this.getPrevValue(i,o);if(!s)return r;for(var a=this.parsePreviewData(s),d=1===parseInt(a.type,10),l=!(n.length>0),c=!(n.length>0),h=0,u=n.length;u>h;h++){var p=n[h];0===p?c=!0:4===p||50===p?(c=!0,l=!0):1!==p&&2!==p||(l=!0)}return!d&&l?r=parseInt(a.imgWidth,10)===parseInt(t,10)&&parseInt(a.imgHeight,10)===parseInt(e,10):d&&c&&this.isAvalibleTextSize(t,e)&&(r=!0),r},isAvalibleTextSize:function(t,e){for(var i=["1024_60","120_240","120_600","125_125","160_600","180_150","200_200","234_60","250_250","300_120","300_250","300_280","336_280","360_150","360_300","460_60","468_60","480_160","500_200","580_90","640_60","728_90","760_60","760_75","760_90","960_60","960_75","960_90"],n=0,o=i.length;o>n;n++)if(t+"_"+e===i[n])return!0;return!1},getPreviewUrl:function(t,e,i,n){var o=window.location.href;if(!this.validate(t,e,n,i,o))return"";var r=n.indexOf("inlay")>=0?"bd_cpro_prev":"bd_cpro_fprev",s=this.getPrevValue(n,o),a=this.parsePreviewData(s),d="";return n.indexOf("inlay")>=0?d=this.getInlayUrl(parseInt(a.type,10),r,s,"text_default_"+t+"_"+e):n.indexOf("float")>=0&&(d=this.getFloatUrl(parseInt(a.type,10),r,s)),d},getPrevValue:function(t,e){var i;i=e?e.substring(e.indexOf("?")):this.dom.isInCrossDomainIframe(window)?window.location.search.slice(1):window.top.location.search.slice(1);var n,o=document.referrer,r=t.indexOf("inlay")>=0||"ui"===t?"bd_cpro_prev":"bd_cpro_fprev",s="";try{n=document.cookie}catch(a){}return i.indexOf(r)>-1&&(s=this.url.getQueryValue(i,r)),!s&&n&&-1!==n.indexOf(r)&&(s=this.cookie.get(r)),s||-1===o.indexOf(r)||(s=this.url.getQueryValue(o,r)),s},parsePreviewData:function(t){return t=decodeURIComponent(t).replace(/\\x1e/g,"&").replace(/\\x1d/g,"=").replace(/\\x1c/g,"?").replace(/\\x5c/g,"\\"),this.lang.jsonToObj(t)},getFloatUrl:function(t,e,i){var n;n=2===t?"float_image.html":4===t||3===t?"float_flash.html":"blank_tips.html";var o=this.PREV_TEMP_URL+n+"?",r="tn=template_float_all_normal"+("&"+e+"="+i).replace(/\./g,"%252e")+"&ut="+ +new Date;return o+r},getInlayUrl:function(t,e,i,n){var o;o=1===t?n+".html":2===t?"image.html":4===t||3===t?"flash.html":"blank_tips.html";var r=this.PREV_TEMP_URL+o+"?";return r+=(""+e+"=#"+i+"&ut="+ +new Date).replace(/\.(?!swf)/g,"%252e")}}),t.define({name:"deliveryLimit",namespace:"dup.business",deps:{inlayFixAssert:"dup.ui.assertion.inlayFix",dynamicFloatAssert:"dup.ui.assertion.dynamicFloat",floatAssert:"dup.ui.assertion.float",dom:"dup.common.utility.dom"},MAX_COUNT:{},TYPE:{INLAY:"inlay",COUPLET:"couplet",POPUP:"popup",LINKUNIT:"linkunit"},$deliveryLimit:function(){this.displayedMap=this.displayedMap||{},this.MAX_COUNT[this.TYPE.INLAY]=25,this.MAX_COUNT[this.TYPE.COUPLET]=2,this.MAX_COUNT[this.TYPE.POPUP]=1,this.MAX_COUNT[this.TYPE.LINKUNIT]=25},validate:function(t){if("union"!==t.productLine)return!0;var e=this.getSlotType(t),i=this.getAdCount(e),n=this.MAX_COUNT[e];return n>i},getAdCount:function(t){var e=this.displayedMap[t]||{},i=0;for(var n in e)n&&e[n]&&e.hasOwnProperty(n)&&(this.dom.g(n)?i++:e[n]=void 0);return i},setAdsCount:function(t,e){var i=this.displayedMap[t];return i||(this.displayedMap[t]={},i=this.displayedMap[t]),i[e]=1,!0},getSlotType:function(t){var e=this.TYPE.INLAY,i=t.response;if(!i)return e;var n=i.placement;if((this.inlayFixAssert.assert(i)||this.dynamicFloatAssert.assert(i))&&(e=this.TYPE.INLAY),n&&n.fillstyle)for(var o=i.placement.fillstyle.elements||[],r=0,s=o.length;s>r;r++)if(5===o[r])return this.TYPE.LINKUNIT;return e}}),t.define({name:"landingPage",namespace:"dup.ui.painter",deps:{lang:"dup.common.utility.lang",style:"dup.common.utility.style",browser:"dup.common.utility.browser",dom:"dup.common.utility.dom"},activate:function(e){return this.validate(e)?(this.expansionActionName="BaiduCproExpansion"+e.containerId,this.pageIframeId=e.containerId+"_ExpansionLP",e.paramObj.expToken=this.expansionActionName,this.dom.bind(window,"message",t.proxy(this,this.onPostMessageHandler)),!0):!1},validate:function(t){var e=parseInt(t.styleOpenApi.expansion||0,10);return 1===e&&!this.browser.isIOS&&"postMessage"in window},onPostMessageHandler:function(e){if("object"==typeof e&&e.data){var i=e.data;if("string"==typeof i&&!(i.indexOf(this.expansionActionName)<0)){this.expandContainerEl=document.createElement("div");var n=Math.max(this.style.getClientWidth(),this.style.getClientHeight()),o=this.expandContainerEl.style;o.position="fixed",o.left="0",o.top=n+"px",o.zIndex=2147483647,o.background="#ffffff",o.width="100%",o.transition=o.WebkitTransition=o.MozTransition=o.OTransition="top 1s ease-in-out",i=i.slice(this.expansionActionName.length);var r=['','
             
            '].join(""),s=Math.min(this.style.getClientWidth(),this.style.getClientHeight()),a={lpIframeId:this.pageIframeId,clickUrl:i,iframeWidth:this.style.getClientWidth(),iframeHeight:this.style.getClientHeight(),closeBtnSize:80*s/640};this.expandContainerEl.innerHTML=this.lang.template(r,a),this.expandContainerEl.style.top="0",document.body.appendChild(this.expandContainerEl),this.dom.bind(window,"resize",t.proxy(this,this.onResizeHandler));var d=this.dom.g(this.pageIframeId+"_closeBtn");this.dom.bind(d,"click",t.proxy(this,this.onCloseBtnClickHandler))}}},onCloseBtnClickHandler:function(){this.expandContainerEl.style.top=Math.max(this.style.getClientWidth(),this.style.getClientHeight())+"px",this.expandContainerEl&&this.expandContainerEl.parentNode?(this.expandContainerEl.parentNode.removeChild(this.expandContainerEl),this.expandContainerEl=null):this.expandContainerEl.innerHTML=""},onResizeHandler:function(){var t=this.style.getClientWidth(),e=this.style.getClientHeight(),i=this.dom.g(this.pageIframeId);i.style.width=t+"px",i.style.height=e+"px",i.setAttribute("width",t),i.setAttribute("height",e)}}),t.define({name:"hiddenFloatAd",namespace:"dup.ui.painter",deps:{style:"dup.common.utility.style",dom:"dup.common.utility.dom"},TOP:2,BOTTOM:3,render:function(e){if(!this.validate(e))return!1;this.alreadyEnableHidden=!0,this.autoCloseTime=e.response.placement.container.closeTime||5,e.styleOpenApi.cpro_close_time&&(this.autoCloseTime=parseInt(e.styleOpenApi.cpro_close_time,10)||5),this.autoCloseTime=this.autoCloseTime>=3?this.autoCloseTime:3;var i=parseInt(e.styleOpenApi.cpro_show_dist,10)||5;i=i>=5?i:5,this.percentage=(1/i).toFixed(2);var n=e.response.placement,o=n.container;this.dockTo=parseInt(o.location,10)||this.BOTTOM,this.adWrapEl=document.getElementById(e.containerId),this.adWrapEl.style.display="block",this.adIframe=this.dom.g(e.containerId+"_frame");var r=this.dom.g(e.containerId+"_closebtn"),s=parseInt(this.adWrapEl.style.height||e.height,10),a=parseInt(r.style.height,10);this.hiddenHeight=-1*(s+a),this.haveSetIframeUrl=!0,this.countDownTimerId=!1,this.close4ever=!1,this.shrinkAd(),this.transitionDecorator(this.adWrapEl),this.lastScrollTop=this.style.getScrollTop(),this.dom.bind(r,"click",t.proxy(this,this.closeBtnOnClickHandler)),this.dom.bind(window,"scroll",t.proxy(this,this.onScrollHandler))},validate:function(t){var e=!!t.styleOpenApi.cpro_enable_hidden_float,i=t.response.placement.container,n=i.anchoredType,o=i.floated.trigger;return e||"11"==n&&o?this.alreadyEnableHidden?!1:(this.alreadyEnableHidden=!0,!0):!1},shrinkAd:function(){this.dockTo===this.TOP?this.adWrapEl.style.top=this.hiddenHeight+"px":this.dockTo===this.BOTTOM&&(this.adWrapEl.style.bottom=this.hiddenHeight+"px")},expandAd:function(){this.dockTo===this.TOP?this.adWrapEl.style.top=0:this.adWrapEl.style.bottom=0,this.adIframe&&!this.haveSetIframeUrl&&(this.adIframe.src=this.adIframe.getAttribute("_src"),this.haveSetIframeUrl=!0)},transitionDecorator:function(t){var e="-webkit-transition: all .3s linear;-moz-transition: all .3s linear;-ms-transition: all .3s linear;-o-transition: all .3s linear;transition: all .3s linear;";t.style.cssText=t.style.cssText+e},startCountDown:function(t,e){var i=t,n=setInterval(function(){i--,0>=i&&(clearInterval(n),e&&e())},1e3);this.countDownTimerId=n},closeBtnOnClickHandler:function(){this.shrinkAd(),this.close4ever=!0},onScrollHandler:function(){var e=Math.max(document.documentElement.clientHeight,window.innerHeight||0)*this.percentage,i=this.style.getScrollTop(),n=i>this.lastScrollTop?"down":"top";this.totalScrollLength+=i-this.lastScrollTop,this.lastScrollTop=i,"top"===n&&!this.close4ever&&Math.abs(this.totalScrollLength)>=e&&!this.countDownTimerId?(this.expandAd(),this.startCountDown(this.autoCloseTime,t.proxy(this,this.onTimeCountDownHandler))):"down"===n&&(this.totalScrollLength=0)},onTimeCountDownHandler:function(){this.shrinkAd(),this.countDownTimerId=!1,this.totalScrollLength=0}}),t.define({name:"slotParam",namespace:"dup.business.parameter",deps:{dom:"dup.common.utility.dom",style:"dup.common.utility.style"},$slotParam:function(){this.win=window},paramsList:[{key:"di",value:function(){return this.slotInfo.slotId}},{key:"dri",value:function(){return this.slotInfo.index}},{key:"dis",value:function(){var t=0;this.dom.isInIframe(this.win)&&(t+=1),this.dom.isInCrossDomainIframe(this.win,this.win.top)&&(t+=2);var e=this.style.getClientWidth(),i=this.style.getClientHeight();return(40>e||10>i)&&(t+=4),t}},{key:"dai",value:function(){return this.slotInfo.count}},{key:"ps",value:function(){var t=this.dom.g(this.slotInfo.containerId),e=this.style.getPosition(t);return e.top+"x"+e.left}},{key:"coa",encode:!0,value:function(){var t=[],e=this.slotInfo.styleOpenApi;"-1"===this.slotInfo.pcwd&&(e.cpro_ftpc="true");for(var i in e)if(i&&"undefined"!=typeof e[i]&&e.hasOwnProperty(i)){var n=i;"cpro_w"===i&&(n="rsi0"),"cpro_h"===i&&(n="rsi1"),t.push(n+"="+encodeURIComponent(e[i]))}return t.join("&")}},{key:"cw",value:function(){var t=this.slotInfo.styleOpenApi.cpro_ftpc||"true"===this.slotInfo.styleOpenApi.cpro_ftpc||"-1"===this.slotInfo.pcwd,e=this.dom.g(this.slotInfo.containerId);return t&&e&&e.parentElement.clientWidth?e.parentElement.clientWidth||0:void 0}}],setSlotInfo:function(t){this.slotInfo=t}}),t.define({name:"preview",namespace:"dup.business",deps:{config:"dup.common.config",url:"dup.common.utility.url",data:"dup.common.utility.data"},CLB_PREFIX:"baidu_clb_preview_",DUP_PREFIX:"baidu_dup_preview_",getValue:function(t){var e,i=this.url.getTopWindowUrl();return e=this.url.getQueryValue(i,this.CLB_PREFIX+t),e||(e=this.url.getQueryValue(i,this.DUP_PREFIX+t)),e},getInfo:function(){var t,e=this.getValue("sid"),i=this.getValue("mid"),n=this.getValue("vc"),o=+this.getValue("ts"),r=+new Date;return 3e4>=r-o&&(t={sid:e,mid:i,vc:n}),this.getInfo=function(){return t},t},isUnionPreview:function(t){var e=!1;return t?/cpro_template=/gi.test(t)&&(this.data.putInfo("#unionPreviewSwitch",!0),e=!0):e=!!this.data.getInfo("#unionPreviewSwitch"),e},setUnionPreviewData:function(t){this.data.putInfo("#unionPreviewData",t)},getUnionPreviewData:function(){var t=this.data.getInfo("#unionPreviewData");return t?"prev="+encodeURIComponent(t)+"&pt=union":""},clearUnionPreviewData:function(){this.data.removeInfo("#unionPreviewSwitch"),this.data.removeInfo("#unionPreviewData")},getSearchParams:function(t){var e={},i=this.getInfo();return i&&t==i.sid&&(e.mid=i.mid,e.sid=i.vc,this.config.IS_PREVIEW=!0),e}}),t.define({name:"log",namespace:"dup.common.utility",deps:{config:"dup.common.config",lang:"dup.common.utility.lang",event:"dup.common.utility.event",storage:"dup.common.utility.storage"},storageKey:"BAIDU_DUP_log_storage",loadImage:function(t,e){var i=new Image,n="BAIDU_DUP_log_"+Math.floor(2147483648*Math.random()).toString(36);window[n]=i,i.onload=i.onerror=i.onabort=function(){i.onload=i.onerror=i.onabort=null,window[n]=null,i=null,e&&e(this.storageKey,t,!0)},i.src=t},resendLog:function(){var t=this.storage.getItem(this.storageKey);if(t){t=t.split("|");for(var e=0,i=t.length;i>e;e++)this.loadImage(decodeURIComponent(t[e]),this.storage.spliceItem)}},monitorLog:function(t){var e,i=t.id?t.id:"",n=t.async?t.async:"",o=t.type?t.type:"ssplog",r=t.pos?t.pos:"",s=t.status?t.status:"",a=t.mes?encodeURIComponent(t.mes):"",d=t.exps?t.exps:"";e=this.config.LOG_URL+["?type="+o,"id="+i,"pos="+r,"status="+s,"async="+n,"mes="+a,"exps="+d,"from=ssp","tm="+ +new Date].join("&"),this.sendLogRequest(e)},sendLogRequest:function(t){var e=new Image,i=+new Date,n="baidu_dan_log_"+i;window[n]=e,e.onload=e.onerror=e.onabort=function(){try{delete window[n]}catch(t){window[n]=void 0}e=null},t+=t.indexOf("?")>-1?"&":"?",t+=".stamp="+Math.random(),e.src=t},sendLog:function(t){t="object"===this.lang.getType(t)?t:{};var e=t.url||this.config.LOG_URL,i=t.data||{},n=t.option||"now",o=this.lang.serialize(i);switch(e+=(e.indexOf("?")>=0?"&":"?")+o+(o?"&":"")+"rdm="+ +new Date,n){case"now":this.loadImage(e);break;case"block":break;case"unload":default:this.storage.addItem(this.storageKey,e,!0),this.event.bind(window,"unload",function(){this.loadImage(e,this.storage.spliceItem)})}}}),t.define({name:"painterSelector",namespace:"dup.business",deps:{asserter:"dup.ui.assertion.asserter"},getPainter:function(e){var i=this.asserter.assert(e);if(i)return"dup.ui.painter."+i;for(var n=e.response,o=["dan.static","dan.couplet","dan.expand","dan.barrier","dan.video","topSearchBar","bottomSearchBar","slide","inlayFix","baiduRec","dynamicFloat","float","insideText","mobile.inlayFix","mobile.float"],r=0,s=o.length;s>r;r++){var a=t.using("dup.ui.assertion."+o[r]);if(a&&a.assert(n))return"dup.ui.painter."+o[r]}return i||(e.errors=e.errors||[],e.errors.push("painterName is empty")),"dup.ui.painter.inlayFix"}}),t.define({name:"businessParam",namespace:"dup.business.parameter",deps:{config:"dup.common.config",preview:"dup.business.preview",dom:"dup.common.utility.dom",origentation:"dup.business.origentation"},paramsList:[{key:"dcb",value:function(){return this.config.LOADER_DEFINE_NAME}},{key:"dtm",value:function(){return this.config.SSP_JSONP}},{key:"dvi",value:function(){return"0.0"}},{key:"dci",value:function(){return"-1"}},{key:"dds",value:function(){return""}},{key:"dpt",value:function(){var t="none";return this.preview.isUnionPreview()&&(t="union"),t}},{key:"tsr",value:function(){var t=0,e=+new Date;return this.config.startTime&&(t=e-this.config.startTime),t}},{key:"tpr",value:function(){function t(t){try{return!!t.top.location.toString()}catch(e){return!1}}var e,i,n=24e4,o=(new Date).getTime();return i=t(window)?window.top:window,e=i.BAIDU_DUP2_pageFirstRequestTime,e?o-e>=n&&(e=i.BAIDU_DUP2_pageFirstRequestTime=o):e=i.BAIDU_DUP2_pageFirstRequestTime=o,e||""}},{key:"cop",encode:!0,value:function(){return this.origentation.getOrientationQuery()}},{key:"ti",encode:!0,value:function(){return this.dom.getDocumentTitle()}},{key:"ari",value:function(){return 2}}]}),t.define({name:"param",namespace:"dup.business",deps:{config:"dup.common.config",slotParams:"dup.business.parameter.slotParam",businessParams:"dup.business.parameter.businessParam",browserParams:"dup.business.parameter.browserParam",systemParams:"dup.business.parameter.systemParam",additionalParam:"dup.business.parameter.additionalParam",style:"dup.common.utility.style",dom:"dup.common.utility.dom",preview:"dup.business.preview",requestCache:"dup.business.requestCache"},snap:function(t){for(var e=[],i=t.paramsList,n=0,o=i.length;o>n;n++){var r=i[n],s=r.key,a=r.encode,d=r.value,l=r.limit;try{d="function"==typeof d?d.apply(t):d,d=a?encodeURIComponent(d):d,d=l?d.substr(0,l):d,e.push({key:s,value:d})}catch(c){var h=this.config.LOG_URL;h+="?type=adcodex_error",h+="&info="+encodeURIComponent(c.message),h+="&stack="+encodeURIComponent(c.stack||""),h+="&key="+encodeURIComponent(s),h+="&t="+(new Date).getTime(),(new Image).src=h}}return e},processExtendsParam:function(t){var e=t.response,i=e.placement.container,n=e.pdb_deliv,o=e.rtb_deliv,r=e.order_deliv;0===parseInt(n.deliv_id,10)&&(n.deliv_id=0),0===parseInt(n.demand_id,10)&&(n.demand_id=0),0===parseInt(o.deliv_id,10)&&(o.deliv_id=0),0===parseInt(o.demand_id,10)&&(o.demand_id=0),0===parseInt(r.deliv_id,10)&&(r.deliv_id=0),0===parseInt(r.demand_id,10)&&(r.demand_id=0);var s=e["extends"]||{};if(s&&s.hasOwnProperty("sspw")&&s.hasOwnProperty("ssph")){var a=parseInt(s.sspw||0,10),d=parseInt(s.ssph||0,10),l=parseInt(s.cbsz||0,10);if(a&&d&&(i.width=a,i.height=d),l>0&&(i.sizeType=l),1===l)t.width=a,t.height=d;else if(2===l){var c=this.translateScaleToPixelSize(a,d);t.width=c.width,t.height=c.height}}var h=t.width||i.width,u=t.height||i.height,p=e.placement.complement_type;if(0===p){var m=this.dom.g(t.containerId);m.style.width=h+"px",m.style.height=u+"px",m.style.display="inline-block"}},translateScaleToPixelSize:function(t,e,i){var n=i||{};return t=Math.abs(t),e=Math.abs(e),n.width||(n.width=Math.max(320,Math.min(window.innerWidth,window.innerHeight)),isNaN(n.width)&&(n.width=Math.min(this.style.getClientWidth(),this.style.getClientHeight()))),n.height||(n.height=Math.ceil(n.width/t*e)),{width:n.width,height:n.height}},getParamObj:function(t){var e=[];this.slotParams.setSlotInfo(t),this.browserParams.setSlotInfo(t),e=e.concat(this.snap(this.slotParams)),e=e.concat(this.snap(this.businessParams)),e=e.concat(this.snap(this.browserParams)),e=e.concat(this.snap(this.additionalParam)),e=e.concat(this.snap(this.systemParams));for(var i={},n=0,o=e.length;o>n;n++){var r=e[n];i[r.key]=r.value}t.width>0&&t.height>0&&(i.sz=t.width+"x"+t.height);var s=this.preview.getSearchParams(t.slotId);return i.mid=s.mid,i.sid=s.sid,i},getParamString:function(t){var e=[];for(var i in t)if(i&&(t[i]||0===t[i])&&t.hasOwnProperty(i)){var n=t[i];e.push(i+"="+n)}return e=e.join("&"),e.slice(0,2048)},getPmpRequestUrl:function(t){var e={},i=[],n=t.paramObj;for(var o in n)o&&n.hasOwnProperty(o)&&(e[o]=n[o]);var r=t.timestampWatcher,s=r.t1,a=r.t2,d=r.t3,l=t.response;if(l){l.basic;e.qn=l.queryid,t.paramObj.qn=l.queryid;var c=t.width,h=t.height;c>0&&h>0&&(e.sz&&(e.sz=""),i.push("sz="+c+"x"+h)),t.pcwd&&i.push("conwid="+c),t.pchd&&i.push("conhei="+h);var u=l.pdb_deliv;u.deliv_id&&i.push("pdbid="+u.deliv_id),l.media_protect&&i.push("mpdi="+l.media_protect);var p=l.order_deliv;p.deliv_id&&i.push("orderid="+p.deliv_id),p.demand_id&&i.push("odid="+p.demand_id);var m=l.rtb_deliv;m.deliv_id&&i.push("rtbid="+m.deliv_id),m.demand_id&&i.push("rdid="+m.demand_id);var f=l.placement.complement_type;if(t.isNeedCacheRequest||4===f||7===f){var g=e.qn;e.dpv=g,t.paramObj.dpv=g,this.requestCache.add(g,t)}i.push("dc=2"),r&&s>0&&(e.tt=s+"."+(a-s)+"."+(d-s)+"."+(+new Date-s)),e.exps&&(i.push("exps="+e.exps),e.exps="")}var y=i.join("&");return this.config.POS_URL+y+"&"+this.getParamString(e)}}),t.define({name:"slot",namespace:"dup.business",deps:{config:"dup.common.config",param:"dup.business.param",dom:"dup.common.utility.dom",log:"dup.common.utility.log",lang:"dup.common.utility.lang",storage:"dup.common.utility.storage",origentation:"dup.business.origentation"},slotIdCountMap:{},slotCount:0,storageTime:{},$slot:function(){this.slotsMap=this.slotsMap||{}},getSlotInfo:function(t){return this.slotsMap[t]},getSlotInfoByRawId:function(t){for(var e in this.slotsMap)if(this.slotsMap.hasOwnProperty(e)&&e.indexOf(t)>-1)return this.slotsMap[e];return{}},createSlot:function(t){var i=""+t.slotId;this.slotIdCountMap[i]=this.slotIdCountMap[i]||0;var n={};return n.index=this.slotIdCountMap[i]++,n.count=++this.slotCount,n.id=i+"_"+n.index,n.containerId=this.config.DUP_PREFIX+"_wrapper_"+i+"_"+n.index,n.slotId=t.slotId,n.productLine=t.productLine,n.errors=[],n.isAsync=t.isAsync,this.setStatus(n.id,this.config.STATUS_CREATE),e?n.timestampWatcher={t1:e}:n.timestampWatcher={t1:0},window.cproStyleApi?n.styleOpenApi=window.cproStyleApi[i]||{}:n.styleOpenApi={},0===i.indexOf("u")&&(n.productLine="union",n.width=n.styleOpenApi.cpro_w||n.styleOpenApi.rsi0||0,n.height=n.styleOpenApi.cpro_h||n.styleOpenApi.rsi1||0), +n},cloneSlot:function(t){var e;return e=window.JSON&&window.JSON.parse?JSON.parse(JSON.stringify(t)):this.lang.clone(t),e.index=this.slotIdCountMap[e.slotId]++,e.id=e.slotId+"_"+e.index,e},processSlot:function(t){var e=!1,i=!1;if(t.response){var n=t.response.rtb_deliv,o=t.response.order_deliv,r=parseInt(n.deliv_id,10),s=parseInt(n.demand_id,10),a=parseInt(o.deliv_id,10),d=parseInt(o.demand_id,10);e=!(r||s||a||d),(e||0!==a)&&(i=0!==r||0!==a)}t.isPdbAd=e,t.isNeedCacheRequest=i},addSlot:function(t){this.slotsMap[t.id]=t},clearStatus:function(t,e){t.status=t.status^e},checkStatus:function(t,e){return(t.status&e)>0},setStatus:function(t,e){var i=this.getSlotInfo(t);i&&(i.status|=e),(e&this.config.STATUS_CREATE)>0&&(this.storageTime[t]=+new Date),(e&this.config.STATUS_FINISH)>0&&this.adSlotFinish(t)},addErrorInfo:function(t,e){t.errors=t.errors||[],t.errors.push(e)},adSlotFinish:function(t){var e={},i=!1,n=this.getSlotInfo(t);if(n.response){var o=n.response?n.response.pdb_deliv:{};for(var r in this.origentation.watchingSlotsMap)if(r&&this.origentation.watchingSlotsMap.hasOwnProperty(r)&&this.origentation.watchingSlotsMap[r]&&0===(""+t).indexOf(""+r)&&n.response){var s=o.deliv_des,a=s.width||0,d=s.height||0;0===a||0===d?e[t]=!1:e[t]=!0,i=!0}i&&this.origentation.slotFinishedCallback(e)}},process:function(){var t=this.slotsMap;for(var e in t)if(e&&t[e]&&t.hasOwnProperty(e)){var i=t[e];if(i.status>=this.config.STATUS_REQUEST)continue;this.createContainer(i),this.requestSlotInfo(i)}},requestSlotInfo:function(t){var e=!1;t.paramObj=this.param.getParamObj(t),t.paramObj.exps=this.config.EXP_ID,t.paramObj.pcn=this.config.IS_CNAME?this.config.REQUEST_URL_CNAME:"";var i=this.param.getParamString(t.paramObj),n=this.config.POS_URL+i;t.paramObj.dtm=this.config.HTML_POST,t.timestampWatcher.t2=+new Date;var o=!1;"union"===t.productLine&&(o=!0),t.isAsync===!0&&(o=!0),e=this.localAdInfo(t),e?(this.setStatus(t.id,this.config.STATUS_REQUEST),window[this.config.LOADER_DEFINE_NAME](e)):(this.sendJsonpRequest(n,o),this.setStatus(t.id,this.config.STATUS_REQUEST))},localAdInfo:function(t){try{var e={};if(!this.storage.isAvailable)return!1;if(this.storageSlotInfo=this.storage.getItem(t.id),!this.storageSlotInfo)return!1;if(e=this.lang.jsonToObj(this.storageSlotInfo),!e||!e.adExpire)return!1;var i=(new Date).getTime(),n=i-e.adExpire;return n>this.config.STORAGE_TIMER?(this.storage.removeItem(t.id),!1):e}catch(o){}},adInfoStorage:function(t){try{var e=t.response||{},i=!1;e&&e.pdb_deliv&&e.pdb_deliv.deliv_des&&e.pdb_deliv.deliv_des._html&&(i=!0);var n=!1;e&&e.tuid&&(n=0===e.tuid.indexOf("u"));var o=t.id;!i&&n&&this.storage.isAvailable&&window.JSON&&window.JSON.stringify&&o&&!this.storageSlotInfo&&(e.adExpire=(new Date).getTime(),this.storage.setItem(o,JSON.stringify(e)))}catch(r){}},createContainer:function(t){if(!(t.status>this.config.STATUS_CREATE)){var e=this.dom.g(t.containerId);if(e)return void this.setStatus(t.id,this.config.STATUS_CREATE);t.isAsync?"union"===t.productLine&&(t.containerId="cpro_"+t.slotId):(document.write('
            '),this.dom.g(t.containerId)||this.createBackupWrapper(t)),this.setStatus(t.id,this.config.STATUS_CREATE)}},createBackupWrapper:function(t){try{var e=document.getElementsByTagName("script"),i=e[e.length-1];if(i){var n=i.parentNode;if(n){var o=document.createElement("div");return o.id=t.containerId,n.insertBefore(o,i),!0}}}catch(r){}return!1},sendJsonpRequest:function(t,e){if(e){var i=document.createElement("script");i.type="text/javascript",i.async=!0,i.src=t;var n=document.getElementsByTagName("script")[0];if(n&&n.parentNode)return void n.parentNode.insertBefore(i,n);document.write('')}else document.write('')},adInfoIsAvailable:function(t){var e=t.response;if(!e)return!0;var i=e.pdb_deliv,n=e.rtb_deliv,o=e.order_deliv,r=e.pdb_deliv.deliv_des,s=(r._html,e.placement.complement_type);return!(!this.config.IS_PREVIEW&&0===i.deliv_id&&0===n.deliv_id&&0===o.deliv_id&&7==s)}}),t.define({name:"detect",namespace:"dup.business",deps:{config:"dup.common.config",log:"dup.common.utility.log",slot:"dup.business.slot"},$detect:function(){},sendLog:function(t){t.url="",t.host=window.location.hostname,t.from="SSP",this.config.EXP_ID&&(t.exp=this.config.EXP_ID),this.log.sendLog({data:t,option:"now"})},checkFail:function(){var t=this.slot.slotsMap;for(var e in t)if(e&&t.hasOwnProperty(e)&&t[e]){var i=t[e],n=i.slotId,o="";i.response&&(o=i.response.queryid);var r=i.status,s=i.errors||[],a=decodeURIComponent(s.join(","));a&&this.sendLog({type:"sspFail",exp:this.config.EXP_ID||"",status:r,id:n,sid:o,index:i.index,errorInfo:a})}}}),t.define({name:"viewWatch",namespace:"dup.business",deps:{dom:"dup.common.utility.dom",lang:"dup.common.utility.lang",style:"dup.common.utility.style",browser:"dup.common.utility.browser",log:"dup.common.utility.log",slot:"dup.business.slot"},analysisUrl:"//eclick.baidu.com/a.js",maxTime:72e5,STATUS:{WAIT:0,LOAD:1,RUN:2,UNLOAD:3},clientParam:{},focusSwitch:!0,watchingList:null,intervalId:null,intervalTimeSpan:500,isEventInited:!1,$viewWatch:function(){this.winFocused=!0,this.win=window,this.pageStayTime=null==this.pageStayTime?0:this.pageStayTime,this.intervalStatus=this.STATUS.WAIT},viewWatch:function(){},regisetViewWatch:function(t){this.isEventInited||(this.initializeEvent(),this.isEventInited=!0),this.watchingList=this.watchingList||[];var e=this.dom.g(t.containerId);if(e){var i=t.paramObj,n=t.width,o=t.height,r="";if(t.response){var s=t.response.placement,a=s.container;n=a.width,o=a.height,r=t.response.queryid}var d=new Date,l={slotId:t.slotId,domId:t.containerId,jk:r,word:i.ltu,iframeStatus:i.dis,aw:n,ah:o,viewContext:{pageStayTime:0,pageStayTimeStamp:d,inViewTime:0,inViewTimeStamp:d,currViewStatus:!1,focusTime:0,adViewTime:0,currAdViewStatus:!1,adViewTimeStamp:d}};this.calculateClientParam(l,e),this.watchingList.push(l)}},unregisetViewWatch:function(t){if(this.watchingList)for(var e=t.containerId,i=0;ithis.maxTime&&(n.inViewTime=this.maxTime),n.adViewTime>this.maxTime&&(n.adViewTime=this.maxTime),n.pageStayTime>=this.maxTime&&(n.pageStayTime=this.maxTime);var o=[];return o.push("tu="+e.slotId),o.push("jk="+e.jk),o.push("word="+e.word),o.push("if="+e.iframeStatus),o.push("aw="+e.aw),o.push("ah="+e.ah),o.push("pt="+n.pageStayTime),o.push("it="+n.inViewTime),o.push("vt="+n.adViewTime),o.push("csp="+e.desktopResolution),o.push("bcl="+e.browserRegion),o.push("pof="+e.pageRegion),o.push("top="+e.top),o.push("left="+e.left),i+o.join("&")}},initializeEvent:function(){this.windowOnLoadHandler(),this.dom.ready(t.proxy(this,this.windowOnLoadDelay),2e3),this.dom.bind(this.win,"beforeunload",t.proxy(this,this.windowOnUnloadHandler))},calculateClientParam:function(t,e){var i=this.style.getPosition(e);t.left=i.left||0,t.top=i.top||0;var n=window.screen.availWidth,o=window.screen.availHeight;n>1e4&&(n=0),o>1e4&&(o=0),t.desktopResolution=n+","+o,t.browserRegion=this.style.getClientWidth(window)+","+this.style.getClientHeight(window),t.pageRegion=this.style.getScrollWidth(window)+","+this.style.getScrollHeight(window)},updateViewStatus:function(t,e,i){var n,o,r,s=new Date;return n=o=r=this.intervalTimeSpan,this.intervalStatus===this.STATUS.LOAD&&(this.intervalStatus=this.STATUS.RUN,n=o=0,r=o=0),t.currViewStatus?(this.intervalStatus===this.STATUS.LOAD&&(n=parseInt(s.getTime()-t.inViewTimeStamp.getTime(),10),0>n?n=0:n>this.intervalTimeSpan&&(n=this.intervalTimeSpan)),t.inViewTime+=n,t.inViewTimeStamp=s):e&&(t.inViewTimeStamp=s),t.currViewStatus=e,t.currAdViewStatus?(this.intervalStatus===this.STATUS.UNLOAD&&(r=parseInt(s.getTime()-t.adViewTimeStamp.getTime(),10),0>r?r=0:r>this.intervalTimeSpan&&(r=this.intervalTimeSpan)),t.adViewTime+=r,t.adViewTimeStamp=s):i&&(t.adViewTimeStamp=s),t.currAdViewStatus=i,t.pageStayTime=t.pageStayTime||0,this.pageStayTime=this.pageStayTime||0,this.intervalStatus===this.STATUS.UNLOAD&&(this.pageTimeSpan=parseInt(s.getTime()-t.pageStayTimeStamp.getTime(),10),0>o?o=0:o>this.intervalTimeSpan&&(o=this.intervalTimeSpan)),t.pageStayTime+=o,this.pageStayTime+=o,this.winFocused&&(t.focusTime+=o),t.pageStayTimeStamp=s,t},computeViewStatus:function(t){var e=t.domId,i=this.dom.g(e);if(!i)return{isInView:!1,isAdView:!1};var n=!1,o=!1;if(this.winFocused)try{var r=this.style.getClientWidth(this.win),s=this.style.getClientHeight(this.win),a=this.getPosition(i),d=this.style.getOuterWidth(i),l=this.style.getOuterHeight(i);n=a.top>=0&&a.bottom<=s&&a.left>=0&&a.left<=r;var c=a.top>0?a.top:0,h=a.bottom>s?s:a.bottom,u=a.left>0?a.left:0,p=a.right>r?r:a.right,m=d*l;if(h>c&&p>u){var f=(h-c)*(p-u);o=f>.5*m}}catch(g){}return{isInView:n,isAdView:o}},getPosition:function(t){var e=this.style.getPositionCore(t),i=this.style.getScrollLeft(window),n=this.style.getScrollTop(window),o=this.style.getOuterWidth(t,!1),r=this.style.getOuterHeight(t,!1);return{top:e.top-n,bottom:e.top-n+r,left:e.left-i,right:e.left-i+o,topAbs:e.top,bottomAbs:e.top+r,leftAbs:e.left,rightAbs:e.left+o}},viewableCompute:function(){if(this.watchingList){var t,e;for(t=0,e=this.watchingList.length;e>t;t++){var i=this.watchingList[t],n=this.computeViewStatus(i);i.viewContext=this.updateViewStatus(i.viewContext,n.isInView,n.isAdView),i.analysisUrl=this.buildAnalysisUrl(this.analysisUrl,i)}}},viewOnChange:function(){this.viewableCompute(),this.pageStayTime>=this.maxTime&&this.windowOnUnloadHandler(!1)},windowOnLoadHandler:function(e){this.intervalStatus=this.STATUS.LOAD,this.registerFocusEvent(this.win),(!this.browser.ie||this.browser.ie&&this.browser.ie>6)&&this.viewOnChange(),this.intervalId=setInterval(t.proxy(this,this.viewOnChange),this.intervalTimeSpan)},windowOnLoadDelay:function(t){var e,i,n,o,r;for(e=0,i=this.watchingList.length;i>e;e++)n=this.watchingList[e],n&&(r=n.domId,r&&(o=this.win.document.getElementById(r)),o&&(n.clientParam=n.clientParam||{},this.calculateClientParam(n,o)))},windowOnUnloadHandler:function(t){try{if(clearInterval(this.intervalId),this.intervalStatus!==this.STATUS.RUN)return void(this.intervalStatus=this.STATUS.UNLOAD);this.intervalStatus=this.STATUS.UNLOAD,this.viewableCompute();for(var e=0,i=this.watchingList.length;i>e;e++){var n=this.watchingList[e];n&&n.analysisUrl&&!n.isSended&&(n.isSended=!0,0===e&&(n.analysisUrl+="&total="+this.watchingList.length),this.log.sendLog({url:n.analysisUrl}))}if(t){var o,r=200,s=(new Date).getTime();if(this.browser.ie)for(o=s+r;o>s;)s=(new Date).getTime();else{for(var i=1e5,e=0;i>e;e++);o=(new Date).getTime(),i=1e5*r/(o-s),i=i>1e7?1e7:i;for(var e=0;i>e;e++);}}}catch(a){}},registerFocusEvent:function(e){var e=e||this.win;this.winFocused=!0,this.browser.ie?(this.dom.bind(e,"focusin",t.proxy(this,this.allDomOnFocusHandler)),this.dom.bind(e,"focusout",t.proxy(this,this.allDomOnBlurHandler))):(this.dom.bind(e,"focus",t.proxy(this,this.allDomOnFocusHandler)),this.dom.bind(e,"blur",t.proxy(this,this.allDomOnBlurHandler)))},allDomOnFocusHandler:function(t){this.winFocused=!0},allDomOnBlurHandler:function(t){this.winFocused=!1}}),t.define({name:"unionDelivery",namespace:"dup.business.delivery",deps:{slot:"dup.business.slot"},launch:function(){var t,e=window.cpro_id;window.cpro_id=null,e&&(t=this.slot.createSlot({slotId:e,productLine:"union",isAsync:!1}),this.slot.addSlot(t));var i=window.cproArray;if(window.cproArray=null,i)for(var n=0,o=i.length;o>n;n++)t=this.slot.createSlot({slotId:i[n].id,productLine:"union",isAsync:!0}),this.slot.addSlot(t);var r=window.cpro_mobile_slot;if(window.cpro_mobile_slot=null,r)for(var n=0,o=r.length;o>n;n++){var s=r[n];t=this.slot.createSlot({slotId:s.id,productLine:"union",isAsync:!0}),t.styleOpenApi=t.styleOpenApi||{};for(var a in s)a&&s[a]&&s.hasOwnProperty(a)&&(t.styleOpenApi[a]=s[a]);this.slot.addSlot(t)}this.slot.process()}}),t.define({name:"dupDelivery",namespace:"dup.business.delivery",deps:{slot:"dup.business.slot","interface":"dup.business.interface"},launch:function(){this.delieveryObjArray=this.delieveryObjArray||[],window.BAIDU_DUP=window.BAIDU_DUP||[],window.BAIDU_DUP&&window.BAIDU_DUP instanceof Array&&(this.delieveryObjArray=this.delieveryObjArray.concat(window.BAIDU_DUP),window.BAIDU_DUP=[]),this.updateApi(),this.process()},updateApi:function(){window.BAIDU_DUP=this,window.BAIDU_DUP.load=!0,this["interface"].register("fill",this,this.fill),this["interface"].register("fillAsync",this,this.fillAsync)},process:function(){for(var t=0,e=this.delieveryObjArray.length;e>t;t++){var i=this.delieveryObjArray[t];if(i instanceof Array){var n=i.splice(0,1)[0],o=i;this["interface"].perform(n,o)}}this.delieveryObjArray=[],this.slot.process()},push:function(t){this.delieveryObjArray=this.delieveryObjArray&&[],this.delieveryObjArray.push(t),this.process()},fill:function(t){var e=this.slot.createSlot({slotId:t,productLine:"dup",isAsync:!1});this.slot.addSlot(e),this.slot.process()},fillAsync:function(t,e){var i=this.slot.createSlot({slotId:t,productLine:"dup",isAsync:!0});i.containerId=e,this.slot.addSlot(i),this.slot.process()}}),t.define({name:"standardDelivery",namespace:"dup.business.delivery",deps:{config:"dup.common.config",slot:"dup.business.slot","interface":"dup.business.interface",param:"dup.business.param",data:"dup.common.utility.data",additionalParam:"dup.business.parameter.additionalParam"},launch:function(){this.delieveryObjArray=this.delieveryObjArray||[],window.slotbydup=window.slotbydup||[],window.slotbydup&&window.slotbydup instanceof Array&&(this.delieveryObjArray=this.delieveryObjArray.concat(window.slotbydup),window.slotbydup=[]),this.updateApi(),this.process()},process:function(){for(var t,e=0,i=this.delieveryObjArray.length;i>e;e++){var n=this.delieveryObjArray[e];if(n.hasOwnProperty("id")){var o=!1;if(n.hasOwnProperty("isAsync")&&n.isAsync?o=n.isAsync:n.hasOwnProperty("async")&&n.async&&(o=n.async),t=this.slot.createSlot({slotId:n.id,productLine:"adcodex",isAsync:o}),this.additionalParam.paramCheck(t,n),t.containerId=n.container||t.containerId,t.display=n.display,t.rpdn=n.rpdn||"",t.ftpc=n.ftpc||!1,t.size=n.size||"",t.pcwd=n.pcwd||"",t.pchd=n.pchd||"",!t.styleOpenApi.cpro_w&&!t.styleOpenApi.cpro_h){var r,s=n.size;if(s&&s.indexOf(":")>-1){r=s.split(":");var a=this.param.translateScaleToPixelSize(r[0],r[1]);t.width=a.width,t.height=a.height}}this.slot.addSlot(t);var d="cpro_set_baiduRec_jsonpCb";n[d]&&n.hasOwnProperty(d)&&this.data.putInfo("baiduRecCallback",n.cpro_set_baiduRec_jsonpCb||"")}else this["interface"].executeTask(n)}this.delieveryObjArray=[],this.slot.process()},updateApi:function(){window.slotbydup=this,window.slotbydup.load=!0},push:function(t){this.delieveryObjArray=this.delieveryObjArray&&[],this.delieveryObjArray.push(t),this.process()}}),t.define({name:"expand",namespace:"dup.ui.painter",deps:{config:"dup.common.config",dom:"dup.common.utility.dom",style:"dup.common.utility.style",event:"dup.common.utility.event",slot:"dup.business.slot"},validate:function(t){return!0},sendMessage:function(t,e){var i=this.slot.getSlotInfo(t),n=this.dom.g(i.containerId);if(n){var o=n.getElementsByTagName("iframe")[0];e=JSON.stringify(e),o.contentWindow.postMessage(e,"*")}},getComputedWidth:function(t){return window.getComputedStyle?window.getComputedStyle(t).width:t.currentStyle.width},init:function(){function t(t){var i=JSON.parse(t.data);if(!i.title||"baidudup"!=i.title)return!1;if("invokeMethod"==i.type)switch(i.method){case"expand":e.expandAd(i.parameters[0]);break;case"close":e.collapseAd(i.parameters[0])}}var e=this;(window.addEventListener||window.attachEvent)&&JSON&&JSON.parse&&this.event.bind(window,"message",t),this.event.bind(window,"scroll",function(){e.adjustPosWhenViewportChanged()}),this.event.bind(window,"resize",function(){e.adjustPosWhenViewportChanged()})},adjustPosWhenViewportChanged:function(){var t=this.scrollObserver;t.up,t.down,t.left,t.right;for(var e in t)for(var i in t[e]){var n=t[e][i];if(!n.isExpand)return;var o=n.origin,r=o.getElementsByTagName("iframe")[0],s=(n.targetWidth,n.targetHeight,n.originWidth);n.originHeight;switch(e){case"up":var a=parseInt(this.getComputedWidth(o),10);r.style.left=0;break;case"down":var a=parseInt(this.getComputedWidth(o),10);r.style.left=0;break;case"left":var a=parseInt(this.getComputedWidth(o));r.style.right=a-s+"px";break;case"right":var a=parseInt(this.getComputedWidth(o));r.style.left=0}}},$expand:function(){this.observerObjs=[],this.expandStatus={},this.timers={},this.hasInit=!1,this.maxExpandTime=5e3,this.canFixed=this.style.canFixed(),this.scrollObserver={up:{},down:{},left:{},right:{}}},registerScrollSubject:function(t,e,i,n,o,r,s){if(!this.scrollObserver[t][e]){var a=this.scrollObserver[t][e]={};a.isExpand=!0,a.origin=i,a.originWidth=n,a.originHeight=o,a.targetWidth=r,a.targetHeight=s}},expand2Up:function(t,e,i,n,o,r){this.registerScrollSubject("up",t,e,i,n,o,r);var s=e.getElementsByTagName("iframe")[0];parseInt(this.getComputedWidth(e));s.style.bottom=0,s.style.left=0},expand2Down:function(t,e,i,n,o,r){this.registerScrollSubject("down",t,e,i,n,o,r);var s=e.getElementsByTagName("iframe")[0];parseInt(this.getComputedWidth(e));s.style.top=0,s.style.left=0},expand2Left:function(t,e,i,n,o,r){this.registerScrollSubject("left",t,e,i,n,o,r);var s=e.getElementsByTagName("iframe")[0],a=parseInt(this.getComputedWidth(e));s.style.bottom=0,s.style.right=a-i+"px"},expand2Right:function(t,e,i,n,o,r){this.registerScrollSubject("right",t,e,i,n,o,r);var s=e.getElementsByTagName("iframe")[0];parseInt(this.getComputedWidth(e));s.style.bottom=0,s.style.left=0},expandAd:function(t){if(!this.expandStatus[t]){this.expandStatus[t]=!0;var e=this.slot.getSlotInfoByRawId(t),i=e.response.placement.container,n=i.width,o=i.height,r=e.response.placement.container.slide,s=r.slideWidth,a=r.slideHeight,d=1e3*parseInt(r.extendTime,10),l=parseInt(r.slideMode,10),c=parseInt(r.direction,10),h=e.containerId,u=this.dom.g(h),p=u.getElementsByTagName("iframe")[0];if(1===c||2===c?(p.setAttribute("height",a),p.style.height=a+"px"):3!==c&&4!==c||(p.setAttribute("width",s),p.style.width=s+"px"),2==l&&2==c||2==l&&4==c)switch(c){case 2:p.setAttribute("height",a),p.style.height=a+"px";break;case 4:p.setAttribute("width",s),p.style.width=s+"px"}else switch(u.style.position="relative",p.style.position="absolute",u.style.height=o+"px",c){case 1:this.expand2Up(t,u,n,o,s,a);break;case 2:this.expand2Down(t,u,n,o,s,a);break;case 3:this.expand2Left(t,u,n,o,s,a);break;case 4:this.expand2Right(t,u,n,o,s,a)}var m=this;this.timers[t]=setTimeout(function(){m.expandStatus[t]&&m.collapseAd(t)},Math.min(d))}},collapseAd:function(t){if(this.expandStatus[t]){this.expandStatus[t]=!1,clearTimeout(this.timers[t]);var e=this.slot.getSlotInfoByRawId(t),i=e.response.placement.container,n=i.width,o=i.height,r=e.containerId,s=this.dom.g(r),a=s.getElementsByTagName("iframe")[0];s.style.position="",s.style.width="",s.style.height="",s.style.top="",s.style.left="",a.style.position="",a.style.display="",a.style.top="",a.style.left="",a.style.right="",a.style.width="",a.style.height="",a.setAttribute("height",o),a.setAttribute("width",n);for(var d in this.scrollObserver)for(var l in this.scrollObserver[d])l==t&&(this.scrollObserver[d][l].isExpand=!1)}},observer:function(t){var t=this.slot.getSlotInfoByRawId(t.slotId),e=t.response.placement.container.slide,i=t.containerId,n=this.dom.g(i);e.slideMode,e.direction;n.style.textAlign="left",this.hasInit||(this.hasInit=!0,this.init())},fire:function(t,e){var i,n=function(t){return"[object Array]"==Object.prototype.toString.call(t)},o=this.slot.getSlotInfoByRawId(e),r=o.response.placement.container.slide;r&&(i=r.trigger);var s=n(i)?i[0]:i?i:0,a=["","BEFORE_PAGELOAD","AFTER_PAGECLOSE","PAGE_PERCENT","mouseover","click","adloaded","SLIP"];a[s]===t&&this.sendMessage(e,{title:"baidudup",type:"eventHappen",parameters:[t]})}}),t.define({name:"frame",namespace:"dup.business",deps:{config:"dup.common.config",slot:"dup.business.slot",material:"dup.business.material",log:"dup.common.utility.log",requestCache:"dup.business.requestCache",param:"dup.business.param",lang:"dup.common.utility.lang",data:"dup.common.utility.data",viewWatch:"dup.business.viewWatch",creativePreview:"dup.business.creativePreview"},checkRichAdType:function(t){for(var e="",i=["dui-lian","popup","right-down","slide","top-down","barrier"],n=0;n-1){e=i[n];break}return e},cacheRequestCallback:function(e){var i=e.html||"success";if("success"!==i){var n=this.requestCache.get(e.dpv),o=n.response.pdb_deliv.deliv_des;o=o._html;var r=n.response,s=r.pdb_deliv,a=r.rtb_deliv,d=r.order_deliv;if(0===s.deliv_id&&(0!==parseInt(d.deliv_id,10)||0!==parseInt(a.deliv_id,10))&&"success"!==i&&7===r.placement.complement_type){var l=document.getElementById(n.containerId),c=document.getElementById(n.containerId+"_left"),h=document.getElementById(n.containerId+"_right");return l&&(this.viewWatch.unregisetViewWatch(n),l.parentNode.removeChild(l)),c&&c.parentNode.removeChild(c),void(h&&h.parentNode.removeChild(h))}if(n)if(o.type&&"rich"===o.type){var u=this.material.formatMaterial(o,n),p=document.getElementById(n.containerId),m="";u.indexOf(m)>-1&&(u=u.slice(m.length));var f=this.checkRichAdType(u);if("popup"===f)p.style.display="none";else if("barrier"===f){p.style.display="none";var g=document.getElementById(n.containerId+"_placeholder");g&&(g.style.display="none")}var y=t.using("dup.ui.painter.richMaterial");y.render(n,!0)}else{var v=this.requestCache.secondResult[e.dpv];this.slot.clearStatus(n,this.config.STATUS_FINISH),n.isPdbAd=!0,n.isNeedCacheRequest=!1,v.outerHTML=this.getFrameHTML(n)}}},requireDomainPolicy:function(){function t(t){try{return!t.contentWindow.document}catch(e){return!0}}var e=document.createElement("iframe"),i=!1;return e.src="about:blank",document.body.insertBefore(e,document.body.firstChild),i=t(e),document.body.removeChild(e),this.requireDomainPolicy=function(){return i},i},requireBlankPolicy:function(){var t=navigator.userAgent,e=!(!t||!t.match(/iphone.*micromessenger/i));return this.requireBlankPolicy=function(){return e},e},renderFrame:function(t,e){var i=this.slot.getSlotInfo(t);if(i&&!this.slot.checkStatus(i,this.config.STATUS_FINISH)){var n=i.response.pdb_deliv.deliv_des;n=n._html;var o=this.getFrameUrl();if(this.requireDomainPolicy()&&e.getAttribute("src",2)!==o)return void(e.src=o);if(n&&"url"===n.type)return e.src=n.content,void this.slot.setStatus(i.id,this.config.STATUS_FINISH);try{this.slot.setStatus(i.id,this.config.STATUS_FINISH);var r=this.material.formatMaterial(n,i);r.indexOf("")<0&&(r=""+r);var s=e.contentWindow.document;s.open("text/html","replace"),s.write(r),s.body&&(s.body.style.backgroundColor="transparent")}catch(a){}}},getFrameUrl:function(){return this.requireDomainPolicy()?this.data.getConfig("domainPolicyFileUrl")||"/domain-policy.htm":this.requireBlankPolicy()?this.data.getConfig("blankPolicyFileUrl")||"/blank-policy.htm":"about:blank"},getFrameHTML:function(t,e){e=e||"iframe"+t.id,t.iframeId=e;var i=this.processFrameData(t);return this.renderFrameHTML(i)},processFrameData:function(e){var i,n,o="",r=[];if(e.response){var s=e.response.placement;n=s.container;try{r=s.fillstyle.elements||[]}catch(a){}}var d=e.width||n&&n.width,l=e.height||n&&n.height,c=this.creativePreview.getPreviewUrl(d,l,r,e.displayType||"inlay");if(c)i=c;else if(e.isPdbAd){var h=this.config.DUP_PREFIX+"renderFrame";this.data.defineOnce(h,t.proxy(this,this.renderFrame)),i=this.getFrameUrl(),o='onload="'+h+"('"+e.id+"', this);\""}else if(e.isNeedCacheRequest){var u=this.config.DUP_PREFIX+"cacheRequest",p="adsbybaidu_callback";this.data.defineOnce(p,t.proxy(this,this.cacheRequestCallback)),this.data.defineOnce(u,t.proxy(this.requestCache,this.requestCache.cacheRequest)),i=this.param.getPmpRequestUrl(e),o='onload="'+u+"('"+e.paramObj.dpv+"', this);\""}else i=this.param.getPmpRequestUrl(e);var m={};return m.iframeId=e.iframeId,m.srcAttriName="src",m.onloadDefine=o,m.iframeWidth=""+d,m.iframeHeight=""+l,m.url=i,m},renderFrameHTML:function(t){var e=["',""].join("");return this.lang.template(e,t)}}),t.define({name:"richMaterial",namespace:"dup.ui.painter",deps:{dom:"dup.common.utility.dom",config:"dup.common.config",slot:"dup.business.slot",param:"dup.business.param",frame:"dup.business.frame",log:"dup.common.utility.log",data:"dup.common.utility.data"},isNeededNode:function(t,e){return t.nodeName&&t.nodeName.toUpperCase()===e.toUpperCase()},evalScript:function(t,e){try{var i=document.createElement("script");i.type="text/javascript",t.src?i.src=t.src:i.text=t.text||t.textContent||t.innerHTML||"",e.insertBefore(i,e.firstChild)}catch(n){this.log.monitorLog({error:"createscripterror",status:"renderFail"})}},render:function(t,e){try{if(!t.response)return;var i=t.response,n=(i.rtb_deliv,i.order_deliv,i.pdb_deliv.deliv_des),o=n._html,r=t.isNeedCacheRequest;if(!e&&(!o||"rich"!==o.type||r))return!1;var s=o.content}catch(a){}if(!t.isAsync&&!r)return document.write(s),this.slot.setStatus(t.id,this.config.STATUS_FINISH),!0;var d=this.dom.g(t.containerId);if(d&&t.isAsync&&("clb"===t.productLine||"dup"===t.productLine)&&!r){var l=this.frame.getFrameHTML(t);return d.innerHTML=l,!0}if(!d)return!1;d.innerHTML='ie'+s;for(var c=d.childNodes,h=[],u=0;c[u];u++)!this.isNeededNode(c[u],"script")||c[u].type&&"text/javascript"!==c[u].type.toLowerCase()||h.push(c[u]);h.reverse();for(var p=0,m=h.length;m>p;p++)this.evalScript(h[p].parentNode.removeChild(h[p]),d);return!0}}),t.define({name:"floatBlock",namespace:"dup.ui.painter",deps:{config:"dup.common.config",style:"dup.common.utility.style",log:"dup.common.utility.log",dom:"dup.common.utility.dom",lang:"dup.common.utility.lang",cookie:"dup.common.utility.cookie",unicode:"dup.common.utility.unicode",frame:"dup.business.frame",slot:"dup.business.slot",deliveryLimit:"dup.business.deliveryLimit"},GAP:5,NORMAL_CLOSE_BTN_HEIGHT:17,COUPLET_CLOSE_BTN_HEIGHT:20,validate:function(t){if("union"===t.productLine){var e=this.deliveryLimit.TYPE.POPUP;"couplet"!==t.blockType&&"button"!==t.blockType||(e=this.deliveryLimit.TYPE.COUPLET);var i=this.validateLimit(e);if(!i)return!1;this.deliveryLimit.setAdsCount(e,t.domId)}var n=this.getCloseCookieName(t);return 2!==t.closeType||!this.cookie.get(n)},validateLimit:function(t){var e=this.deliveryLimit.getAdCount(t),i=this.deliveryLimit.MAX_COUNT[t];return i>e?!0:void 0},createBlockHtmlTemplate:function(t){var e=["{iframe}","{closeBtn}"].join("");if(!t.blockType||"default"===t.blockType)return e;var i=["box-sizing: content-box;","width:{width}px;","height:{height}px;","padding:4px;","border:#acacac 1px solid;","overflow:hidden;"];return"button"!==t.blockType&&"popup"!==t.blockType||i.push("position:absolute;left:0;top:"+(this.COUPLET_CLOSE_BTN_HEIGHT+this.GAP)+"px;"),e=['
            ',"{iframe}","
            ","{closeBtn}"].join("")},createCloseElement:function(t){var e={},i="\\u5FAE\\u8F6F\\u96C5\\u9ED1",n="\\u5173\\u95ED",o=t.domId+"_closebtn",r=this;return e.couplet=function(){var e=["box-sizing: content-box;","position:absolute;","width:"+t.containerWidth+"px;","height:20px;","top:"+(t.containerHeight-this.COUPLET_CLOSE_BTN_HEIGHT)+"px;","left:0;","cursor:pointer;","background-color:#999999;","color:#fff;font-size:12px;","font-family: "+r.unicode.toDecode(i)+";","text-align:center;line-height:20px;"].join(""),s='
            '+r.unicode.toDecode(n)+"
            ";return s},e.button=e.popup=function(){var e=61,i=t.containerWidth-e,n="\\u5FAE\\u8F6F\\u96C5\\u9ED1",s="\\u5173\\u95ED",a=["box-sizing: content-box;","position:absolute;width:"+e+"px;","height:20px;top:0;","left:"+i+"px;","margin:0;padding:0;margin-bottom:5px;","cursor:pointer;overflow:hidden;"].join(""),d=['
            ','
            '+r.unicode.toDecode(s)+"
            ",'',"
            "].join("");return d},e["default"]=function(){var e="https://cpro.baidustatic.com/cpro/ui/noexpire/img/clb/1.0.0/close.gif",i=["box-sizing: content-box;","height:15px;","border:1px solid #e1e1e1;","background:#f0f0f0;","margin:0;","padding:0;","overflow:hidden;"].join(""),n=["box-sizing: content-box;","float:right;","clear:right;","margin:2px 5px 0 0;","width:39px;","height:13px;","cursor:pointer;","background:url("+e+") no-repeat scroll 0 0;"].join(""),o=['
            ','","","
            "].join("");return o},e[t.blockType]()},getVerticalStyle:function(t){var e=t.vSpace||10;"center"===t.verticalType&&(e=.5*(this.style.getClientHeight()-t.containerHeight));var i=t.verticalType;return i&&"center"!==i||(i="top"),{cssName:i,cssValue:e}},getHorizontalStyle:function(t){var e=t.hSpace||10;if(t.contentWidth>0&&1===t.dockType){var i=Math.floor(.5*(this.style.getClientWidth()-t.contentWidth));i>=t.width&&(e="right"===t.horizontalType?i-t.containerWidth-e:i-t.containerWidth-e)}else"center"===t.horizontalType&&(e=.5*(this.style.getClientWidth()-t.containerWidth));var n=t.horizontalType;return n&&"center"!==n||(n="left"),{cssName:n,cssValue:e}},createContainerElementByInfo:function(t){var e=null;this.dom.g(t.domId)?e=this.dom.g(t.domId):(e=document.createElement("div"),e.id=t.domId);var i=["box-sizing: content-box;","width: "+t.containerWidth+"px;","height: "+t.containerHeight+"px;","overflow: hidden;","z-index: 2147483647;"];if(1===t.followType){if(this.style.canFixed())i.push("position: fixed;");else{i.push("position: absolute;"),this.updatePosition(t,e);var n=this;this.dom.bind(window,"scroll",function(){n.updatePosition(t,t.domId)}),this.dom.bind(window,"resize",function(){n.updatePosition(t,t.domId)})}var o=this.getVerticalStyle(t),r=this.getHorizontalStyle(t);i.push(o.cssName+":"+o.cssValue+"px;"),i.push(r.cssName+":"+r.cssValue+"px;")}else{i.push("position: absolute;");var o=this.getVerticalStyle(t),r=this.getHorizontalStyle(t);i.push(o.cssName+":"+o.cssValue+"px;"),i.push(r.cssName+":"+r.cssValue+"px;")}return e.style.cssText=i.join(""),e},updatePosition:function(t,e){var i=this.dom.g(e);if(i){var n=i.style,o="CSS1Compat"!==document.compatMode,r=o?document.body:document.documentElement,s=(r.clientWidth,r.clientHeight),a=(window.pageXOffset||r.scrollLeft,window.pageYOffset||r.scrollTop);t.contentWidth>0&&1===t.dockType;"top"===t.verticalType||0===t.verticalType.length?n.top=a+t.vSpace+"px":n.top=a+s-t.vSpace-t.containerHeight+"px"}},getCloseCookieName:function(t){var e="bd_close_"+t.id;return"couplet"!==t.blockType&&"button"!==t.blockType||(e+="_"+t.horizontalType),e},setCookieClose:function(t){var e=this.getCloseCookieName(t),i=new Date;i.setTime(i.getTime()+9e5),this.cookie.set(e,!0,{expires:i,path:"/"})},registEvent:function(e){var i=e.domId+"_closebtn",n=this.dom.g(i);this.dom.bind(n,"click",t.proxy(this,this.closeBtnOnClickHandler)),this.dom.bind(n,"mouseover",t.proxy(this,this.closeBtnOnMouseOverHandler)), +this.dom.bind(n,"mouseout",t.proxy(this,this.closeBtnOnMouseOutHandler))},closeBtnOnClickHandler:function(){var t=document.getElementById(this.info.domId);t&&t.parentNode&&t.parentNode.removeChild(t),2===this.info.closeType&&this.setCookieClose(this.info);var e="//eclick.baidu.com/fcb.jpg?jk={jk}&dt={dt}&rnd={rnd}",i={jk:this.info.queryId||"",dt:(new Date).getTime(),rnd:Math.floor(2147483648*Math.random())};try{this.log.loadImage(this.lang.template(e,i))}catch(n){}},closeBtnOnMouseOverHandler:function(){var t=this.info.domId+"_closebtn",e=this.dom.g(t);if(e)if("couplet"===this.info.blockType)e.style.backgroundColor="#0066cc";else if("popup"===this.info.blockType||"button"===this.info.blockType){var i=e.getElementsByTagName("div")[0];i.style.backgroundColor="#0066cc";var n=e.getElementsByTagName("a")[0];n.style.backgroundImage="url(https://cpro.baidustatic.com/cpro/ui/noexpire/img/2.0.0/xuanfu_mouseover_close.png)"}},closeBtnOnMouseOutHandler:function(){var t=this.info.domId+"_closebtn",e=this.dom.g(t);if(e)if("couplet"===this.info.blockType)e.style.backgroundColor="#999999";else if("popup"===this.info.blockType||"button"===this.info.blockType){var i=e.getElementsByTagName("div")[0];i.style.backgroundColor="#999999";var n=e.getElementsByTagName("a")[0];n.style.backgroundImage="url(https://cpro.baidustatic.com/cpro/ui/noexpire/img/2.0.1/xuanfu_close.png)"}},autoClose:function(){var t=document.getElementById(this.adInfo.domId);t&&t.parentNode&&t.parentNode.removeChild(t)},render:function(e,i){if(this.validate(e)){this.info=e;var n=this.createCloseElement(e),o=this.createBlockHtmlTemplate(e),r={width:e.width,height:e.height,iframe:this.frame.getFrameHTML(i,e.domId+"_iframe"),closeBtn:n},s=this.createContainerElementByInfo(e);s.innerHTML=this.lang.template(o,r),this.dom.g(e.domId)||document.body.insertBefore(s,document.body.firstChild),this.registEvent(e);var a=e.closeTime||0;a>0&&setTimeout(t.proxy(this,this.autoClose),1e3*a),i.isPdbAd||this.slot.setStatus(i.id,this.config.STATUS_FINISH)}}}),t.define({name:"inlayFix",namespace:"dup.ui.painter.mobile",deps:{config:"dup.common.config",lang:"dup.common.utility.lang",style:"dup.common.utility.style",dom:"dup.common.utility.dom",slot:"dup.business.slot",param:"dup.business.param",expand:"dup.ui.painter.expand",monitor:"dup.business.monitor",frame:"dup.business.frame",richMaterial:"dup.ui.painter.richMaterial",landingPage:"dup.ui.painter.landingPage"},$inlayFix:function(){this.win=window},processSlotInfo:function(t){var e={},i=t.response.placement,n=i.container,o=(i.fillstyle,n.sizeType),r=n.width,s=n.height;if(t.styleOpenApi.scale){o=2;var a=t.styleOpenApi.scale,d=a.split(".");r=d[0],s=d[1]}if(1===o)e.width=r,e.height=s;else if(2===o||5===o){t.pcwd||t.ftpc?(e.wScale=t.pcwd||"-1",t.styleOpenApi.cpro_ftpc="true"):e.wScale=r,t.pchd?e.hScale=t.pchd:e.hScale=s;var l={},c=t.styleOpenApi.cpro_ftpc||"true"===t.styleOpenApi.cpro_ftpc||"-1"===e.wScale;c=5===o?!0:c;var h=this.dom.g(t.containerId);c&&h&&h.parentElement.clientWidth&&(l.width=h.parentElement.clientWidth||0),"-1"===e.hScale&&h&&h.parentElement&&(l.height=h.parentElement.clientHeight||0);var u=this.param.translateScaleToPixelSize(e.wScale,e.hScale,l);n.width=u.width,n.height=u.height,t.width=u.width,t.height=u.height,e.width=u.width,e.height=u.height}else if(3===o){var p=this.getCurViewportWidth(r);n.width=t.width=e.width=p,n.height=t.height=e.height=s}e.sizeType=o;var m=t.styleOpenApi,f=m.cpro_w||m.rsi0||0,g=m.cpro_h||m.rsi1||0;return(f||g)&&(e.width=f||this.getCurViewportWidth(r),e.height=g||s,t.width=e.width,t.height=e.height),e},getCurViewportWidth:function(t){var e=this.isUnionPreview?t:Math.max(320,this.win.innerWidth);return isNaN&&isNaN(e)&&(e=this.style.getClientWidth()),e},parseHtmlSnippet:function(t){var e=['
            ',"{closeBtnHtml}","{iframeHtml}","
            "].join("");return this.lang.template(e,t)},decorateContainer:function(t,e){if(t){var i=t.style;i.cssText=["box-sizing: content-box;","text-align:center;","display:block;","font-size:0;","width:100%;","height:"+e.height+"px;"].join("")}},validate:function(t){return!0},render:function(t){if(this.slot.setStatus(t.id,this.config.STATUS_RENDERED),this.validate(t)){if(!this.slot.adInfoIsAvailable(t))return!1;this.monitor.sendLog(t),t.displayType="inlay-mobile";var e=this.dom.g(t.containerId);if(e){this.monitor.sendLog(t);var i=this.richMaterial.render(t),n=this;if(i)return void(this.supportPostMessage&&setTimeout(function(){n.expand.fire("adloaded",t.id)},800));this.landingPage.activate(t);var o=this.processSlotInfo(t);if(this.decorateContainer(e,o),t.width=o.width,t.height=o.height,2===o.sizeType||5===o.sizeType){var r=t.response.pdb_deliv.deliv_des;if(r&&r._html){r=r._html;var s=r.type;"text"!==s&&"image"!==s&&"flash"!==s||(r.width=t.width,r.height=t.height)}}var a={id:t.id,width:o.width,height:o.height,closeBtnHtml:"",iframeHtml:this.frame.getFrameHTML(t)},d=this.parseHtmlSnippet(a);e.innerHTML=d,t.isPdbAd||this.slot.setStatus(t.id,this.config.STATUS_FINISH)}}}}),t.define({name:"float",namespace:"dup.ui.painter.mobile",deps:{config:"dup.common.config",lang:"dup.common.utility.lang",style:"dup.common.utility.style",dom:"dup.common.utility.dom",cookie:"dup.common.utility.cookie",slot:"dup.business.slot",frame:"dup.business.frame",monitor:"dup.business.monitor",richMaterial:"dup.ui.painter.richMaterial",painter:"dup.ui.painter.mobile.inlayFix",hiddenFloatAd:"dup.ui.painter.hiddenFloatAd"},$float:function(){},"float":function(){},processSlotInfo:function(t){var e=t.response.placement,i=e.container,n=e.fillstyle,o=parseFloat(n.opacity||.9),r=n.backgroundColor||"#000",s=this.painter.processSlotInfo(t);s.backgroundOpacity=o,s.backgroundColor=r;var a=i.location;return 2!==a&&3!==a&&(a=3),s.locationType=a,s.containerId=t.containerId,s.closeType=i.closeType,s},parseHtmlSnippet:function(t){var e=['
            ',"{closeBtnHtml}","{iframeHtml}","
            "].join("");return this.lang.template(e,t)},parseCloseBtnLayoutData:function(t){var e=40,i=40,n=0,o="",r=Math.max(document.documentElement.clientWidth,window.innerWidth||0);e=r*(1/8),i=.4*e,n=16*(e/50);var s=0;2===t.locationType?(o=4,s=t.height):3===t.locationType&&(o=3,s="-"+i);var a={domId:t.containerId,right:n,top:s,closeBtnWidth:""+e,closeBtnHeight:i,closeBtnImgUrl:"https://cpro.baidustatic.com/cpro/ui/noexpire/img/2.0.0/xuantingClose"+o+".png"};return a},parseCloseButtonHtml:function(t){var e=[" 
            '].join(""),i=this.parseCloseBtnLayoutData(t);return this.lang.template(e,i)},decorateContainer:function(t,e){if(t){var i="absolute";this.style.canFixed()&&(i="fixed");var n="";2===e.locationType?n="top":3===e.locationType&&(n="bottom");var o=0;"absolute"===i&&(o=this.style.getScrollTop(window)+this.style.getClientHeight(window)-e.height);var r=t.style;r.cssText=["box-sizing: content-box;","position:"+i,"z-index:2147483647;",n+":"+o,"background-color:"+e.backgroundColor,"opacity:"+e.backgroundOpacity,"text-align:center","display:block","font-size:0","width:100%","height:"+e.height+"px"].join(";")}},getCloseCookieKey:function(t){return"bd_close_"+t.id},closeBtnOnClickHandler:function(t,e){var i=this.dom.g(e.containerId);if(i&&i.parentNode&&i.parentNode.removeChild(i),2===e.closeType){var n="bd_close_"+this.id,o={path:""};this.cookie.set(n,!0,o)}},validate:function(t){var e="bd_close_"+this.id,i=this.cookie.get(e,window);return 2!==t.closeType||!i},render:function(e){if(!this.slot.adInfoIsAvailable(e))return!1;this.slot.setStatus(e.id,this.config.STATUS_RENDERED),this.id=e.id,e.displayType="inlay-mobile";var i=this.processSlotInfo(e);if(this.validate(i)){this.monitor.sendLog(e);var n=this.richMaterial.render(e);if(!n){var o=this.dom.g(e.containerId);if(o){this.decorateContainer(o,i),e.width=i.width,e.height=i.height;var r=this.parseCloseButtonHtml(i);if(2===i.sizeType){var s=e.response.pdb_deliv.deliv_des;if(s&&s._html){s=s._html;var a=s.type;"text"!==a&&"image"!==a&&"flash"!==a||(s.width=e.width,s.height=e.height)}}var d={id:e.id,width:i.width,height:i.height,closeBtnHtml:r,iframeHtml:this.frame.getFrameHTML(e)},l=this.parseHtmlSnippet(d);document.body.insertBefore(o,document.body.firstChild),o.innerHTML=l;var c=this.dom.g(e.containerId+"_closebtn");c&&this.dom.bind(c,"click",t.proxy(this,this.closeBtnOnClickHandler,e)),this.hiddenFloatAd.render(e),e.isPdbAd||this.slot.setStatus(e.id,this.config.STATUS_FINISH)}}}}}),t.define({name:"clbDelivery",namespace:"dup.business.delivery",deps:{slot:"dup.business.slot",frame:"dup.business.frame","interface":"dup.business.interface",config:"dup.common.config",log:"dup.common.utility.log",origentation:"dup.business.origentation",data:"dup.common.utility.data"},clbSlotArr:{BAIDU_CLB_fillSlot:!0,BAIDU_CLB_singleFillSlot:!0,BAIDU_CLB_fillSlotWithSize:!0,BAIDU_CLB_fillSlotAsync:!0,BAIDU_CLB_preloadSlots:!0},launch:function(){var e;try{var i=window.BAIDU_CLB_SLOT_ID;window.BAIDU_CLB_SLOT_ID=null,i&&(e=this.slot.createSlot({slotId:i,productLine:"clb",isAsync:!1}),this.slot.addSlot(e),this.slot.process());for(var n in this.clbSlotArr)"BAIDU_CLB_preloadSlots"===n?this.data.defineOnce(n,t.proxy(this,this.reSet)):this.data.defineOnce(n,t.proxy(this,this.getClbFillSlot));this.updateApi()}catch(o){}},reSet:function(){},getClbFillSlot:function(t,e){var i;t&&!e&&(i=this.slot.createSlot({slotId:t,productLine:"clb",isAsync:!1})),t&&e&&(i=this.slot.createSlot({slotId:t,productLine:"clb",isAsync:!0}),i.containerId=e),this.slot.addSlot(i),this.slot.process()},updateApi:function(){try{this.data.defineOnce("BAIDU_CLB_prepareMoveSlot",t.proxy(this,this.prepareMove)),this.data.defineOnce("BAIDU_DUP_addSlotStatusCallback",t.proxy(this.origentation,this.origentation.addSlotStatusCallback)),this.data.defineOnce(this.config.DUP_PREFIX+"renderFrame",t.proxy(this.frame,this.frame.renderFrame)),this.data.defineOnce("BAIDU_CLB_setConfig",t.proxy(this.data,this.data.putConfig)),this.data.defineOnce("BAIDU_CLB_addOrientation",t.proxy(this.origentation,this.origentation.addOrientation)),this.data.defineOnce("BAIDU_CLB_addOrientationOnce",t.proxy(this.origentation,this.origentation.addOrientationOnce)),this.data.defineOnce("BAIDU_CLB_setOrientationOnce",t.proxy(this.origentation,this.origentation.setOrientationOnce)),this.data.defineOnce("BAIDU_CLB_addSlot",t.proxy(this,this.reSet)),this.data.defineOnce("BAIDU_CLB_enableAllSlots",t.proxy(this,this.reSet)),this.data.defineOnce("BAIDU_CLB_SETHTMLSLOT",t.proxy(this,this.reSet))}catch(e){}},prepareMove:function(t){try{for(var e=0,i=t+"_"+e;this.slot.getSlotInfo(i)&&0!==this.slot.getSlotInfo(i)[0];){var n=this.slot.getSlotInfo(i);this.slot.clearStatus(n,this.config.STATUS_FINISH),i=t+"_"+ ++e}}catch(o){}}}),t.define({name:"inlayFix",namespace:"dup.ui.painter",deps:{config:"dup.common.config",dom:"dup.common.utility.dom",slot:"dup.business.slot",frame:"dup.business.frame",viewWatch:"dup.business.viewWatch",richMaterial:"dup.ui.painter.richMaterial",monitor:"dup.business.monitor",expand:"dup.ui.painter.expand",event:"dup.common.utility.event",lang:"dup.common.utility.lang",browser:"dup.common.utility.browser",deliveryLimit:"dup.business.deliveryLimit"},$inlayFix:function(){this.supportPostMessage=!(this.browser.ie&&this.browser.ie<8)},bindEvent4Expand:function(t){var e=this.dom.g(t.containerId),i=this;this.event.bind(e,"mouseover",function(e){var n=e.target||e.srcElement;"iframe"!==n.tagName.toLowerCase()&&"iframe"!==n.nodeName.toLowerCase()||i.expand.fire("mouseover",t.id)})},validate:function(t){if("union"===t.productLine){var e=this.deliveryLimit.getSlotType(t),i=this.deliveryLimit.validate(t);return i&&this.deliveryLimit.setAdsCount(e,t.containerId),i}return!0},render:function(t){this.slot.setStatus(t.id,this.config.STATUS_RENDERED);var e=this.dom.g(t.containerId);if(!this.slot.adInfoIsAvailable(t))return this.slot.setStatus(t.id,this.config.STATUS_FINISH),!1;t.displayType="inlay";var i=null==t.response?null:t.response.placement.container.slide,n=!(!i||this.lang.isEmptyObj(i)||!this.supportPostMessage);if(n&&(this.expand.observer(t),this.bindEvent4Expand(t)),this.validate(t)){this.monitor.sendLog(t);var o=this.richMaterial.render(t),r=this;if(o)return void(this.supportPostMessage&&setTimeout(function(){r.expand.fire("adloaded",t.id)},800));if(!e)return void this.slot.addErrorInfo(t,"container dom not founded");var s=this.frame.getFrameHTML(t);e.innerHTML=s,this.viewWatch.regisetViewWatch(t),t.isPdbAd||this.slot.setStatus(t.id,this.config.STATUS_FINISH),n&&setTimeout(function(){r.expand.fire("adloaded",t.id)},800)}}}),t.define({name:"float",namespace:"dup.ui.painter",deps:{config:"dup.common.config",dom:"dup.common.utility.dom",lang:"dup.common.utility.lang",frame:"dup.business.frame",slot:"dup.business.slot",richMaterial:"dup.ui.painter.richMaterial",monitor:"dup.business.monitor",expand:"dup.ui.painter.expand",floatBlock:"dup.ui.painter.floatBlock",viewWatch:"dup.business.viewWatch"},GAP:5,NORMAL_CLOSE_BTN_HEIGHT:17,COUPLET_CLOSE_BTN_HEIGHT:20,validate:function(t){var e=t.response.placement,i=e.container,n=i.floated;if(this.dom.isInIframe(window))return!1;var o=parseInt(n.clientw||0,10);return o>4095&&(o=4095),!(o>=screen.width)},processSlotInfo:function(t){var e=t.response.placement,i=e.container,n=i.floated,o=n.dockType,r=i.closeType,s=i.closeTime||0,a=n.vspace||0,d=n.hspace||0,l=t.response.rtb_deliv.deliv_id&&t.response.order_deliv.deliv_id,c=t.width||i.width,h=t.height||i.height,u=+c,p=+h,m=["default","couplet","button","popup"],f=parseInt(n.blockType||0,10),g=m[f];"default"!==g&&(u+=2*this.GAP+1,p+=2*this.GAP+1),p+="couplet"===g?this.COUPLET_CLOSE_BTN_HEIGHT:"button"===g||"popup"===g?this.COUPLET_CLOSE_BTN_HEIGHT+this.GAP:this.NORMAL_CLOSE_BTN_HEIGHT;var y=i.location,v="",w="";switch(y){case 1:v="center",w="center";break;case 2:v="top";break;case 3:v="bottom";break;case 4:w="left";break;case 5:w="right";break;case 7:v="top",w="left";break;case 8:v="top",w="right";break;case 9:v="bottom",w="left";break;case 10:v="bottom",w="right"}0===a&&"button"===g?(v="bottom",a=40):0===a&&"couplet"===g&&(v="top",a=150);var b=t.response.queryid,I={id:t.id,domId:t.containerId,width:c,height:h,containerWidth:u,containerHeight:p,verticalType:v,horizontalType:w,followType:n.follow||1,blockType:g,dockType:o,closeType:r,closeTime:s,vSpace:a,hSpace:d,contentWidth:n.contw,isRTB:l,queryId:b,productLine:t.productLine};return I},render:function(e){if(this.validate(e)){if(this.slot.setStatus(e.id,this.config.STATUS_RENDERED),!this.slot.adInfoIsAvailable(e))return!1;e.displayType="float",this.monitor.sendLog(e);var i=this.richMaterial.render(e);if(!i){var n=[];n.push(e);var o=e.response.placement,r=o.container,s=parseInt(r.location||0,10);if(6===s){var a=this.slot.cloneSlot(e),d=this.slot.cloneSlot(e);a.response.placement.container.location=5,a.containerId=a.containerId+"_right",this.slot.addSlot(a),n.push(a),d.response.placement.container.location=4,d.containerId=d.containerId+"_left",this.slot.addSlot(d),n.push(d)}for(var l=0,c=n.length;c>l;l++){var h=n[l],u=t.create(this.floatBlock);u.render(this.processSlotInfo(h),h)}this.viewWatch.regisetViewWatch(e)}}}}),t.define({name:"main",namespace:"dup.ui.delivery",deps:{config:"dup.common.config",slot:"dup.business.slot",fingerPrint:"dup.business.fingerPrint",data:"dup.common.utility.data",storage:"dup.common.utility.storage",loader:"dup.common.loader",painterSelector:"dup.business.painterSelector",origentation:"dup.business.origentation",param:"dup.business.param",detect:"dup.business.detect","interface":"dup.business.interface",log:"dup.common.utility.log",scene:"dup.business.sceneTactics",clbDelivery:"dup.business.delivery.clbDelivery",unionDelivery:"dup.business.delivery.unionDelivery",dupDelivery:"dup.business.delivery.dupDelivery",standardDelivery:"dup.business.delivery.standardDelivery",inlayFixPainter:"dup.ui.painter.inlayFix",floatPainter:"dup.ui.painter.float",mobileInlayFixPainter:"dup.ui.painter.mobile.inlayFix",mobileFloatPainter:"dup.ui.painter.mobile.float"},process:function(){this.prepareApi(),this.unionDelivery.launch(),this.dupDelivery.launch(),this.clbDelivery.launch(),this.standardDelivery.launch(),this.fingerPrint.start()},prepareApi:function(){this["interface"].register("addOrientation",this.origentation,this.origentation.addOrientation),this["interface"].register("addOrientationOnce",this.origentation,this.origentation.addOrientationOnce),this["interface"].register("setOrientationOnce",this.origentation,this.origentation.setOrientationOnce),this.data.defineOnce(this.config.LOADER_DEFINE_NAME,t.proxy(this,this.callback))},callback:function(e){try{var i=this.slot.getSlotInfo(e.tuid);i.response=e,this.slot.setStatus(i.id,this.config.STATUS_RESPONSE),this.slot.processSlot(i),i.timestampWatcher.t3=(new Date).getTime(),this.param.processExtendsParam(i);var n=this.painterSelector.getPainter(i),o=t.using(n);o?o.render(i):n&&this.loader.load(i.id,n,t.proxy(this,this.painterLoadedCallback,n,i)),setTimeout(t.proxy(this.slot,this.slot.adInfoStorage,i),3e3)}catch(r){var s=encodeURIComponent(r),a={type:"elog",pos:"callback",id:e.tuid,mes:s};this.log.monitorLog(a)}},painterLoadedCallback:function(e,i){var n=t.using(e);n&&n.render(i)}});var i=t.using("dup.ui.delivery.main");i.process()}(_ssp_global.oojs)}catch(e){var url=["//eclick.baidu.com/se.jpg?","type=fatalError","mes="+encodeURIComponent(e)].join("&"),img=new Image;img.src=url} \ No newline at end of file diff --git a/public/static/index/style/count_zixun.js b/public/static/index/style/count_zixun.js new file mode 100644 index 0000000..42075a6 --- /dev/null +++ b/public/static/index/style/count_zixun.js @@ -0,0 +1,8 @@ +document.writeln(""); +var _hmt = _hmt || []; +(function() { + var hm = document.createElement("script"); + hm.src = "//hm.baidu.com/hm.js?e2558a635df8de4699c2101b454961e3"; + var s = document.getElementsByTagName("script")[0]; + s.parentNode.insertBefore(hm, s); +})(); \ No newline at end of file diff --git a/public/static/index/style/css/morris.css b/public/static/index/style/css/morris.css new file mode 100644 index 0000000..661168a --- /dev/null +++ b/public/static/index/style/css/morris.css @@ -0,0 +1,19 @@ +.morris-hover{ + position:absolute; + z-index:1000; +} +.morris-hover.morris-default-style{ + border-radius:10px; + padding:6px;color:#666; + background:rgba(255, 255, 255, 0.8); + border:solid 2px rgba(230, 230, 230, 0.8); + font-size:12px;text-align:center; +} +.morris-hover.morris-default-style .morris-hover-row-label{ + font-weight:bold; + margin:0.25em 0; +} +.morris-hover.morris-default-style .morris-hover-point{ + white-space:nowrap; + margin:0.1em 0; +} diff --git a/public/static/index/style/css/style.css b/public/static/index/style/css/style.css new file mode 100644 index 0000000..b276da9 --- /dev/null +++ b/public/static/index/style/css/style.css @@ -0,0 +1,191 @@ +/*-- +Author: W3layouts +Author URL: http://w3layouts.com +License: Creative Commons Attribution 3.0 Unported +License URL: http://creativecommons.org/licenses/by/3.0/ +--*/ +/* reset */ +html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,dl,dt,dd,ol,nav ul,nav li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;} +article, aside, details, figcaption, figure,footer, header, hgroup, menu, nav, section {display: block;} +ol,ul{list-style:none;margin:0px;padding:0px;} +blockquote,q{quotes:none;} +blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;} +table{border-collapse:collapse;border-spacing:0;} +/* start editing from here */ +a{text-decoration:none;} +.txt-rt{text-align:right;}/* text align right */ +.txt-lt{text-align:left;}/* text align left */ +.txt-center{text-align:center;}/* text align center */ +.float-rt{float:right;}/* float right */ +.float-lt{float:left;}/* float left */ +.clear{clear:both;}/* clear float */ +.pos-relative{position:relative;}/* Position Relative */ +.pos-absolute{position:absolute;}/* Position Absolute */ +.vertical-base{ vertical-align:baseline;}/* vertical align baseline */ +.vertical-top{ vertical-align:top;}/* vertical align top */ +nav.vertical ul li{ display:block;}/* vertical menu */ +nav.horizontal ul li{ display: inline-block;}/* horizontal menu */ +img{max-width:100%;} +/*end reset*/ +html, body{ + font-size: 100%; + background: #2b82ad; + font-family: 'Varela Round', sans-serif; +} +h1,h2,h3,h4,h5,h6,a,p{ + font-family: 'Varela Round', sans-serif; + margin:0; +} +ul,label{ + margin:0; + padding:0; +} +body a:hover,body a{ + text-decoration:none; +} +body h1 { + text-align: center; + margin: 1em 0 1em 0; + color: #fff; + font-size:3.1em; + font-weight: 300; + letter-spacing:4px; +} +/*--graph--*/ +.main{ + margin:0 auto; + text-align:center;width:50%; +} +.w3l-agile h3 { + color: #555; + text-transform: uppercase; + font-size: 1.2em; + margin-top: 10px; +} +.graph{ + background:#fff; + padding:1em; + width:100%; + box-shadow: 0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19); +} +.copyright{ + text-align:center; +} +.graph.lost { + margin-top:2em; +} +.copyright p{ + font-size: 15px; + color:#fff; + margin:4em 0 4.5em; + line-height:1.8em; +} +.copyright p a{ + color:#80C340; +} +.copyright p a:hover{ + text-decoration:underline; +} + +/*-- start-responsive-design --*/ + +@media (max-width:1440px){ + +} +@media (max-width:1366px){ +body h1 { + margin: 1em 0 1em 0; + font-size: 2.5em; + } +} +@media (max-width:1280px){ + +} +@media (max-width:1024px){ + +} +@media (max-width:800px){ +.main { + margin: 0 auto; + text-align: center; + width: 68%; +} +} +@media (max-width:768px){ + +} +@media (max-width: 736px){ + +} +@media (max-width:667px){ + body h1 { + margin: 1em 0 1em 0; + font-size: 2em; + } +} +@media (max-width:640px){ + +} +@media (max-width: 600px){ + .copyright p { + font-size: 14px; + margin: 2em 0 1.5em; + } +} +@media (max-width:568px){ + .main { + margin: 0 auto; + text-align: center; + width: 80%; + } + .w3l-agile h3 { + font-size: 1em; + margin-top: 10px; + } +} +@media (max-width:480px){ + +} +@media (max-width:414px){ + .graph { + padding: 0.5em 0; + } +} +@media (max-width:384px){ + body h1 { + margin: 1em 0 1em 0; + font-size: 1.7em; + } + .main { + margin: 0 auto; + text-align: center; + width: 88%; + } +} +@media (max-width:375px){ + .main { + margin: 0 auto; + text-align: center; + width: 94%; + } + body h1 { + margin: 0.7em 0 0.7em 0; + font-size: 1.5em; + } + .graph { + padding:0.5em; + width: 95%; + + } +} +@media (max-width: 320px){ + .main { + margin: 0 auto; + text-align: center; + width: 94%; + } + body h1 { + margin: 0.7em 0 0.7em 0; + font-size: 1.4em; + } +} \ No newline at end of file diff --git a/public/static/index/style/demo.css b/public/static/index/style/demo.css new file mode 100644 index 0000000..522d30c --- /dev/null +++ b/public/static/index/style/demo.css @@ -0,0 +1 @@ +.fontawesome-icon-list{margin:22px 0 0 0 !important}.fontawesome-icon-list .fa-hover{color:#262626;display:block;height:36px;line-height:32px;padding-left:10px;padding:2px 0}.fontawesome-icon-list .fa-hover .fa{display:inline-block;font-size:14px;margin-right:10px;text-align:right;width:32px}.fontawesome-icon-list .fa-hover:hover{background-color:#eee;color:#000;text-decoration:none}.fontawesome-icon-list .fa-hover:hover .fa{font-size:28px;vertical-align:-6px}.bs-glyphicons{overflow:hidden}.bs-glyphicons li{float:left;width:25%;height:115px;padding:10px;font-size:10px;line-height:1.4;text-align:center;border:1px solid #fff;background-color:#f9f9f9}.bs-glyphicons li:hover{color:#fff;background-color:#e46f61}.bs-glyphicons .glyphicon{margin-top:5px;margin-bottom:10px;font-size:24px}.bs-glyphicons .glyphicon-class{display:block;text-align:center;word-wrap:break-word}.bs-glyphicons-list{padding-left:0;list-style:none}@media(min-width:768px){.bs-glyphicons{margin-left:0;margin-right:0}.bs-glyphicons li{width:12.5%;font-size:12px}}.weathericons{padding:5px 10px;border-radius:4px}.weathericons:hover{background-color:#a0d468;color:#fff}.weathericons .icon,.weathericons .class{display:inline-block}.weathericons .icon{margin-right:5px;font-size:24px}#typicon-preview{margin:0 auto;position:relative;text-align:center}#typicon-preview .icon{float:left;padding:6px;display:inline-block;cursor:pointer;width:48px;height:48px;text-align:center;vertical-align:middle;-webkit-border-radius:6px;-webkit-background-clip:padding-box;-moz-border-radius:6px;-moz-background-clip:padding;border-radius:6px;background-clip:padding-box;color:#444}#typicon-preview .icon .typcn:before{font-size:24px}#typicon-preview .icon:hover{background-color:#ffce55;line-height:38px;color:#fff}#typicon-preview .icon:hover .typcn:before{font-size:32px}.chartcontainer{width:100%;text-align:center}.easy-pie-chart-preview .well{width:100%;height:250px;text-align:center;position:relative;padding-top:50px}.easy-pie-chart-preview .well .easyPieChart{margin:0 auto}.sparkline-preview .well{text-align:center;position:relative}.buttons-preview .btn,.buttons-preview .btn-group{margin-bottom:10px;margin-right:10px}.dropdown-container{margin:0 auto;text-align:center}.dropdown-container .dropdown-preview{display:inline-block;text-align:left}.dropdown-container .dropdown-preview>.dropdown-menu{display:block;position:static;margin-bottom:5px}#dropdownbuttons .btn{margin-top:10px}.labels-container .label{margin:0 10px 10px 0}.popover-container{overflow:auto}.popoverexample .popover{position:relative;display:block;width:260px;margin:20px}.modal-preview .modal{position:relative;top:auto;right:auto;left:auto;bottom:auto;z-index:1;display:block;width:auto;overflow:hidden;max-width:600px}.modal-preview .modal .modal-dialog{width:90%}.bordered-well-container .well{margin-bottom:0}.knob-container{text-align:center}#red,#green,#blue{margin:10px;display:inline-block;height:200px}#colorpicker{height:240px;width:100%;margin:20px auto;padding:10px;border:1px solid #bfbfbf}#colorpicker .result{margin:60px 30px;height:100px;width:100px;display:inline-block;vertical-align:top;color:#7f7f7f;background:#7f7f7f;border:1px solid #fff;box-shadow:0 0 10px}#colors .colored-slider{margin-bottom:20px}#sizes .sized-slider{margin-bottom:20px}.grid-example .row{margin-bottom:15px;padding:0 15px}.grid-example .row [class^=col-]{padding-top:10px;padding-bottom:10px;background-color:#f5f5f5;border:1px solid #ddd} \ No newline at end of file diff --git a/public/static/index/style/font-awesome.css b/public/static/index/style/font-awesome.css new file mode 100644 index 0000000..24fcc04 --- /dev/null +++ b/public/static/index/style/font-awesome.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.3.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-genderless:before,.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"} \ No newline at end of file diff --git a/public/static/index/style/fonts/fontawesome-webfont.eot b/public/static/index/style/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..6cfd566 Binary files /dev/null and b/public/static/index/style/fonts/fontawesome-webfont.eot differ diff --git a/public/static/index/style/fonts/fontawesome-webfont.svg b/public/static/index/style/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..a9f8469 --- /dev/null +++ b/public/static/index/style/fonts/fontawesome-webfont.svg @@ -0,0 +1,504 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/static/index/style/fonts/fontawesome-webfont.ttf b/public/static/index/style/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..5cd6cff Binary files /dev/null and b/public/static/index/style/fonts/fontawesome-webfont.ttf differ diff --git a/public/static/index/style/fonts/fontawesome-webfont.woff b/public/static/index/style/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..9eaecb3 Binary files /dev/null and b/public/static/index/style/fonts/fontawesome-webfont.woff differ diff --git a/public/static/index/style/fonts/glyphicons-halflings-regular.eot b/public/static/index/style/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000..423bd5d Binary files /dev/null and b/public/static/index/style/fonts/glyphicons-halflings-regular.eot differ diff --git a/public/static/index/style/fonts/glyphicons-halflings-regular.svg b/public/static/index/style/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..4469488 --- /dev/null +++ b/public/static/index/style/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/static/index/style/fonts/glyphicons-halflings-regular.ttf b/public/static/index/style/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000..a498ef4 Binary files /dev/null and b/public/static/index/style/fonts/glyphicons-halflings-regular.ttf differ diff --git a/public/static/index/style/fonts/glyphicons-halflings-regular.woff b/public/static/index/style/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..d83c539 Binary files /dev/null and b/public/static/index/style/fonts/glyphicons-halflings-regular.woff differ diff --git a/public/static/index/style/fonts/typicons.eot b/public/static/index/style/fonts/typicons.eot new file mode 100644 index 0000000..57849d8 Binary files /dev/null and b/public/static/index/style/fonts/typicons.eot differ diff --git a/public/static/index/style/fonts/typicons.svg b/public/static/index/style/fonts/typicons.svg new file mode 100644 index 0000000..22d032b --- /dev/null +++ b/public/static/index/style/fonts/typicons.svg @@ -0,0 +1,1180 @@ + + + + +Created by FontForge 20120731 at Tue Jan 28 14:48:39 2014 + By Stephen Hutchings +(c) Stephen Hutchings 2012 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/index/style/fonts/typicons.ttf b/public/static/index/style/fonts/typicons.ttf new file mode 100644 index 0000000..91c02b3 Binary files /dev/null and b/public/static/index/style/fonts/typicons.ttf differ diff --git a/public/static/index/style/fonts/typicons.woff b/public/static/index/style/fonts/typicons.woff new file mode 100644 index 0000000..1d5c583 Binary files /dev/null and b/public/static/index/style/fonts/typicons.woff differ diff --git a/public/static/index/style/fonts/weathericons-regular-webfont.eot b/public/static/index/style/fonts/weathericons-regular-webfont.eot new file mode 100644 index 0000000..d9f8a71 Binary files /dev/null and b/public/static/index/style/fonts/weathericons-regular-webfont.eot differ diff --git a/public/static/index/style/fonts/weathericons-regular-webfont.svg b/public/static/index/style/fonts/weathericons-regular-webfont.svg new file mode 100644 index 0000000..9c8d899 --- /dev/null +++ b/public/static/index/style/fonts/weathericons-regular-webfont.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/static/index/style/fonts/weathericons-regular-webfont.ttf b/public/static/index/style/fonts/weathericons-regular-webfont.ttf new file mode 100644 index 0000000..e10fbc8 Binary files /dev/null and b/public/static/index/style/fonts/weathericons-regular-webfont.ttf differ diff --git a/public/static/index/style/fonts/weathericons-regular-webfont.woff b/public/static/index/style/fonts/weathericons-regular-webfont.woff new file mode 100644 index 0000000..af1d7bb Binary files /dev/null and b/public/static/index/style/fonts/weathericons-regular-webfont.woff differ diff --git a/public/static/index/style/hm.js b/public/static/index/style/hm.js new file mode 100644 index 0000000..c70293b --- /dev/null +++ b/public/static/index/style/hm.js @@ -0,0 +1,51 @@ +(function(){var h={},mt={},c={id:"e2558a635df8de4699c2101b454961e3",dm:["www.wed114.cn/jiehun"],js:"tongji.baidu.com/hm-web/js/",etrk:[],icon:'',ctrk:false,align:-1,nv:-1,vdur:1800000,age:31536000000,rec:1,rp:[[57953, 2]],trust:0,vcard:0,qiao:0,lxb:0,conv:0,med:0,cvcc:'',cvcf:[],apps:''};var r=void 0,s=!0,t=null,w=!1;mt.h={};mt.h.va=/msie (\d+\.\d+)/i.test(navigator.userAgent);mt.h.ta=/msie (\d+\.\d+)/i.test(navigator.userAgent)?document.documentMode||+RegExp.$1:r;mt.h.cookieEnabled=navigator.cookieEnabled;mt.h.javaEnabled=navigator.javaEnabled();mt.h.language=navigator.language||navigator.browserLanguage||navigator.systemLanguage||navigator.userLanguage||"";mt.h.xa=(window.screen.width||0)+"x"+(window.screen.height||0);mt.h.colorDepth=window.screen.colorDepth||0;mt.cookie={}; +mt.cookie.set=function(a,b,e){var d;e.G&&(d=new Date,d.setTime(d.getTime()+e.G));document.cookie=a+"="+b+(e.domain?"; domain="+e.domain:"")+(e.path?"; path="+e.path:"")+(d?"; expires="+d.toGMTString():"")+(e.Qa?"; secure":"")};mt.cookie.get=function(a){return(a=RegExp("(^| )"+a+"=([^;]*)(;|$)").exec(document.cookie))?a[2]:t};mt.m={};mt.m.P=function(a){return document.getElementById(a)};mt.m.Ja=function(a,b){for(b=b.toUpperCase();(a=a.parentNode)&&1==a.nodeType;)if(a.tagName==b)return a;return t}; +(mt.m.L=function(){function a(){if(!a.B){a.B=s;for(var b=0,e=d.length;ba?"0"+a:a}var e={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};return function(d){switch(typeof d){case "undefined":return"undefined";case "number":return isFinite(d)?String(d):"null";case "string":return a(d);case "boolean":return String(d); +default:if(d===t)return"null";if(d instanceof Array){var e=["["],m=d.length,l,f,k;for(f=0;f(new Date).getTime())return a.substring(b+1)}}else if(mt.localStorage.D())try{return mt.localStorage.f.load(document.location.hostname),mt.localStorage.f.getAttribute(a)}catch(d){}return t}; +mt.localStorage.remove=function(a){if(window.localStorage)window.localStorage.removeItem(a);else if(mt.localStorage.D())try{mt.localStorage.f.load(document.location.hostname),mt.localStorage.f.removeAttribute(a),mt.localStorage.f.save(document.location.hostname)}catch(b){}};mt.sessionStorage={};mt.sessionStorage.set=function(a,b){if(window.sessionStorage)try{window.sessionStorage.setItem(a,b)}catch(e){}}; +mt.sessionStorage.get=function(a){return window.sessionStorage?window.sessionStorage.getItem(a):t};mt.sessionStorage.remove=function(a){window.sessionStorage&&window.sessionStorage.removeItem(a)};mt.W={};mt.W.log=function(a,b){var e=new Image,d="mini_tangram_log_"+Math.floor(2147483648*Math.random()).toString(36);window[d]=e;e.onload=e.onerror=e.onabort=function(){e.onload=e.onerror=e.onabort=t;e=window[d]=t;b&&b(a)};e.src=a};mt.N={}; +mt.N.ma=function(){var a="";if(navigator.plugins&&navigator.mimeTypes.length){var b=navigator.plugins["Shockwave Flash"];b&&b.description&&(a=b.description.replace(/^.*\s+(\S+)\s+\S+$/,"$1"))}else if(window.ActiveXObject)try{if(b=new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))(a=b.GetVariable("$version"))&&(a=a.replace(/^.*\s+(\d+),(\d+).*$/,"$1.$2"))}catch(e){}return a}; +mt.N.Ia=function(a,b,e,d,g){return''};mt.url={}; +mt.url.i=function(a,b){var e=a.match(RegExp("(^|&|\\?|#)("+b+")=([^&#]*)(&|$|#)",""));return e?e[3]:t};mt.url.La=function(a){return(a=a.match(/^(https?:)\/\//))?a[1]:t};mt.url.ia=function(a){return(a=a.match(/^(https?:\/\/)?([^\/\?#]*)/))?a[2].replace(/.*@/,""):t};mt.url.R=function(a){return(a=mt.url.ia(a))?a.replace(/:\d+$/,""):a};mt.url.Ka=function(a){return(a=a.match(/^(https?:\/\/)?[^\/]*(.*)/))?a[2].replace(/[\?#].*/,"").replace(/^$/,"/"):t}; +h.p={Ma:"http://tongji.baidu.com/hm-web/welcome/ico",V:"hm.baidu.com/hm.gif",$:"baidu.com",qa:"hmmd",ra:"hmpl",pa:"hmkw",na:"hmci",sa:"hmsr",oa:"hmcu",o:0,k:Math.round(+new Date/1E3),protocol:"https:"===document.location.protocol?"https:":"http:",Oa:0,Fa:6E5,Ga:10,Ha:1024,Ea:1,w:2147483647,X:"cc cf ci ck cl cm cp cu cw ds ep et fl ja ln lo lt nv rnd si st su v cv lv api u tt".split(" ")}; +(function(){var a={l:{},c:function(a,e){this.l[a]=this.l[a]||[];this.l[a].push(e)},z:function(a,e){this.l[a]=this.l[a]||[];for(var d=this.l[a].length,g=0;ga.length)){var d=a[1],e=a[4]||3;if(0d&&0e){f.C++;for(var p=(h.b.a.cv||"*").split("!"),q=p.length;q=encodeURIComponent(b).length&&(f.e|=64,h.b.a.rt=b))},_trackRTEvent:function(b){b=b[1];if(e.d(b,"Object")){a(b);b=encodeURIComponent(d.stringify(b));var n=function(a){var b=h.b.a.rt;f.e|=128;h.b.a.et=90;h.b.a.rt=a;h.b.g();h.b.a.rt=b},l=b.length;if(900>=l)n.call(this,b);else for(var l=Math.ceil(l/900),p="block|"+Math.round(Math.random()* +g.w).toString(16)+"|"+l+"|",q=[],u=0;uc.vdur?1:4;var a= +w;this.A(document.referrer)&&this.A(document.location.href)?a=s:(a=b.R(document.referrer),a=this.J(a||"",document.location.hostname));return a?n.k-n.o>c.vdur?1:4:3},getData:function(a){try{return m.get(a)||k.get(a)||f.get(a)}catch(b){}},setData:function(a,b,d){try{m.set(a,b,{domain:this.H(),path:this.Q(),G:d}),d?f.set(a,b,d):k.set(a,b)}catch(e){}},wa:function(a){try{m.set(a,"",{domain:this.H(),path:this.Q(),G:-1}),k.remove(a),f.remove(a)}catch(b){}},Ba:function(){var a,b,d,e,f;n.o=this.getData("Hm_lpvt_"+ +c.id)||0;13===n.o.length&&(n.o=Math.round(n.o/1E3));b=this.la();a=4!==b?1:0;if(d=this.getData("Hm_lvt_"+c.id)){e=d.split(",");for(f=e.length-1;0<=f;f--)13===e[f].length&&(e[f]=""+Math.round(e[f]/1E3));for(;2592E3e.length?2:3;for(1===a&&e.push(n.k);4=+new Date-f;);};if(c.med)m="/zoosnet",g="swt",l=/swt|zixun|call|chat|zoos|business|talk|kefu|openkf|online|\/LR\/Chatpre\.aspx/i,f={click:function(){for(var a=[],b=k(document.getElementsByTagName("a")),b=[].concat.apply(b,k(document.getElementsByTagName("area"))),b=[].concat.apply(b,k(document.getElementsByTagName("img"))),d,e,f=0,g=b.length;f 0 && userAgentInfo.indexOf("iPad") < 0) { location.href= thisURL.replace("www.wed114.cn/jiehun","m.zx.wed114.cn"); break; } + } +} \ No newline at end of file diff --git a/public/static/index/style/jquery.js b/public/static/index/style/jquery.js new file mode 100644 index 0000000..91213c5 --- /dev/null +++ b/public/static/index/style/jquery.js @@ -0,0 +1,9 @@ +/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la) + * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) + * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. + * + * Version: 1.4.0 + * + */ +(function(n){jQuery.fn.extend({slimScroll:function(i){var r=n.extend({width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:.2,railDraggable:!0,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"},i);return this.each(function(){function y(t){var t,i,f;l&&(t=t||window.event,i=0,t.wheelDelta&&(i=-t.wheelDelta/120),t.detail&&(i=t.detail/3),f=t.target||t.srcTarget||t.srcElement,n(f).closest("."+r.wrapperClass).is(u.parent())&&h(i,!0),t.preventDefault&&!o&&t.preventDefault(),o||(t.returnValue=!1))}function h(n,t,i){var s,l,h;o=!1;s=n;l=u.outerHeight()-f.outerHeight();t&&(s=parseInt(f.css("top"))+n*parseInt(r.wheelStep)/100*f.outerHeight(),s=Math.min(Math.max(s,0),l),s=n>0?Math.ceil(s):Math.floor(s),f.css({top:s+"px"}));e=parseInt(f.css("top"))/(u.outerHeight()-f.outerHeight());s=e*(u[0].scrollHeight-u.outerHeight());i&&(s=n,h=s/u[0].scrollHeight*u.outerHeight(),h=Math.min(Math.max(h,0),l),f.css({top:h+"px"}));u.scrollTop(s);u.trigger("slimscrolling",~~s);nt();c()}function et(){window.addEventListener?(this.addEventListener("DOMMouseScroll",y,!1),this.addEventListener("mousewheel",y,!1),this.addEventListener("MozMousePixelScroll",y,!1)):document.attachEvent("onmousewheel",y)}function g(){a=Math.max(u.outerHeight()/u[0].scrollHeight*u.outerHeight(),ft);f.css({height:a+"px"});var n=a==u.outerHeight()?"none":"block";f.css({display:n})}function nt(){if(g(),clearTimeout(tt),e==~~e){if(o=r.allowPageScroll,it!=e){var n=~~e==0?"top":"bottom";u.trigger("slimscroll",n)}}else o=!1;if(it=e,a>=u.outerHeight()){o=!0;return}f.stop(!0,!0).fadeIn("fast");r.railVisible&&s.stop(!0,!0).fadeIn("fast")}function c(){r.alwaysVisible||(tt=setTimeout(function(){r.disableFadeOut&&l||p||w||(f.fadeOut("slow"),s.fadeOut("slow"))},1e3))}var l,p,w,tt,b,a,e,it,k="
            <\/div>",ft=30,o=!1,u=n(this),v,d,rt;if(u.parent().hasClass(r.wrapperClass)){if(v=u.scrollTop(),f=u.parent().find("."+r.barClass),s=u.parent().find("."+r.railClass),g(),n.isPlainObject(i)){if("height"in i&&i.height=="auto"&&(u.parent().css("height","auto"),u.css("height","auto"),d=u.parent().parent().height(),u.parent().css("height",d),u.css("height",d)),"scrollTo"in i)v=parseInt(r.scrollTo);else if("scrollBy"in i)v+=parseInt(r.scrollBy);else if("destroy"in i){f.remove();s.remove();u.unwrap();return}h(v,!1,!0)}return}r.height=r.height=="auto"?u.parent().height():r.height;rt=n(k).addClass(r.wrapperClass).css({position:"relative",overflow:"hidden",width:r.width,height:r.height});u.css({overflow:"hidden",width:r.width,height:r.height});var s=n(k).addClass(r.railClass).css({width:r.size,height:"100%",position:"absolute",top:0,display:r.alwaysVisible&&r.railVisible?"block":"none","border-radius":r.railBorderRadius,background:r.railColor,opacity:r.railOpacity,zIndex:90}),f=n(k).addClass(r.barClass).css({background:r.color,width:r.size,position:"absolute",top:0,opacity:r.opacity,display:r.alwaysVisible?"block":"none","border-radius":r.borderRadius,BorderRadius:r.borderRadius,MozBorderRadius:r.borderRadius,WebkitBorderRadius:r.borderRadius,zIndex:99}),ut=r.position=="right"?{right:r.distance}:{left:r.distance};s.css(ut);f.css(ut);u.wrap(rt);u.parent().append(f);u.parent().append(s);r.railDraggable&&f.bind("mousedown",function(i){var r=n(document);return w=!0,t=parseFloat(f.css("top")),pageY=i.pageY,r.bind("mousemove.slimscroll",function(n){currTop=t+n.pageY-pageY;f.css("top",currTop);h(0,f.position().top,!1)}),r.bind("mouseup.slimscroll",function(){w=!1;c();r.unbind(".slimscroll")}),!1}).bind("selectstart.slimscroll",function(n){return n.stopPropagation(),n.preventDefault(),!1});s.hover(function(){nt()},function(){c()});f.hover(function(){p=!0},function(){p=!1});u.hover(function(){l=!0;nt();c()},function(){l=!1;c()});u.bind("touchstart",function(n){n.originalEvent.touches.length&&(b=n.originalEvent.touches[0].pageY)});u.bind("touchmove",function(n){if(o||n.originalEvent.preventDefault(),n.originalEvent.touches.length){var t=(b-n.originalEvent.touches[0].pageY)/r.touchScrollStep;h(t,!0);b=n.originalEvent.touches[0].pageY}});g();r.start==="bottom"?(f.css({top:u.outerHeight()-f.outerHeight()}),h(0,!0)):r.start!=="top"&&(h(n(r.start).position().top,null,!0),r.alwaysVisible||f.hide());et()}),this}});jQuery.fn.extend({slimscroll:jQuery.fn.slimScroll})})(jQuery); +//# sourceMappingURL=jquery.slimscroll.min.js.map diff --git a/public/static/index/style/jquery.min.js b/public/static/index/style/jquery.min.js new file mode 100644 index 0000000..16ad06c --- /dev/null +++ b/public/static/index/style/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.2 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
            a",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="
            "+""+"
            ",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="
            t
            ",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="
            ",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function( +a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

            ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
            ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*",""],legend:[1,"
            ","
            "],thead:[1,"","
            "],tr:[2,"","
            "],td:[3,"","
            "],col:[2,"","
            "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
            ","
            "]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f +.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(;d1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===""&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
            ").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/public/static/index/style/jquery_002.js b/public/static/index/style/jquery_002.js new file mode 100644 index 0000000..25714ed --- /dev/null +++ b/public/static/index/style/jquery_002.js @@ -0,0 +1,4 @@ +/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.3",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c) +},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,"
            ","
            "],col:[2,"","
            "],tr:[2,"","
            "],td:[3,"","
            "],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("