Commit b1268f19 authored by 吕兵川's avatar 吕兵川

[dev]提交项目

parents
Pipeline #33 canceled with stages
@charset "UTF-8";
/**
** created By 潘正龙 2019-01-10 version:1.0.0
**/
* { margin:0; padding:0; list-style:none; line-height:inherit; }
:focus { outline:0; text-decoration:none; }
span,i,em,big,small { font-size:inherit; font-weight:normal; font-style:normal; }
.clear { clear:both; }
/**更换全局字体**/
pgy-list grid[gridOptions],label-flex,.ag-theme-material .ag-header-cell-label .ag-header-cell-text,.ag-cell.ag-cell-not-inline-editing.ag-cell-with-height.ag-cell-value.ng-scope,.totalNumber,body { font-family:Helvetica,STHeiti STXihei,Microsoft JhengHei,Microsoft YaHei,sans-serif !important; }
/**基础布局flex**/
.flex { position:relative; display:-webkit-box; display:-ms-flexbox; display:-webkit-flex; display:flex; -webkit-box-pack:center; -ms-flex-pack:center; -webkit-justify-content:center; justify-content:center; -webkit-box-align:center; -ms-flex-align:center; -webkit-align-items:center; align-items:center; }
.lflex { position:relative; display:-webkit-box; display:-ms-flexbox; display:-webkit-flex; display:flex; -webkit-box-pack:center; -ms-flex-pack:center; -webkit-justify-content:flex-start; justify-content:flex-start; -webkit-box-align:center; -ms-flex-align:center; -webkit-align-items:center; align-items:center; }
.rflex { position:relative; display:-webkit-box; display:-ms-flexbox; display:-webkit-flex; display:flex; -webkit-box-pack:center; -ms-flex-pack:center; -webkit-justify-content:flex-end; justify-content:flex-end; -webkit-box-align:center; -ms-flex-align:center; -webkit-align-items:center; align-items:center; }
.mflex { position:relative; display:-webkit-box; display:-ms-flexbox; display:-webkit-flex; display:flex; -webkit-box-pack:center; -ms-flex-pack:center; -webkit-justify-content:center; justify-content:center; -webkit-box-align:center; -ms-flex-align:center; -webkit-align-items:center; align-items:center; flex-direction:column; -webkit-flex-direction:column; text-align:center; }
/**样式回写**/
.ag-root-wrapper { background:#fff; }
/**agGrid**/
#reset-agGrid { }
#reset-agGrid pgy-select .ui-select-multiple.ui-select-bootstrap,#reset-agGrid pgy-select .label-flex .div-element, .label-flex .div-label { text-align:left; }
#reset-agGrid pgy-select { position:relative; }
#reset-agGrid pgy-search-tool { position:relative; top:-2px; }
#reset-agGrid .ag-theme-material { font-size:12px; }
#reset-agGrid .ag-theme-material .ag-header .ag-header-cell { height:100%; padding:5px !important; }
#reset-agGrid .ag-theme-material .ag-header .ag-grid-checkbox-header { left:0 !important; }
#reset-agGrid .ag-theme-material .ag-header .ag-header-cell .ng-scope { height:100%; width:100%; position:relative; display:-webkit-box; display:-ms-flexbox; display:-webkit-flex; display:flex; -webkit-box-pack:center; -ms-flex-pack:center; -webkit-justify-content:center; justify-content:center; -webkit-box-align:center; -ms-flex-align:center; -webkit-align-items:center; align-items:center; }
#reset-agGrid .ag-theme-material .ag-header .ag-header-cell .ng-scope span { width:16px; height:16px; }
#reset-agGrid .ag-theme-material .ag-header .ag-header-cell-resize { top:8px; bottom:8px; right:0 !important; width:1px; height:auto; background:#e0dede; }
#reset-agGrid .ag-theme-material .ag-header .ag-header-cell-resize:after { display:none; }
#reset-agGrid .ag-theme-material .ag-header .ag-cell-label-container { padding:0; height:100%; }
#reset-agGrid .ag-theme-material .ag-header .ag-header-cell-label { height:100%; padding: 0; }
#reset-agGrid .ag-theme-material .ag-header .ag-header-cell-text { height:100%; width:100%; position:relative; display:-webkit-box; display:-ms-flexbox; display:-webkit-flex; display:flex; -webkit-box-pack:center; -ms-flex-pack:center; -webkit-justify-content:center; justify-content:center; -webkit-box-align:center; -ms-flex-align:center; -webkit-align-items:center; align-items:center; }
#reset-agGrid .ag-theme-material .ag-body .ag-row { display:-webkit-box; display:-ms-flexbox; display:-webkit-flex; display:flex; -webkit-box-pack:center; -ms-flex-pack:center; -webkit-justify-content:center; justify-content:center; -webkit-box-align:center; -ms-flex-align:center; -webkit-align-items:center; align-items:center; }
#reset-agGrid .ag-theme-material .ag-body .ag-cell { padding:0 !important; height:100% !important; display:-webkit-box; display:-ms-flexbox; display:-webkit-flex; display:flex; -webkit-box-pack:center; -ms-flex-pack:center; -webkit-justify-content:center; justify-content:center; -webkit-box-align:center; -ms-flex-align:center; -webkit-align-items:center; align-items:center; }
/**自定义table**/
.main-content #container .ng-scope[ui-view], .main-content #container .ng-scope[ui-view] pgy-row { display:block; width:100%; height:100%; }
.main-content #container .ng-scope[ui-view] .row { height:100%; }
.main-content #container .ng-scope[ui-view] form { display:block; }
.main-content #container .ng-scope[ui-view] form.toolbarTrue { width:100%; height:calc(100% - 40px); margin:0 0 40px !important; }
.main-content #container .ng-scope[ui-view] pgy-form { display:block; width:100%; height:100%; }
.main-content #container .ng-scope[ui-view] form pgy-row { height:auto; }
.main-content #container .ng-scope[ui-view] pgy-form > div { width:100%; height:100%; }
.common_table { }
.common_table > div,.common_table pgy-cols { height:100%; }
.common_table table { width:100%; border-collapse:collapse; font-size:12px; height:100%; background:#fff; position:relative; }
.common_table .tt,.common_table .tb,.common_table .tm { position:relative; width:100%; }
.common_table .tm { }
.common_table th { background:#91c5ca; color:#fff; font-weight:normal; padding:5px 2px; text-align:center; position:relative; box-sizing:content-box; }
.common_table th:before { position:absolute; right:0; top:6px; bottom:6px; width:1px; content:''; background:#fff; z-index:1; }
.common_table tr th:last-child:before { display:none; }
.common_table td { padding:5px 2px; text-align:center; }
.common_table tr:nth-child(2n+1) { background:#f9f9f9; }
.common_table tr:hover { background:#ffebd8; }
/*
.ag-root-wrapper .ag-root-wrapper-body { display:block; overflow:auto; }
*/
#preTaxDetail.common_table { width:1600px; }
#preTaxDetail.common_table tr td:first-child { width:160px; }
#preTaxDetail.common_table tr td:nth-child(2) { width:85px; }
#preTaxDetail.common_table tr td:nth-child(3) { width:60px; }
#preTaxDetail.common_table tr td:nth-child(4) { width:126px; }
#preTaxDetail.common_table tr td:nth-child(5),#preTaxDetail.common_table tr td:nth-child(6){ width:30px; }
#preTaxDetail.common_table tr td:nth-child(7) { width:30px; },#preTaxDetail.common_table tr td:nth-child(8),#preTaxDetail.common_table tr td:nth-child(9) { width:60px; }
/*Created By 浪子 Time:2018-08-20 16:18:00 Version:1.0 QQ:315065690*/
@charset "UTF-8";
@import url(//at.alicdn.com/t/font_800571_ju1pqu82v6.css);
html { }
html,body { overflow-x:hidden; width:100%; }
* { margin:0; padding:0; list-style:none; }
body { font-size:14px; color:#222; font-family:Helvetica,STHeiti STXihei,Microsoft JhengHei,Microsoft YaHei,sans-serif; }
.float_clear { clear:both; }
.float_left { float:left; }
.float_right { float:right; }
.display_none { display:none; }
img { border:0; vertical-align:top; }
.red { color:red; }
.must_input { font-weight:bold; color:red; }
.clear { clear:both; }
.highlight { color:#FFF; background:red; padding:1px; }
/* a */
* { appearance:normal; -moz-appearance:normal; -webkit-appearance:normal; -webkit-tap-highlight-color:rgba(0,0,0,0); }
*:link { -webkit-tap-highlight-color:rgba(0,0,0,0); tap-highlight-color:rgba(0,0,0,0); -moz-tap-highlight-color:rgba(0,0,0,0); }
*:visited { -webkit-tap-highlight-color:rgba(0,0,0,0); tap-highlight-color:rgba(0,0,0,0); -moz-tap-highlight-color:rgba(0,0,0,0); }
*:hover { -webkit-tap-highlight-color:rgba(0,0,0,0); tap-highlight-color:rgba(0,0,0,0); -moz-tap-highlight-color:rgba(0,0,0,0); }
*:active { -webkit-tap-highlight-color:rgba(0,0,0,0); tap-highlight-color:rgba(0,0,0,0); -moz-tap-highlight-color:rgba(0,0,0,0); }
a { color:inherit;text-decoration:none; text-decoration:none; -o-transition:all .35s; -moz-transition:all .35s; -webkit-transition:all .35s; -ms-transition:all .35s; transition:all .35s; }
a:active, a:hover { text-decoration:none; color:inherit; }
a:focus { outline:none; }
p { line-height:22px; }
.h100 { height:100%; }
.w100 { width:100%; }
h1,h2,h3,h4,h5,h6 { font-weight:normal; }
:focus { outline:0; text-decoration:none; }
a:focus {outline:0; text-decoration:none; color:inherit }
span,i,em,big,small,b,strong { font-size:inherit; font-weight:normal; font-style:normal; }
.flex { position:relative; display:-webkit-box; display:-ms-flexbox; display:-webkit-flex; display:flex; -webkit-box-pack:center; -ms-flex-pack:center; -webkit-justify-content:center; justify-content:center; -webkit-box-align:center; -ms-flex-align:center; -webkit-align-items:center; align-items:center; }
.lflex { position:relative; display:-webkit-box; display:-ms-flexbox; display:-webkit-flex; display:flex; -webkit-box-pack:center; -ms-flex-pack:center; -webkit-justify-content:flex-start; justify-content:flex-start; -webkit-box-align:center; -ms-flex-align:center; -webkit-align-items:center; align-items:center; }
.rflex { position:relative; display:-webkit-box; display:-ms-flexbox; display:-webkit-flex; display:flex; -webkit-box-pack:center; -ms-flex-pack:center; -webkit-justify-content:flex-end; justify-content:flex-end; -webkit-box-align:center; -ms-flex-align:center; -webkit-align-items:center; align-items:center; }
.mflex { position:relative; display:-webkit-box; display:-ms-flexbox; display:-webkit-flex; display:flex; -webkit-box-pack:center; -ms-flex-pack:center; -webkit-justify-content:center; justify-content:center; -webkit-box-align:center; -ms-flex-align:center; -webkit-align-items:center; align-items:center; flex-direction:column; -webkit-flex-direction:column; text-align:center; }
input,input[type=radio],input[type=checkbox] { font-family:Helvetica,STHeiti STXihei,Microsoft JhengHei,Microsoft YaHei,sans-serif; font-size:14px; }
textarea,input[type=text],input[type=tel],input[type=email],input[type=address],input[type=file],input[type=password] { border-radius:0; font-family:Helvetica,STHeiti STXihei,Microsoft JhengHei,Microsoft YaHei,sans-serif; font-size:14px; -webkit-appearance:normal; appearance:normal; background:none; box-shadow:0 0 0; border:0; }
textarea:focus,input[type=text]:focus,input[type=tel]:focus,input[type=password]:focus,input[type=email]:focus,input[type=address]:focus,textarea:hover,input[type=text]:hover,input[type=tel]:hover,input[type=email]:hover,input[type=address]:hover { border-color:#2c82f5; }
input:disabled,input[disabled],textarea:disabled,textarea:[disabled] { background:#ccc; cursor:not-allowed; }
/*header部分*/
header.mflex { position:fixed; top:0; left:0; right:0; z-index:10; }
header i { height:48px; width:100%; background-position:center; background-repeat:no-repeat; background-size:cover; }
header em { height:48px; background:#f8f8f8; font-size:18px; font-weight:bold; width:100%; }
.headerblank { height:96px; }
/*通用Afix右侧进入弹窗*/
.AfixBg { position:fixed; left:0; top:0; width:100%; height:100%; background:rgba(0,0,0,0.7); opacity:0; -moz-transition:all .6s; -webkit-transition:all .6s; transition:all .6s; z-index:-1; }
#Afix { position:fixed; top:0; left:20%; width:80%; height:100%; z-index:112; transform:translateX(100%); -webkit-transform:translateX(100%); -moz-transform:translateX(100%); opacity:0; -moz-transition:all .6s; -webkit-transition:all .6s; transition:all .6s; background:#fff; }
#Afix h2 { line-height:48px; font-size:18px; color:#fff; background:#2c82f5; position:absolute; left:0; top:0; width:100%; height:48px; z-index:114; text-align:center; }
#Afix hgroup { position:absolute; width:100%; top:48px; bottom:0; left:0; overflow:hidden; overflow-y:auto; -webkit-overflow-scrolling:touch; overflow-scrolling:touch; z-index:113; }
#Afix dl { line-height:42px; height:42px; border-bottom:1px solid rgba(153,153,153,0.5); font-size:16px; padding:0 15px; }
#Afix hgroup dl:last-child { border:0; }
#Afix dt { height:100%; float:left; }
#Afix dt i { font-size:18px; }
#Afix dd { height:100%; float:right; color:#999; font-size:20px; }
#Afix dt.selected,#Afix dd.selected { color:#2c82f5; }
body.overflow #Afix,html.overflow #Afix { transform:translateX(0); -webkit-transform:translateX(0); -moz-transform:translateX(0); opacity:1; }
body.overflow .AfixBg,html.overflow .AfixBg { z-index:111; opacity:1; }
/*通用Bfix顶部进入弹窗*/
#Bfix { position:fixed; top:48px; left:0; right:0; height:calc(100% - 48px); z-index:111; transform:translateY(-100%); -webkit-transform:translateY(-100%); -moz-transform:translateY(-100%); opacity:0; -moz-transition:all .6s; -webkit-transition:all .6s; transition:all .6s; }
.BfixBg { position:fixed; left:0; top:0; width:100%; height:100%; z-index:112; }
#Bfix h2 { line-height:48px; font-size:18px; color:#fff; background:#2c82f5; width:100%; height:48px; text-align:center; position:relative; z-index:113; }
#Bfix h2.blue { color:#fff; background:#2c82f5; }
#Bfix h2.yellow { color:#fff; background:#f5a623; }
#Bfix hgroup { z-index:113; position:absolute; max-height:calc(100% - 48px); left:0; right:0; height:auto; background:#fff; overflow:hidden; overflow-y:auto; -webkit-overflow-scrolling:touch; overflow-scrolling:touch; }
#Bfix dl { line-height:42px; height:42px; border-bottom:1px solid rgba(153,153,153,0.5); font-size:16px; padding:0 15px; }
#Bfix hgroup dl:last-child { border:0; }
#Bfix dt { height:100%; float:left; }
#Bfix dt i { font-size:18px; }
#Bfix dd { height:100%; float:right; color:#999; font-size:20px; }
#Bfix dl.blue dt.selected,#Bfix dl.blue dd.selected { color:#2c82f5; }
#Bfix dl.yellow dt.selected,#Bfix dl.yellow dd.selected { color:#f5a623; }
body.overflow #Bfix,html.overflow #Bfix { transform:translateY(0); -webkit-transform:translateY(0); -moz-transform:translateY(0); opacity:1; }
/*通用示例弹窗(页面示例字样)*/
.handleDemo { position:fixed; top:0; left:0; width:100%; height:100%; z-index:112; background:rgba(0,0,0,0.3); }
.handleDemo p { position:absolute; left:0; top:0; width:100%; height:100%; z-index:113; }
.handleDemo p:before { position:absolute; right:5px; top:10px; font-size:30px; color:#fff; content:'\e602'; font-family:'iconfont'; }
.handleDemo hgroup { position:relative; width:90%; background:#fff; border-radius:12px; padding:7.5px 15px; height:80%; box-sizing:border-box; z-index:114; }
.handleDemo dl { height:50%; padding:7.5px 0; box-sizing:border-box; }
.handleDemo dl dt { font-size:17px; line-height:17px; padding:0 0 15px; }
.handleDemo dl dd { height:calc(100% - 32px); }
.handleDemo dl dd img { max-width:100%; max-height:100%; }
/*通用check弹窗(页面点击打开并带关闭按钮)*/
#ACheck { position:fixed; top:0; left:0; width:100%; height:100%; z-index:110; background:rgba(0,0,0,0.3); display:none; }
#ACheck .bg { position:absolute; left:0; top:0; width:100%; height:100%; z-index:111; }
#ACheck .close { position:absolute; right:0; left:0; bottom:48px; height:48px; z-index:112; color:#fff; font-size:48px; }
#ACheck .content { background:#fff; top:48px; left:48px; right:48px; bottom:144px; border-radius:12px; position:absolute; z-index:113; }
#ACheck dl { position:relative; width:100%; height:100%; box-sizing:border-box; padding:5px 15px 15px; }
#ACheck dt { height:38px; font-size:18px; color:#2c82f5; font-weight:bold; }
#ACheck dd { height:calc(100% - 38px); overflow:hidden; overflow-y:auto; -webkit-overflow-scrolling:touch; overflow-scrolling:touch; }
#ACheck dd p { line-height:26px; font-size:16px; margin:0 0 10px; text-indent:2em; }
#ACheck dd p:last-child { margin:0; }
#ACheck dd p span,#ACheck dd p a.color { color:#2c82f5; font-weight:bold; }
/*Loading*/
.cover { position:fixed; z-index:1000; background-color:rgba(255,255,255,.9); top:0; right:0; bottom:0; left:0; transition:opacity .3s; }
.cover .circular { width:42px; height:42px; animation:cover-rotate 2s linear infinite; }
@keyframes cover-rotate{100%{transform:rotate(360deg);-webkit-transform:-webkit-rotate(360deg);-webkit-transform:rotate(360deg);transform:-webkit-rotate(360deg);}}
@-webkit-keyframes cover-rotate{100%{transform:rotate(360deg);-webkit-transform:-webkit-rotate(360deg);-webkit-transform:rotate(360deg);transform:-webkit-rotate(360deg);}}
.cover .path { stroke:#2c82f5; animation:cover-dash 1.5s ease-in-out infinite; stroke-dasharray:90,150; stroke-dashoffset:0; stroke-width:2; stroke:#2c82f5; stroke-linecap:round; }
@keyframes cover-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}
@-webkit-keyframes cover-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}
/*Message弹窗*/
#Anotice { position:fixed; left:0; top:0; width:100%; height:100%; z-index:1010; }
.Anotice { position:relative; background:rgba(255,255,255,0.95); padding:15px 15px 0; box-shadow:0 0 5px #ccc; border-radius:8px; width:60%; box-sizing:border-box; }
.Anotice.FSB/*fade scale big*/ { -webkit-animation-name:FSB; animation-name:FSB; -webkit-animation-duration:0.3s; animation-duration:0.3s; }
.Anotice dt { font-size:36px; height:36px; line-height:36px; color:#2c82f5; }
.Anotice dd.d1 { padding:5px 0 15px; font-size:15px; }
.animation { -webkit-animation-duration:1.5s; animation-duration:1.5s; -webkit-animation-fill-mode:both; animation-fill-mode:both; }
.Anotice.FSH { -webkit-animation-name:FSH; animation-name:FSH; }
@-webkit-keyframes FSH { /*fade show hidden*/
0% { opacity:0; -webkit-transform:scale(0); transform:scale(0) }
20% { opacity:1; -webkit-transform:scale(1); transform:scale(1) }
90% { opacity:1; -webkit-transform:scale(1); transform:scale(1) }
100% { opacity:0; -webkit-transform:scale(0); transform:scale(0) }
}
@keyframes FSH { /*fade show hidden*/
0% { opacity:0; -webkit-transform:scale(0); transform:scale(0) }
20% { opacity:1; -webkit-transform:scale(1); transform:scale(1) }
90% { opacity:1; -webkit-transform:scale(1); transform:scale(1) }
100% { opacity:0; -webkit-transform:scale(0); transform:scale(0) }
}
@-webkit-keyframes FSB { /*fade show hidden*/
0% { opacity:0; -webkit-transform:scale(0); transform:scale(0) }
100% { opacity:1; -webkit-transform:scale(1); transform:scale(1) }
}
@keyframes FSB { /*fade show hidden*/
0% { opacity:0; -webkit-transform:scale(0); transform:scale(0) }
100% { opacity:1; -webkit-transform:scale(1); transform:scale(1) }
}
.Anotice dd.d2 { height:40px; position:relative; font-size:16px; border-top:1px solid rgba(153,153,153,0.5); width:100%; }
.Anotice dd.d2:before { position:absolute; left:50%; top:0; bottom:0; width:1px; background:rgba(153,153,153,0.5); content:''; }
.Anotice dd.d2 i { height:100%; width:50%; }
.Anotice dd.d2 i.cancel { color:#666 }
.Anotice dd.d2 i.confirm { color:#2c82f5; }
/*样式重写*/
@media screen and (max-width:400px){
header i { height:44px;}
header em { height:44px; font-size:17px; }
.headerblank { height:88px; }
#Afix h2 { line-height:44px; font-size:17px; height:44px; }
#Afix hgroup { top:44px; }
#Afix dl { line-height:40px; height:40px;font-size:15px; padding:0 12px; }
#Afix dd { font-size:18px; }
#Afix dt i { font-size:17px; }
#Bfix { top:44px; height:calc(100% - 44px); }
#Bfix h2 { line-height:44px; font-size:17px; height:44px; }
#Bfix hgroup { top:44px; max-height:calc(100% - 44px); }
#Bfix dl { line-height:40px; height:40px;font-size:15px; padding:0 12px; }
#Bfix dd { font-size:18px; }
#Bfix dt i { font-size:17px; }
.handleDemo p:before { right:5px; top:10px; font-size:26px; }
.handleDemo hgroup { border-radius:10px; padding:6px 12px; }
.handleDemo dl { padding:6px 0;}
.handleDemo dl dt { font-size:16px; line-height:16px; padding:0 0 12px; }
.handleDemo dl dd { height:calc(100% - 28px); }
#ACheck .close { bottom:44px; height:44px; font-size:44px; }
#ACheck .content { top:44px; left:44px; right:44px; bottom:132px; border-radius:10px; }
#ACheck dl { padding:4px 12px 12px; }
#ACheck dt { height:36px; font-size:17px; }
#ACheck dd { height:calc(100% - 36px); }
#ACheck dd p { line-height:24px; font-size:15px; margin:0 0 8px; }
}
@media screen and (max-width:370px){
header i { height:42px;}
header em { height:42px; font-size:16px; }
.headerblank { height:84px; }
#Afix h2 { line-height:42px; font-size:16px; height:42px; }
#Afix hgroup { top:42px; }
#Afix dl { line-height:38px; height:38px; font-size:14px; padding:0 10px; }
#Afix dd { font-size:17px; }
#Afix dt i { font-size:16px; }
#Bfix { top:42px; height:calc(100% - 42px); }
#Bfix h2 { line-height:42px; font-size:16px; height:42px; }
#Bfix hgroup { top:42px; max-height:calc(100% - 42px); }
#Bfix dl { line-height:38px; height:38px; font-size:14px; padding:0 10px; }
#Bfix dd { font-size:17px; }
#Bfix dt i { font-size:16px; }
.handleDemo p:before { right:5px; top:10px; font-size:24px; }
.handleDemo hgroup { border-radius:8px; padding:5px 10px; }
.handleDemo dl { padding:5px 0;}
.handleDemo dl dt { font-size:15px; line-height:15px; padding:0 0 10px; }
.handleDemo dl dd { height:calc(100% - 25px); }
#ACheck .close { bottom:40px; height:40px; font-size:40px; }
#ACheck .content { top:40px; left:40px; right:40px; bottom:120px; border-radius:8px; }
#ACheck dl { padding:4px 10px 10px; }
#ACheck dt { height:32px; font-size:16px; }
#ACheck dd { height:calc(100% - 32px); }
#ACheck dd p { line-height:22px; font-size:14px; margin:0 0 6px; }
}
@media screen and (max-width:359px){
header i { height:36px;}
header em { height:36px; font-size:15px; }
.headerblank { height:72px; }
#Afix h2 { line-height:36px; font-size:16px; height:36px; }
#Afix hgroup { top:36px; }
#Afix dl { line-height:32px; height:32px; font-size:13px; padding:0 8px; }
#Afix dd { font-size:16px; }
#Afix dt i { font-size:15px; }
#Bfix { top:36px; height:calc(100% - 36px); }
#Bfix h2 { line-height:36px; font-size:15px; height:36px; }
#Bfix hgroup { top:36px; max-height:calc(100% - 36px); }
#Bfix dl { line-height:32px; height:32px; font-size:13px; padding:0 8px; }
#Bfix dd { font-size:16px; }
#Bfix dt i { font-size:15px; }
.handleDemo p:before { right:5px; top:10px; font-size:22px; }
.handleDemo hgroup { border-radius:6px; padding:4px 8px; }
.handleDemo dl { padding:4px 0;}
.handleDemo dl dt { font-size:14px; line-height:14px; padding:0 0 8px; }
.handleDemo dl dd { height:calc(100% - 22px); }
#ACheck .close { bottom:36px; height:36px; font-size:36px; }
#ACheck .content { top:36px; left:36px; right:36px; bottom:108px; border-radius:5px; }
#ACheck dl { padding:4px 8px 8px; }
#ACheck dt { height:28px; font-size:15px; }
#ACheck dd { height:calc(100% - 28px); }
#ACheck dd p { line-height:20px; font-size:13px; margin:0 0 5px; }
}
\ No newline at end of file
/***Created By 潘正龙 version1.0 Time:2018-09-14 13:19:00
* Modified By 潘正龙 2018-09-14 version1.1 修改为单组件全局方法
* Modified By 潘正龙 2018-11-06 version1.2 修改获取全局参数的方法,增加获取用户手机设备的方法
* Modified By 潘正龙 2018-12-13 version1.3 修改组件的veryFy方法,原部分方法进行重置
***/
var pgyBase = {
/**通用选择器**/
$:function (selector) { return document.querySelector(selector) },
$$:function (selector) { return document.querySelectorAll(selector) },
HostUrl:'',
/**定义错误弹窗**/
$message:function(message){
pgyBase.$alertify[message.type](message.message);
},
/**新定义无TOKEN AJAX数据请求办法**/
Ajax:function (callBack, RequestAsync, RequestType, URL, Params) {
pgyBase.doAjaxResult(RequestAsync, RequestType, URL, do_result, Params);
function do_result(data){
return callBack(data);
}
},
doAjaxResult:function(RequestAsync, RequestType, URL, do_result, Params){
var c = new XMLHttpRequest() || new ActiveXObject('Msxml2.XMLHTTP') || new ActiveXObject('Microsoft.XMLHTTP'), e = new Date().valueOf();
if (URL.indexOf('?') != -1) {
URL = URL + '&t=' + e
}else{
URL = URL + '?t=' + e
}
c.open(RequestType, URL, RequestAsync); // true异步模式,false同步模式
c.onreadystatechange = function (){
if (c.readyState == 4) {
if (c.status == 200) {
do_result(JSON.parse(c.responseText))
}
}
}
if(RequestType == 'PUT'){ // 浏览器原生支持Content-Type
c.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
c.send(JSON.stringify(Params))
}else if (RequestType == 'GET') {
c.send(null)
}else if(RequestType == 'POST') {
c.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
c.send(JSON.stringify(Params))
}
},
restFn:function(arr,parent){
for(var i=0;i<arr.length;i++){
parent[arr[i]] = window[arr[i]];
window[arr[i]] = undefined;
}
},
/**异步引入css文件**/
LinkCss:function (path, parent) {
var link = document.createElement('link');
link.href = path+'?t='+(new Date()).valueOf();
link.rel = 'stylesheet';
link.type = 'text/css';
pgyBase.$$(parent).append(link);
},
/**定义时间戳转年月日**/
FormatDate:function (date, fmt) { //this.Format(this.TempList[i].createTime,'yyyy-MM-dd hh:mm:ss')
var o = {
"M+": new Date(date).getMonth() + 1, //月份
"d+": new Date(date).getDate(), //日
"h+": new Date(date).getHours(), //小时
"m+": new Date(date).getMinutes(), //分
"s+": new Date(date).getSeconds(), //秒
"q+": Math.floor((new Date(date).getMonth() + 3) / 3), //季度
"S": new Date(date).getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (new Date(date).getFullYear() + "").substr(4 - RegExp.$1.length))
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)))
return fmt
},
/**定义保留两位小数**/
ReturnFloat:function (value){ // 数字转化
var newvalue = Math.round(parseFloat(value)*100)/100
var MathValue = newvalue.toString().split(".")
if(MathValue.length==1){
value=value.toString()+".00"
return value
}
if(MathValue.length>1){
if(MathValue[1].length<2){
value=value.toString()+"0"
}
return value
}
},
/**获取URL参数**/
getURLParam:function (parameter, Back) {
var l = '', j = Back.replace(/&/g,'?').split('?');
for (var p = 0; p < j.length; p++) {
if (j[p].indexOf(parameter + '=') === 0) {
var i = j[p].split('=');
l = i[1];
break
}
}
return l;
},
/**Input验证**/
VeryFy:function (name, type, notice) {
var go = true;
if (type == 'tel') { // 手机号码
name = name.replace(/\s+/g, '').replace(/-/g, '')
if(name.length < 11){
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}else if(!(/^1[3|4|5|7|8|9][0-9]\d{4,8}$/.test(name)) && name.length > 0 || name.length > 11) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'num') { // 数字类型
name = name.replace(/\s+/g, '').replace(/-/g, '')
if(!(/^[0-9]*$/i.test(name)) && name.length > 0) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'int') {//正整数
name = name.toString().replace(/\s+/g, '').replace(/-/g, '')
if(!(/^([1-9][0-9]*)$/.test(name))) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
} else if(type == 'long') {//正数
name = name.replace(/\s+/g, '').replace(/-/g, '')
if(!(/^[0](\\.[0-9]*)|[1-9][0-9]*(\\.[0-9]*)?$/.test(name))) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
} else if(type == 'extand') {//数字和字母
name = name.replace(/\s+/g, '').replace(/-/g, '')
if(!(/^[A-Za-z0-9]+$/.test(name))) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
} else if(type == 'email') { // 邮箱
if(!(/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/.test(name))) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'pwd') { // 密码
if(!(/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{7,16}$/.test(name))) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'cvv2'){ // CVV2码
if(!(/^[0-9]*$/i.test(name))) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'validity'){ // 卡有效期
if(!(/^[0-9]*$/i.test(name))) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}else if(parseInt(name.substr(0,2)) > 12){
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'chinesename'){ // 中文
if (!/^[\u4e00-\u9fa5]+$/.test(name)) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == '15IdCard'){ //身份证正则表达式(15位)
if (!/^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$/.test(name)) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == '18IdCard'){ //身份证正则表达式(18位)
if (!/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(name)) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}
return go
},
/**比较两个数字或者日期的大小,num1 > num2为false**/
Validate:function (num1, num2, type, notice) {
var go = true;
if (type === 'num') {
if (num1 > num2) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
} else if (type === 'date') {
if (num1 > num2) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}
return go
},
/**定义两个object比较方法**/
ObjEqual:function (a, b) {
if (a == b)
return true
if (typeof(b) == "undefined" || b == null || typeof(b) != "object")
return false
var length = 0, length1 = 0
for (var ele in a) {
length++
}
for (var ele in b) {
length1++
}
if (length != length1)
return false
if (b.constructor == a.constructor) {
for (var ele in a) {
if (typeof(a[ele]) == "object") {
if (!a[ele].equals(b[ele])) {
return false
}
} else if (typeof(a[ele]) == "function") {
if (!a[ele].toString().equals(b[ele].toString())) {
return false
}
} else if (a[ele] != b[ele]) {
return false
}
}
return true
}
return false
},
/**对象转换为字符串**/
Obj2String:function (Obj){
var string = '', t = 0, NewObj = JSON.parse(JSON.stringify(Obj));
for(var p in NewObj){
if(!!NewObj[p]){
t++;
if(t==1){
string += '?'
}else{
string += '&'
}
string += p + '='+ NewObj[p]
}
};
return string;
},
/**获取设备的基本信息**/
getEpuipmentInfo:function(time){
var UA = navigator.userAgent.toLocaleLowerCase();
var UAList = UA.split(' '), t1 = UA.indexOf('('), t2 = UA.indexOf(')');
/**获取微信版本,获取网络类型**/
for(var j=0;j<UAList.length;j++){
if(UAList[j].indexOf('micromessenger') > -1){
sessionStorage.wxVersion = UAList[j]
}
if(UAList[j].indexOf('nettype') > -1){
sessionStorage.netType = UAList[j].split('/')[1]
}
}
var MList = UA.substr(t1, t2-t1).replace(/\(|\)|\?/g,'').split(';');
/**安卓设备**/
if(UA.indexOf("android") > -1 || UA.indexOf("linux") > -1){
for(var i=0;i<MList.length;i++){
if(MList[i].indexOf('android') > -1){
sessionStorage.equipmentOS = MList[i];
}
if(MList[i].indexOf('build') > -1){
sessionStorage.equipmentOEM = MList[i];
}
}
/**IOS设备**/
}else if(!!UA.match(/\(i[^;]+;( U;)? cpu.+mac os x/)){
var t1 = UA.indexOf('('), t2 = UA.indexOf(')');
var MList = UA.substr(t1, t2-t1).replace(/\(|\)|\?/g,'').split(';');
sessionStorage.equipmentOEM = 'Apple ' + MList[0];
sessionStorage.equipmentOS = 'IOS '+ MList[1].slice(MList[1].indexOf('os')+3,MList[1].indexOf('like')-1).replace(/\*|\_|\?/g,".");
}
sessionStorage.cTime = pgyBase.FormatDate(time, 'yyyy-MM-dd hh:mm:ss');
}
};
\ No newline at end of file
/**
* Created By 潘正龙 version1.0 Time:2018-09-14 13:19:00
* Modified By 潘正龙 2018-09-14 version1.1 修改为单组件全局方法
* Modified By 潘正龙 2018-11-06 version1.2 修改获取全局参数的方法,增加获取用户手机设备的方法
* Modified By 潘正龙 2018-12-10 version1.3 增加ajax的请求状态,并扔出错误状态;增加ajax请求超时的错误;删除图片上传方法
**/
var pgyBase = {
/***同步和异步CSS/JS引入***/
Async:{
// Type引入文件的类型,Path引入文件的路径,url引入文件的接入类型,Boolean引入文件的状态
Load:function(Type, Path, version, url, Boolean, El){
for(var i=0;i<pgyBase.$$$('script').length;i++){
if(pgyBase.$$$('script')[i].getAttribute('name')==Path){
return false;
}
}
var module = Path;
if(Path == 'BDEcharts'){
Path = 'https://cdn.bootcss.com/echarts/4.1.0/echarts.min.js'
}else if(Path == 'pgyEcharts.4.1.0'){
Path = 'modules/common/lib/pgy-components/pgy-echarts/pgy-echarts-4.1.0.js'
}
if(Boolean){ // false无时间戳走缓存,true有时间戳无缓存
Path = Path+'?version='+version+'&t='+ new Date().valueOf()
}else{
Path = Path+'?version='+version
}
if(url == 'link'){ // 异步,Url引入
pgyBase.Async.File(Type, Path, module, El)
}else if(url == 'release'){ // 同步,释放文件到页面
pgyBase.Async.CallBack(Type, Path, module, El)
}
},
FileText:function(Type, Text, module, El){ // 同步导入内容
if(Type=='js'){
var script = document.createElement("script");
script.type = "text/javascript";
script.text = Text;
script.setAttribute('name',module);
El.appendChild(script);
}else{
var style = document.createElement('link');
style.rel = 'stylesheet';
style.type = 'text/css';
style.cssText = Text;
style.setAttribute('name',module);
El.appendChild(style);
}
},
File:function(Type, Path, module, El){ //异步导入文件
if(Type=='js'){
var script = document.createElement("script");
script.type = "text/javascript";
script.src = Path;
script.setAttribute('name',module);
El.appendChild(script);
}else{
var style = document.createElement('link');
style.href = Path;
style.rel = 'stylesheet';
style.type = 'text/css';
style.setAttribute('name',module);
El.appendChild(style);
}
},
CallBack:function(Type, Path, module, El){ // 同步加载
var c = new XMLHttpRequest() || new ActiveXObject('Msxml2.XMLHTTP') || new ActiveXObject('Microsoft.XMLHTTP');
c.onreadystatechange = function(){
if(c.readyState == 4){
if(c.status == 200 || c.status == 304){
pgyBase.Async.FileText(Type, c.responseText, module, El);
//Async.File(Type, Path, module, El);
}else{
alert( '请求错误: ' + c.statusText + ' (' + c.status + ')' )
}
}
};
c.open('GET', Path, false);
c.send(null)
}
},
/**通用选择器**/
$:function (selector) { return document.querySelector(selector) },
$$:function (selector) { return document.querySelectorAll(selector) },
errorStatus:[400,401,403,404,500,503],
HostUrl:window.location.origin + '/bof_operation/rest/v11/',
/**新定义无TOKEN AJAX数据请求办法**/
Ajax:function(RequestAsync, RequestType, URL, do_result, Params){
var c = new XMLHttpRequest() || new ActiveXObject('Msxml2.XMLHTTP') || new ActiveXObject('Microsoft.XMLHTTP'), e = new Date().valueOf();
if (URL.indexOf('?') != -1) {
URL = URL + '&t=' + e
}else{
URL = URL + '?t=' + e
}
c.open(RequestType, URL, RequestAsync); // true异步模式,false同步模式
c.onreadystatechange = function (){
if(c.readyState == 4) {
if(c.status == 200){
console.log('4.正常获取数据,返回数据和回调');
do_result(JSON.parse(c.responseText));
return false;
}else{
console.log('4.请求出错,扔出错误码');
var status = false;
for(var i=0;i<pgyBase.errorStatus.length;i++){
if(c.status == pgyBase.errorStatus[i]){
status = pgyBase.errorStatus[i];
}
}
if(!!status){
alert('请求状态'+status+',请联系客服!');
}else{
alert('未获取到请求状态,请联系客服!');
}
return false;
}
setTimeout(function(){
c.abort(); // 取消ajax请求,c.readyState = 0;
alert('数据请求超时,请重新尝试!');
},15000);
}else if(c.readyState == 2){
console.log('2.ajax请求成功,send数据开始');
}else if(c.readyState == 3){
console.log('3.已经接收到HTTP响应头部信息,但是消息体部分还没有完全接收到');
}
}
if(RequestType == 'PUT'){ // 浏览器原生支持Content-Type
c.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
c.send(JSON.stringify(Params));
}else if (RequestType == 'GET') {
c.send(null);
}else if(RequestType == 'POST') {
c.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
c.send(JSON.stringify(Params));
}
},
/**全局ICONLIST**/
AIconList:{error:'&#xe602;',ok:'&#xe659;',notice:'&#xe60c;',alert:'&#xe64f;',success:'&#xe607;',q:'&#xe657;'},
CloseTime:1500,
/**自定义alert弹窗**/
$message:function(message){
var vm = this, messagetag = 1, timer = pgyBase.CloseTime, html = '', icon = '';
for(var item in pgyBase.AIconList){
if(item == message.type){
icon = pgyBase.AIconList[item];
}
}
if(!!pgyBase.$('#Anotice')){ // 已存在弹窗
messagetag ++
html += '<dl class="Anotice mflex"><dt class="iconfont">'+icon+'</dt><dd class="d1">'+message.message+'</dd></dl>';
pgyBase.$('#Anotice').innerHTML = html;
RemoveAnotice(messagetag ++,messagetag --)
}else{ // 不存在弹窗
html += '<dl class="Anotice mflex animation FSH"><dt class="iconfont">'+icon+'</dt><dd class="d1">'+message.message+'</dd></dl>';
var section = document.createElement('section');
section.id = 'Anotice';
section.className = 'mflex';
section.innerHTML = html;
var s = document.getElementsByTagName("script")[0];
pgyBase.$('body').insertBefore(section, s);
RemoveAnotice(messagetag ,messagetag --);
}
function RemoveAnotice(id,tag){
setTimeout(function(){
if(!!pgyBase.$('#Anotice') && tag >= id){
pgyBase.$('#Anotice').remove();
}
}, timer);
}
},
/**自定义confirm弹窗**/
$confirm:function(message){
var html = '', icon = '';
for(var item in pgyBase.AIconList){
if(item == message.type){
icon = pgyBase.AIconList[item];
}
}
html += '<dl class="Anotice mflex FSB">'+
'<dt class="iconfont">'+icon+'</dt>'+
'<dd class="d1">'+message.message+'</dd>'+
'<dd class="d2 flex">'+
'<i class="flex float_left cancel" onclick="handleACancel()">'+message.cancelButtonText+'</i>'+
'<i class="flex float_right confirm" onclick="handleAConfirm()">'+message.confirmButtonText+'</i>'+
'</dd>'+
'</dl>';
var section = document.createElement('section');
section.id = 'Anotice';
section.className = 'mflex';
section.innerHTML = html;
var s = document.getElementsByTagName("script")[0];
pgyBase.$('body').insertBefore(section, s);
},
/**异步引入css文件**/
LinkCss:function (path, parent) {
var link = document.createElement('link');
link.href = path+'?t='+(new Date()).valueOf();
link.rel = 'stylesheet';
link.type = 'text/css';
pgyBase.$$(parent).append(link);
},
/**定义时间戳转年月日**/
FormatDate:function (date, fmt) { //this.Format(this.TempList[i].createTime,'yyyy-MM-dd hh:mm:ss')
var o = {
"M+": new Date(date).getMonth() + 1, //月份
"d+": new Date(date).getDate(), //日
"h+": new Date(date).getHours(), //小时
"m+": new Date(date).getMinutes(), //分
"s+": new Date(date).getSeconds(), //秒
"q+": Math.floor((new Date(date).getMonth() + 3) / 3), //季度
"S": new Date(date).getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (new Date(date).getFullYear() + "").substr(4 - RegExp.$1.length))
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)))
return fmt
},
/**定义保留两位小数**/
ReturnFloat:function (value){ // 数字转化
var newvalue = Math.round(parseFloat(value)*100)/100
var MathValue = newvalue.toString().split(".")
if(MathValue.length==1){
value=value.toString()+".00"
return value
}
if(MathValue.length>1){
if(MathValue[1].length<2){
value=value.toString()+"0"
}
return value
}
},
/**获取URL参数**/
getURLParam:function (parameter, Back) {
var l = '', j = Back.replace(/&/g,'?').split('?');
for (var p = 0; p < j.length; p++) {
if (j[p].indexOf(parameter + '=') === 0) {
var i = j[p].split('=');
l = i[1];
break
}
}
return l;
},
/**Input验证**/
VeryFy:function (name, type, notice) {
var vm = this
var go = true
if (type == 'tel') { // 手机号码
name = name.replace(/\s+/g, '').replace(/-/g, '')
if(name.length < 11){
vm.$message({
message: notice,
type: 'error'
})
go = false
}else if(!(/^1[3|4|5|7|8|9][0-9]\d{4,8}$/.test(name)) && name.length > 0 || name.length > 11) {
vm.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'num') { // 数字类型
name = name.replace(/\s+/g, '').replace(/-/g, '')
if(!(/^[0-9]*$/i.test(name)) && name.length > 0) {
vm.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'int') {//正整数
name = name.toString().replace(/\s+/g, '').replace(/-/g, '')
if(!(/^([1-9][0-9]*)$/.test(name))) {
vm.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'long') {//正数
name = name.replace(/\s+/g, '').replace(/-/g, '')
if(!(/^[0](\\.[0-9]*)|[1-9][0-9]*(\\.[0-9]*)?$/.test(name))) {
vm.$message({
message: notice,
type: 'error'
})
go = false
}
} else if(type == 'extand') {//数字和字母
name = name.replace(/\s+/g, '').replace(/-/g, '')
if(!(/^[A-Za-z0-9]+$/.test(name))) {
vm.$message({
message: notice,
type: 'error'
})
go = false
}
} else if(type == 'email') { // 邮箱
if(!(/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/.test(name))) {
vm.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'pwd') { // 密码
if(!(/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{7,16}$/.test(name))) {
vm.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'cvv2'){ // CVV2码
if(!(/^[0-9]*$/i.test(name))) {
vm.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'validity'){ // 卡有效期
if(!(/^[0-9]*$/i.test(name))) {
vm.$message({
message: notice,
type: 'error'
})
go = false
}else if(parseInt(name.substr(0,2)) > 12){
vm.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'chinesename'){ // 中文
if (!/^[\u4e00-\u9fa5]+$/.test(name)) {
vm.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == '15IdCard'){ //身份证正则表达式(15位)
if (!/^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$/.test(name)) {
vm.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == '18IdCard'){ //身份证正则表达式(18位)
if (!/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(name)) {
vm.$message({
message: notice,
type: 'error'
})
go = false
}
}
return go
},
/**比较两个数字或者日期的大小,num1 > num2为false**/
Validate:function (num1, num2, type, notice) {
var vm = this
var go = true
if (type === 'num') {
if (num1 > num2) {
vm.$message({
message: notice,
type: 'error'
})
go = false
}
} else if (type === 'date') {
if (num1 > num2) {
vm.$message({
message: notice,
type: 'error'
})
go = false
}
}
return go
},
/**定义两个object比较方法**/
ObjEqual:function (a, b) {
if (a == b)
return true
if (typeof(b) == "undefined" || b == null || typeof(b) != "object")
return false
var length = 0, length1 = 0
for (var ele in a) {
length++
}
for (var ele in b) {
length1++
}
if (length != length1)
return false
if (b.constructor == a.constructor) {
for (var ele in a) {
if (typeof(a[ele]) == "object") {
if (!a[ele].equals(b[ele])) {
return false
}
} else if (typeof(a[ele]) == "function") {
if (!a[ele].toString().equals(b[ele].toString())) {
return false
}
} else if (a[ele] != b[ele]) {
return false
}
}
return true
}
return false
},
/**对象转换为字符串**/
Obj2String:function (Obj){
var string = '', t = 0, NewObj = JSON.parse(JSON.stringify(Obj));
for(var p in NewObj){
if(!!NewObj[p]){
t++;
if(t==1){
string += '?'
}else{
string += '&'
}
string += p + '='+ NewObj[p]
}
};
return string;
},
/**获取设备的基本信息**/
getEpuipmentInfo:function(time){
var UA = navigator.userAgent.toLocaleLowerCase();
var UAList = UA.split(' '), t1 = UA.indexOf('('), t2 = UA.indexOf(')');
/**获取微信版本,获取网络类型**/
for(var j=0;j<UAList.length;j++){
if(UAList[j].indexOf('micromessenger') > -1){
sessionStorage.wxVersion = UAList[j]
}
if(UAList[j].indexOf('nettype') > -1){
sessionStorage.netType = UAList[j].split('/')[1]
}
}
var MList = UA.substr(t1, t2-t1).replace(/\(|\)|\?/g,'').split(';');
/**安卓设备**/
if(UA.indexOf("android") > -1 || UA.indexOf("linux") > -1){
for(var i=0;i<MList.length;i++){
if(MList[i].indexOf('android') > -1){
sessionStorage.equipmentOS = MList[i];
}
if(MList[i].indexOf('build') > -1){
sessionStorage.equipmentOEM = MList[i];
}
}
/**IOS设备**/
}else if(!!UA.match(/\(i[^;]+;( U;)? cpu.+mac os x/)){
var t1 = UA.indexOf('('), t2 = UA.indexOf(')');
var MList = UA.substr(t1, t2-t1).replace(/\(|\)|\?/g,'').split(';');
sessionStorage.equipmentOEM = 'Apple ' + MList[0];
sessionStorage.equipmentOS = 'IOS '+ MList[1].slice(MList[1].indexOf('os')+3,MList[1].indexOf('like')-1).replace(/\*|\_|\?/g,".");
}
sessionStorage.cTime = pgyBase.FormatDate(time, 'yyyy-MM-dd hh:mm:ss');
}
};
\ No newline at end of file
/***Created By 潘正龙 version1.0 Time:2018-09-14 13:19:00
* Modified By 潘正龙 2018-09-14 version1.1 修改为单组件全局方法
* Modified By 潘正龙 2018-11-06 version1.2 修改获取全局参数的方法,增加获取用户手机设备的方法
* Modified By 潘正龙 2018-12-13 version1.3 修改组件的veryFy方法,原部分方法进行重置
***/
var pgyBase = {
/**通用选择器**/
$:function (selector) { return document.querySelector(selector) },
$$:function (selector) { return document.querySelectorAll(selector) },
HostUrl:'',
$stateGo:function(a,b,c){
return y.transitionTo(a,b,R({inherit:!0,relative:y.$current},c))
},
/**定义错误弹窗**/
$message:function(message){
pgyBase.$alertify[message.type](message.message);
},
/**新定义无TOKEN AJAX数据请求办法**/
Ajax:function (callBack, RequestAsync, RequestType, URL, Params) {
pgyBase.doAjaxResult(RequestAsync, RequestType, pgyBase.HostUrl + URL, do_result, Params);
function do_result(data){
return callBack(data);
}
},
doAjaxResult:function(RequestAsync, RequestType, URL, do_result, Params){
var c = new XMLHttpRequest() || new ActiveXObject('Msxml2.XMLHTTP') || new ActiveXObject('Microsoft.XMLHTTP'), e = new Date().valueOf();
if (URL.indexOf('?') != -1) {
URL = URL + '&t=' + e
}else{
URL = URL + '?t=' + e
}
c.open(RequestType, URL, RequestAsync); // true异步模式,false同步模式
c.onreadystatechange = function (){
if (c.readyState == 4) {
if (c.status == 200) {
do_result(JSON.parse(c.responseText))
}
}
}
if(RequestType == 'PUT'){ // 浏览器原生支持Content-Type
c.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
c.send(JSON.stringify(Params))
}else if (RequestType == 'GET') {
c.send(null)
}else if(RequestType == 'POST') {
c.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
c.send(JSON.stringify(Params))
}
},
restFn:function(arr,parent){
for(var i=0;i<arr.length;i++){
parent[arr[i]] = window[arr[i]];
window[arr[i]] = undefined;
}
},
/**异步引入css文件**/
LinkCss:function (path, parent) {
var link = document.createElement('link');
link.href = path+'?t='+(new Date()).valueOf();
link.rel = 'stylesheet';
link.type = 'text/css';
pgyBase.$$(parent).append(link);
},
/**定义时间戳转年月日**/
FormatDate:function (date, fmt) { //this.Format(this.TempList[i].createTime,'yyyy-MM-dd hh:mm:ss')
var o = {
"M+": new Date(date).getMonth() + 1, //月份
"d+": new Date(date).getDate(), //日
"h+": new Date(date).getHours(), //小时
"m+": new Date(date).getMinutes(), //分
"s+": new Date(date).getSeconds(), //秒
"q+": Math.floor((new Date(date).getMonth() + 3) / 3), //季度
"S": new Date(date).getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (new Date(date).getFullYear() + "").substr(4 - RegExp.$1.length))
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)))
return fmt
},
/**定义保留两位小数**/
ReturnFloat:function (value){ // 数字转化
var newvalue = Math.round(parseFloat(value)*100)/100
var MathValue = newvalue.toString().split(".")
if(MathValue.length==1){
value=value.toString()+".00"
return value
}
if(MathValue.length>1){
if(MathValue[1].length<2){
value=value.toString()+"0"
}
return value
}
},
/**获取URL参数**/
getURLParam:function (parameter, Back) {
var l = '', j = Back.replace(/&/g,'?').split('?');
for (var p = 0; p < j.length; p++) {
if (j[p].indexOf(parameter + '=') === 0) {
var i = j[p].split('=');
l = i[1];
break
}
}
return l;
},
/**Input验证**/
VeryFy:function (name, type, notice) {
var go = true;
if (type == 'tel') { // 手机号码
name = name.replace(/\s+/g, '').replace(/-/g, '')
if(name.length < 11){
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}else if(!(/^1[3|4|5|7|8|9][0-9]\d{4,8}$/.test(name)) && name.length > 0 || name.length > 11) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'num') { // 数字类型
name = name.replace(/\s+/g, '').replace(/-/g, '')
if(!(/^[0-9]*$/i.test(name)) && name.length > 0) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'int') {//正整数
name = name.toString().replace(/\s+/g, '').replace(/-/g, '')
if(!(/^([1-9][0-9]*)$/.test(name))) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
} else if(type == 'long') {//正数
name = name.replace(/\s+/g, '').replace(/-/g, '')
if(!(/^[0](\\.[0-9]*)|[1-9][0-9]*(\\.[0-9]*)?$/.test(name))) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
} else if(type == 'extand') {//数字和字母
name = name.replace(/\s+/g, '').replace(/-/g, '')
if(!(/^[A-Za-z0-9]+$/.test(name))) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
} else if(type == 'email') { // 邮箱
if(!(/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/.test(name))) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'pwd') { // 密码
if(!(/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{7,16}$/.test(name))) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'cvv2'){ // CVV2码
if(!(/^[0-9]*$/i.test(name))) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'validity'){ // 卡有效期
if(!(/^[0-9]*$/i.test(name))) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}else if(parseInt(name.substr(0,2)) > 12){
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == 'chinesename'){ // 中文
if (!/^[\u4e00-\u9fa5]+$/.test(name)) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == '15IdCard'){ //身份证正则表达式(15位)
if (!/^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$/.test(name)) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}else if(type == '18IdCard'){ //身份证正则表达式(18位)
if (!/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(name)) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}
return go
},
/**比较两个数字或者日期的大小,num1 > num2为false**/
Validate:function (num1, num2, type, notice) {
var go = true;
if (type === 'num') {
if (num1 > num2) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
} else if (type === 'date') {
if (num1 > num2) {
pgyBase.$message({
message: notice,
type: 'error'
})
go = false
}
}
return go
},
/**定义两个object比较方法**/
ObjEqual:function (a, b) {
if (a == b)
return true
if (typeof(b) == "undefined" || b == null || typeof(b) != "object")
return false
var length = 0, length1 = 0
for (var ele in a) {
length++
}
for (var ele in b) {
length1++
}
if (length != length1)
return false
if (b.constructor == a.constructor) {
for (var ele in a) {
if (typeof(a[ele]) == "object") {
if (!a[ele].equals(b[ele])) {
return false
}
} else if (typeof(a[ele]) == "function") {
if (!a[ele].toString().equals(b[ele].toString())) {
return false
}
} else if (a[ele] != b[ele]) {
return false
}
}
return true
}
return false
},
/**对象转换为字符串**/
Obj2String:function (Obj){
var string = '', t = 0, NewObj = JSON.parse(JSON.stringify(Obj));
for(var p in NewObj){
if(!!NewObj[p]){
t++;
if(t==1){
string += '?'
}else{
string += '&'
}
string += p + '='+ NewObj[p]
}
};
return string;
},
/**获取设备的基本信息**/
getEpuipmentInfo:function(time){
var UA = navigator.userAgent.toLocaleLowerCase();
var UAList = UA.split(' '), t1 = UA.indexOf('('), t2 = UA.indexOf(')');
/**获取微信版本,获取网络类型**/
for(var j=0;j<UAList.length;j++){
if(UAList[j].indexOf('micromessenger') > -1){
sessionStorage.wxVersion = UAList[j]
}
if(UAList[j].indexOf('nettype') > -1){
sessionStorage.netType = UAList[j].split('/')[1]
}
}
var MList = UA.substr(t1, t2-t1).replace(/\(|\)|\?/g,'').split(';');
/**安卓设备**/
if(UA.indexOf("android") > -1 || UA.indexOf("linux") > -1){
for(var i=0;i<MList.length;i++){
if(MList[i].indexOf('android') > -1){
sessionStorage.equipmentOS = MList[i];
}
if(MList[i].indexOf('build') > -1){
sessionStorage.equipmentOEM = MList[i];
}
}
/**IOS设备**/
}else if(!!UA.match(/\(i[^;]+;( U;)? cpu.+mac os x/)){
var t1 = UA.indexOf('('), t2 = UA.indexOf(')');
var MList = UA.substr(t1, t2-t1).replace(/\(|\)|\?/g,'').split(';');
sessionStorage.equipmentOEM = 'Apple ' + MList[0];
sessionStorage.equipmentOS = 'IOS '+ MList[1].slice(MList[1].indexOf('os')+3,MList[1].indexOf('like')-1).replace(/\*|\_|\?/g,".");
}
sessionStorage.cTime = pgyBase.FormatDate(time, 'yyyy-MM-dd hh:mm:ss');
},
getUserSession:function(){
},
setUserSession:function(user){
}
};
\ No newline at end of file
/**
** Modified By 潘正龙 2019-01-07 15:01:00 version:1.0.2,新定义无AJAX数据请求办法,带入回调
**/
vm.$$.Ajax = function (callBack, RequestAsync, RequestType, URL, Params) {
vm.$$.doAjaxResult(RequestAsync, RequestType,vm.$$.HostUrl + URL, do_result, Params);
function do_result(data){
return callBack(data);
}
}
vm.$$.doAjaxResult = function(RequestAsync, RequestType, URL, do_result, Params){
var c = new XMLHttpRequest() || new ActiveXObject('Msxml2.XMLHTTP') || new ActiveXObject('Microsoft.XMLHTTP'), e = new Date().valueOf();
if (URL.indexOf('?') != -1) {
URL = URL + '&t=' + e
}else{
URL = URL + '?t=' + e
}
c.open(RequestType, URL, RequestAsync); // true异步模式,false同步模式
c.onreadystatechavme = function (){
if(c.readyState == 4) {
if (c.status == 200) {
if (typeof c.responseText == 'strivm') {
try {
var obj = JSON.parse(c.responseText);
if(typeof obj == 'object' && obj ){
do_result(JSON.parse(c.responseText))
}else{
do_result(c.responseText)
}
} catch(e) {
do_result(c.responseText)
}
}
}
}
}
if(RequestType == 'PUT'){ // 浏览器原生支持Content-Type
c.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
c.send(JSON.strivmify(Params))
}else if (RequestType == 'GET') {
c.send(null)
}else if(RequestType == 'POST') {
c.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
c.send(JSON.strivmify(Params))
}
}
\ No newline at end of file
/**
** Created By 潘正龙 2019-01-07 15:14:00 version:1.0.0
**/
ng.$$.$FormatDate = function (date, fmt) { //this.Format(this.TempList[i].createTime,'yyyy-MM-dd hh:mm:ss')
var o = {
"M+": new Date(date).getMonth() + 1, //月份
"d+": new Date(date).getDate(), //日
"h+": new Date(date).getHours(), //小时
"m+": new Date(date).getMinutes(), //分
"s+": new Date(date).getSeconds(), //秒
"q+": Math.floor((new Date(date).getMonth() + 3) / 3), //季度
"S": new Date(date).getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (new Date(date).getFullYear() + "").substr(4 - RegExp.$1.length))
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)))
return fmt
}
\ No newline at end of file
/**
** Created By 潘正龙 version1.0 Time:2018-08-31 创建原生JS方法
** Modified By 潘正龙 version1.1 Time:2018-09-18 修改为兼容Angular的原生方法
** Modified By 潘正龙 version1.2 Time:2018-09-19 修改为通用类别的原生方法
** Modified By 潘正龙 version1.3 Time:2018-10-17 修改from和steplist在修改状态下的ajax数据提交方法(同步,其他都是异步)
**/
var collectGuestBehavior = {
from:{},
stepLists:[],
// 获取Route-Start参数
startRoute:function(systemService, toState, toParams, fromState, fromParams){
if(!sessionStorage.from && !sessionStorage.stepLists){ // 未设置collect参数
var from = collectGuestBehavior.buildFrom(systemService, collectGuestBehavior.from), stepLists = collectGuestBehavior.stepLists;
var SEList = [
{test:'baidu.com',name:'百度搜索引擎',type:1},
{test:'so.com',name:'360搜索引擎',type:1},
{test:'sogou.com',name:'搜狗搜索引擎',type:1},
{test:'bing.com',name:'必应搜索引擎',type:1},
{test:'google.com',name:'谷歌搜索引擎',type:1},
{test:'qq.com',name:'QQ搜索引擎',type:1},
{test:'360.cn',name:'360搜索引擎',type:1},
{test:'sohu.com',name:'搜狐搜索引擎',type:1},
{test:'sina.com.cn',name:'新浪搜索引擎',type:1},
{test:'2345.com',name:'2345搜索引擎',type:1},
{test:'hao123.com',name:'hao123搜索引擎',type:1},
{test:'soso.com',name:'搜搜搜索引擎',type:1},
{test:'haoso.com',name:'好搜搜索引擎',type:1},
{test:'easou.com',name:'宜搜搜索引擎',type:1},
{test:'roboo.com',name:'儒豹搜索引擎',type:1},
{test:'sm.cn',name:'神马搜索引擎',type:1},
{test:'chinaso.com',name:'中国搜索引擎',type:1},
{test:'yicha.cn',name:'易查搜索引擎',type:1},
{test:'youdao.com',name:'网易有道搜索引擎',type:1},
{test:'zhongsou.cn',name:'中搜搜索引擎',type:1}
];
$.ajax({ // 获取服务端Request Headers信息,定义From来源
url: window.location.href,
type: "GET",
async:false,
error:function(){},
success:function(data,textStatus,res){
if(!!res.getResponseHeader("Referer")){ // 从其他网站跳转过来
from.fromUrl = res.getResponseHeader("Referer");
from.fromTitle = '站外链接';
from.fromType = 2;
for(var i=0;i<SEList.length;i++){
if(from.fromUrl.indexOf(SEList[i].test) > -1){
from.fromType = SEList[i].type;
from.fromTitle = SEList[i].name
}
}
}else{ // 从本地跳转或者无结果
from.fromType = 3;
if(toState.name == 'page.login'){
from.fromUrl = fromState.name;
from.fromTitle = '系统登录';
}else{
from.fromUrl = window.location.href.split('&newDate')[0].split('&_')[0];
from.fromTitle = toState.title;
}
}
}
});
var first = {};
first = collectGuestBehavior.buildStep(first, toState, toParams, fromState, fromParams, from);
stepLists.push(first);
sessionStorage.stepLists = JSON.stringify(stepLists);
sessionStorage.from = JSON.stringify(from);
}else if(!!sessionStorage.from && !!sessionStorage.stepLists){ // 已设置collect参数
var from = JSON.parse(sessionStorage.from), stepLists = JSON.parse(sessionStorage.stepLists);
var previous = stepLists[stepLists.length - 1],next = {};
previous.pageUrl = window.location.href.split('&newDate')[0].split('&_')[0];
previous.endTime = new Date().valueOf();
previous.stepTime = previous.endTime - previous.startTime;
next = collectGuestBehavior.buildStep(next, toState, toParams, fromState, fromParams, from, previous);
stepLists.push(next);
sessionStorage.stepLists = JSON.stringify(stepLists);
}
},
// 获取Route-Success参数
successRoute:function(systemService, toState, toParams, fromState, fromParams){
if(!!sessionStorage.from && !!sessionStorage.stepLists){ // 修改参数,定义steps
var from = JSON.parse(sessionStorage.from), stepLists=JSON.parse(sessionStorage.stepLists);
from.endTime = new Date().valueOf();
var current = stepLists[stepLists.length - 1]; // 当前数据
current.loadTime = from.endTime - current.startTime;
if(!from.fromUrl){
from.fromUrl = window.location.href.split('&newDate')[0].split('&_')[0];
from.fromTitle = current.title
}
if(!from.userId){ // 用户信息不存在
if(!!systemService.getUserSession()){ // 用户首次登录
//console.log('用户首次登录,提交数据')
var UserInfo = systemService.getUserSession();
from.userId = UserInfo.id;
from.userType = UserInfo.ownerId;
collectGuestBehavior.submit('from',from,'add', true); // 创建新的from提交
var visitKey = JSON.parse(sessionStorage.from).visitKey, NewStepLists = [];
for(var i=0;i<stepLists.length;i++){
stepLists[i].visitKey = visitKey;
if(!!stepLists[i].pageUrl){
collectGuestBehavior.submit('step',stepLists[i],'add', true);
}else{
NewStepLists.push(stepLists[i])
}
}
sessionStorage.stepLists = JSON.stringify(NewStepLists);
return false;
}else{ // 用户未登录
//console.log('用户未登录,不提交数据')
return false;
}
}else{ // 用户信息已存在
if(toState.name == 'page.login'){ // 退出登录
if(stepLists.length > 2){ //
stepLists.splice(0,1)
}
collectGuestBehavior.submit('from',from,'edit', true); // 提交修改后的from
for(var i=0;i<stepLists.length;i++){
if(!!stepLists[i].pageUrl){
stepLists[i].pageUrl = window.location.href.split('&newDate')[0].split('&_')[0];
stepLists[i].endTime = new Date().valueOf();
stepLists[i].loadTime = from.endTime - stepLists[i].startTime;
stepLists[i].stepTime = stepLists[i].endTime - stepLists[i].startTime;
}
collectGuestBehavior.submit('step',stepLists[i],'add', true); // List提交
}
//sessionStorage.tempFrom = sessionStorage.from;
sessionStorage.removeItem('stepLists'); // 清除list
sessionStorage.removeItem('from'); // 清除from
}else{ // 正常访问
if(!from.visitKey){ // 未获取到key
return false;
}
if(stepLists.length > 2){ // 第一次点击以后提交stepList[0]
stepLists.splice(0,1)
}else if(stepLists.length == 1){
console.log('检查成功不提交');
return false
}
collectGuestBehavior.submit('step',stepLists[0],'add', true); // 创建新的step提交
sessionStorage.stepLists = JSON.stringify(stepLists);
}
}
}
},
//用户采集数据提交
submit:function(collectType, obj, type, RequestAsync) {
var NewObj = JSON.parse(JSON.stringify(obj)), URL = pgyBase.HostUrl, AjaxType;
if(collectType == 'step'){
for(var i in NewObj){
if(i == 'startTime' || i == 'endTime'){
NewObj[i] = NewObj[i] + parseFloat(localStorage.TimeDvalue)
}
}
URL += 'behavioralDataDetails';
AjaxType = 'POST';
console.log('新增list');
}else if(collectType == 'from'){
URL += 'behavioralDatas';
if(type == 'add'){
for(var i in NewObj){
if(i == 'startTime' || i == 'endTime'){
NewObj[i] = NewObj[i] + parseFloat(localStorage.TimeDvalue)
}
}
AjaxType = 'POST';
console.log('新增from');
}else if(type == 'edit'){
for(var i in NewObj){
if(i == 'endTime'){
NewObj[i] = NewObj[i] + parseFloat(localStorage.TimeDvalue)
}
}
AjaxType = 'PUT';
console.log('修改from');
}
}
pgyBase.Ajax(RequestAsync, AjaxType, URL, do_result, NewObj);
function do_result(res) {
if(collectType == 'from' && res.status == 'SUCCESS' && type == 'add'){
sessionStorage.from = JSON.stringify(res.content);
}
}
},
// 获取From参数
buildFrom:function (systemService, obj) {
obj = {
ipAddress:'', // 用户IP信息
equipment:'', // 设备
equipmentOS:'', // 设备系统
osVersion:'', // 系统版本
browser:'', // 浏览器
browserVersion:'', // 浏览器版本
startTime: new Date().valueOf(), // 定义开始时间
endTime: '', // 定义结束时间
visitKey: '', // 获取用户的UID
fromType:null, // 访问来源类型
fromUrl:'', // 访问来源url
fromTitle:'', // 访问的备注说明
userType:null, // 用户类型
userId:null // 用户主键id
};
var UA = navigator.userAgent.toLocaleLowerCase();
// 第一步先判断设备类型,OS类型,OS版本
if(UA.indexOf("macintosh") > -1){ // 判断苹果电脑
obj.equipment = 'Macintosh';
obj.equipmentOS = 'Mac OS X';
var t = UA.indexOf('mac os x'), t1 = UA.indexOf(')');
obj.osVersion = UA.slice(t+9,t1).replace('mac os x','').replace(/_/g, '.');
/*
var PcList = UA.split(';');
for(var i=0;i<PcList.length;i++){
if(PcList[i].indexOf('mac os x')){
obj.osVersion = PcList[i].slice(PcList[i].indexOf('mac os x'),PcList[i].length).replace('mac os x','').replace(/_/g, '.')
}
}*/
if(obj.osVersion == ''){
obj.osVersion = 'Mac OS X'
}
}else if(UA.indexOf("windows") > -1){ // 判断windows电脑
obj.equipment = 'Windows';
var PcList = [
{name:'5.0',OS:'2000',version:'2000'},
{name:'5.1',OS:'XP',version:'Sp1 / Sp2'},
{name:'5.2',OS:'XP / 2003',version:'XP Sp3 / Server 2003'},
{name:'6.0',OS:'Vista / 2008',version:'Vista / Server 2008'},
{name:'6.1',OS:'7 / 2008',version:'7 / Server 2008 R2'},
{name:'6.2',OS:'8 / 2012',version:'8 / Server 2012'},
{name:'6.3',OS:'8.1 / 2012',version:'8.1 / Server 2012 R2'},
{name:'6.4',OS:'10',version:'6.4'},
{name:'10.0',OS:'10',version:'10.0'}
];
for(var i=0;i<PcList.length;i++){
var win = 'windows nt '+ PcList[i].name;
if(UA.indexOf(win) > -1){
obj.equipmentOS = 'Windows '+PcList[i].OS;
obj.osVersion = 'Win'+PcList[i].version
}
}
}else if(UA.indexOf("android") > -1 || UA.indexOf("linux") > -1){ // 安卓设备
obj.equipment = 'Android';
var MList = UA.split(';');
for(var i=0;i<MList.length;i++){
if(MList[i].indexOf('android')){
obj.equipmentOS = 'Android'+ MList[i].slice(MList[i].indexOf('android'),MList[i].length).replace('android','').replace(/\*|\_|\?/g,".").replace(/\-|\+|\?/g," ")
}
if(MList[i].indexOf('build')){
obj.osVersion = MList[i].slice(0,MList[i].indexOf('build')).replace(/\*|\_|\?/g,".").replace(/\-|\/|\+|\?/g," ")
}
}
}else if(!!UA.match(/\(i[^;]+;( U;)? cpu.+mac os x/)){ // IOS设备
obj.equipment = 'IOS';
if(UA.indexOf('iphone') > -1){
obj.equipmentOS = 'Iphone'
}else if(UA.indexOf('ipad') > -1){
obj.equipmentOS = 'Ipad'
}else if(UA.indexOf('ipod') > -1){
obj.equipmentOS = 'Ipod'
}
obj.osVersion = UA.slice(UA.lastIndexOf(obj.equipmentOS),UA.indexOf('like')-1).replace(obj.equipmentOS+' os','').replace(/\*|\_|\?/g,".").replace(/\-|\/|\+|\?/g," ")
}
// 第二步通用获取浏览类的类型和版本
var UAList = UA.split(' ');
var TestList = [
{test:'tencenttraveler',name:'TencentTraveler',get:'tencenttraveler'},
{test:'firefox',name:'FireFox',get:'firefox'},
{test:'micromessenger',name:'WeXin',get:'micromessenger'},
{test:'edge',name:'Edge',get:'edge'},
{test:'bidubrowser',name:'BaiDuBrowser',get:'bidubrowser'},
{test:'maxthon',name:'Maxthon',get:'maxthon'},
{test:'qqbrowser',name:'QQBrowser',get:'qqbrowser'},
{test:'opera',name:'Opera',get:'opera'},
{test:'opr',name:'Opera',get:'opr'},
{test:'presto',name:'Opera',get:'version'},
{test:'360se',name:'360SE',get:'360se'},
{test:'360ee',name:'360EE',get:'360ee'},
{test:'metasr',name:'SoGou',get:'metasr'},
{test:'se',name:'SoGou',get:'se'},
{test:'the world',name:'The World',get:'the world'},
{test:'theworld',name:'The World',get:'theworld'},
{test:'uc',name:'UC',get:'uc'},
{test:'ubrowser',name:'UC',get:'ubrowser'},
{test:'lbbrowser',name:'LBBrowser',get:'lbbrowser'},
{test:'version',name:'Safari',get:'version'},
{test:'chrome',name:'Chrome',get:'chrome'},
{test:'iemobile',name:'IEMobile',get:'iemobile'},
{test:'trident/7.0',name:'MSIE',get:'rv:'},
{test:'msie',name:'MSIE',get:'msie'}
];
/****先判断webkit核心****/
if(UA.indexOf('khtml') > -1 && UA.indexOf('gecko') > -1 && UA.indexOf('safari') > -1 && UA.indexOf('applewebkit') > -1){
for(var i=0;i<TestList.length;i++) {
if (UA.indexOf(TestList[i].test) > -1) {
obj.browser = TestList[i].name;
getBrowserVersion(TestList[i].get);
break;
}
}
}else{ /**判断非webkit核心浏览器**/
for(var i=0;i<TestList.length;i++){
if(UA.indexOf(TestList[i].test) > -1){
obj.browser = TestList[i].name;
getBrowserVersion(TestList[i].get);
break;
}
}
}
/**IE内核加以判断**/
if(UA.indexOf("trident") > -1 || UA.indexOf("msie") > -1){ // IE内核加以判断
if(UA.indexOf("msie") > -1){
getBrowserVersion('msie')
}else if(UA.indexOf("trident") > -1){
getBrowserVersion('rv')
}
obj.browserVersion = 'IE'+ obj.browserVersion;
}
/**浏览器版本获取方法**/
function getBrowserVersion(browser) {
for(var i=0;i<UAList.length;i++){
if(UAList[i].indexOf(browser) > -1){
UAList[i] = UAList[i].replace(/\;|\:|\)|\*|\_|\-|\/|\+|\?/g,'');
obj.browserVersion = UAList[i].slice(UAList[i].indexOf(browser)+browser.length,UA.length);
break;
}
}
}
return obj;
},
// 创建采集对象
buildStep:function(obj, toState, toParams, fromState, fromParams, from, previous){
obj = {
controller:toState.controller,
pageUrl:'',
pageTitle:toState.title,
pageRoute:toState.name,
name:toState.url,
params:'',
startTime:'' || 0, // 开始时间
endTime:'' || 0, // 结束时间
loadTime:'' || 0, // 加载时间
stepTime:'' || 0, // 停留时间
visitKey:from.visitKey // 用户的UID
};
if(!!previous){
obj.startTime = previous.endTime
}else{
obj.startTime = from.startTime
}
if(!!toParams){
obj.params = JSON.parse(JSON.stringify(toParams));
if(!!obj.params.newDate){
delete obj.params.newDate
}
if(!!obj.params._){
delete obj.params._
}
obj.params = JSON.stringify(obj.params)
}else{
obj.params = '采集菜单,功能切换'
}
return obj;
}
};
// 监控窗口刷新和窗口的关闭状态
$(window).bind('beforeunload', function(){
var from = JSON.parse(sessionStorage.from), stepLists=JSON.parse(sessionStorage.stepLists);
var goFresh = stepLists[stepLists.length - 1];
goFresh.pageUrl = window.location.href.split('&newDate')[0].split('&_')[0];
goFresh.endTime = new Date().valueOf();
goFresh.stepTime = goFresh.endTime - goFresh.startTime;
from.endTime = goFresh.endTime;
collectGuestBehavior.submit('from',from,'edit', false); // 提交修改后的from
collectGuestBehavior.submit('step',goFresh,'add', false); // 提交新的step
if(stepLists.length == 2){
stepLists.splice(0,1)
}
sessionStorage.stepLists = JSON.stringify(stepLists);
sessionStorage.from = JSON.stringify(from);
return '您可能有数据没有保存';
});
window.onbeforeunload = function() {
var n = window.event.screenX - window.screenLeft;
var b = n > document.documentElement.scrollWidth-20;
if(b && window.event.clientY < 0 || window.event.altKey) {
console.log("是关闭而非刷新");
}else{
console.log("是刷新而非关闭");
}
};
body, html { font-size: 100%; padding: 0; margin: 0;}
/* Reset */
*,
*:after,
*:before {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
/* Clearfix hack by Nicolas Gallagher: http://nicolasgallagher.com/micro-clearfix-hack/ */
.clearfix:before,
.clearfix:after {
content: " ";
display: table;
}
.clearfix:after {
clear: both;
}
body{
background: #f9f7f6;
color: #404d5b;
font-weight: 500;
font-size: 1.05em;
font-family: "Segoe UI", "Lucida Grande", Helvetica, Arial, "Microsoft YaHei", FreeSans, Arimo, "Droid Sans", "wenquanyi micro hei", "Hiragino Sans GB", "Hiragino Sans GB W3", "FontAwesome", sans-serif;
}
a{color: #2fa0ec;text-decoration: none;outline: none;}
a:hover,a:focus{color:#74777b;}
.htmleaf-container{
margin: 0 auto;
text-align: center;
overflow: hidden;
}
.htmleaf-content {
font-size: 150%;
padding: 1em 0;
}
.htmleaf-content h2 {
margin: 0 0 2em;
opacity: 0.1;
}
.htmleaf-content p {
margin: 1em 0;
padding: 5em 0 0 0;
font-size: 0.65em;
}
.bgcolor-1 { background: #f0efee; }
.bgcolor-2 { background: #f9f9f9; }
.bgcolor-3 { background: #e8e8e8; }/*light grey*/
.bgcolor-4 { background: #2f3238; color: #fff; }/*Dark grey*/
.bgcolor-5 { background: #df6659; color: #521e18; }/*pink1*/
.bgcolor-6 { background: #2fa8ec; }/*sky blue*/
.bgcolor-7 { background: #d0d6d6; }/*White tea*/
.bgcolor-8 { background: #3d4444; color: #fff; }/*Dark grey2*/
.bgcolor-9 { background: #ef3f52; color: #fff;}/*pink2*/
.bgcolor-10{ background: #64448f; color: #fff;}/*Violet*/
.bgcolor-11{ background: #3755ad; color: #fff;}/*dark blue*/
.bgcolor-12{ background: #3498DB; color: #fff;}/*light blue*/
/* Header */
.htmleaf-header{
padding: 1em 190px 1em;
letter-spacing: -1px;
text-align: center;
}
.htmleaf-header h1 {
font-weight: 600;
font-size: 2em;
line-height: 1;
margin-bottom: 0;
font-family: "Segoe UI", "Lucida Grande", Helvetica, Arial, "Microsoft YaHei", FreeSans, Arimo, "Droid Sans", "wenquanyi micro hei", "Hiragino Sans GB", "Hiragino Sans GB W3", "FontAwesome", sans-serif;
}
.htmleaf-header h1 span {
font-family: "Segoe UI", "Lucida Grande", Helvetica, Arial, "Microsoft YaHei", FreeSans, Arimo, "Droid Sans", "wenquanyi micro hei", "Hiragino Sans GB", "Hiragino Sans GB W3", "FontAwesome", sans-serif;
display: block;
font-size: 60%;
font-weight: 400;
padding: 0.8em 0 0.5em 0;
color: #c3c8cd;
}
/*nav*/
.htmleaf-demo a{color: #1d7db1;text-decoration: none;}
.htmleaf-demo{width: 100%;padding-bottom: 1.2em;}
.htmleaf-demo a{display: inline-block;margin: 0.5em;padding: 0.6em 1em;border: 3px solid #1d7db1;font-weight: 700;}
.htmleaf-demo a:hover{opacity: 0.6;}
.htmleaf-demo a.current{background:#1d7db1;color: #fff; }
.btn{
display: inline-block;margin: 0.5em;padding: 0.6em 1em;border: 3px solid #1d7db1;font-weight: 700;background:#1d7db1;color: #fff;text-decoration: none;
}
a.btn:hover{opacity: 0.6;color: #fff;}
a.btn:focus{opacity: 1;color: #fff;}
/* Top Navigation Style */
.htmleaf-links {
position: relative;
display: inline-block;
white-space: nowrap;
font-size: 1.5em;
text-align: center;
}
.htmleaf-links::after {
position: absolute;
top: 0;
left: 50%;
margin-left: -1px;
width: 2px;
height: 100%;
background: #dbdbdb;
content: '';
-webkit-transform: rotate3d(0,0,1,22.5deg);
transform: rotate3d(0,0,1,22.5deg);
}
.htmleaf-icon {
display: inline-block;
margin: 0.5em;
padding: 0em 0;
width: 1.5em;
text-decoration: none;
}
.htmleaf-icon span {
display: none;
}
.htmleaf-icon:before {
margin: 0 5px;
text-transform: none;
font-weight: normal;
font-style: normal;
font-variant: normal;
font-family: 'icomoon';
line-height: 1;
speak: none;
-webkit-font-smoothing: antialiased;
}
/* footer */
.htmleaf-footer{width: 100%;padding-top: 10px;}
.htmleaf-small{font-size: 0.8em;}
.center{text-align: center;}
/****/
.related {
color: #fff;
background: #333;
text-align: center;
font-size: 1.25em;
padding: 0.5em 0;
margin-top: 10px;
overflow: hidden;
}
.related > a {
vertical-align: top;
width: calc(100% - 20px);
max-width: 340px;
display: inline-block;
text-align: center;
margin: 20px 10px;
padding: 25px;
font-family: "Segoe UI", "Lucida Grande", Helvetica, Arial, "Microsoft YaHei", FreeSans, Arimo, "Droid Sans", "wenquanyi micro hei", "Hiragino Sans GB", "Hiragino Sans GB W3", "FontAwesome", sans-serif;
}
.related a {
display: inline-block;
text-align: left;
margin: 20px auto;
padding: 10px 20px;
opacity: 0.8;
-webkit-transition: opacity 0.3s;
transition: opacity 0.3s;
-webkit-backface-visibility: hidden;
}
.related a:hover,
.related a:active {
opacity: 1;
}
.related a img {
max-width: 100%;
opacity: 0.8;
border-radius: 4px;
}
.related a:hover img,
.related a:active img {
opacity: 1;
}
.related h3{font-family: "Microsoft YaHei", sans-serif;}
.related a h3 {
font-weight: 300;
margin-top: 0.15em;
color: #fff;
}
/* icomoon */
.icon-htmleaf-home-outline:before {
content: "\e5000";
}
.icon-htmleaf-arrow-forward-outline:before {
content: "\e5001";
}
@media screen and (max-width: 50em) {
.htmleaf-header {
padding: 3em 10% 4em;
}
.htmleaf-header h1 {
font-size:2em;
}
}
@media screen and (max-width: 40em) {
.htmleaf-header h1 {
font-size: 1.5em;
}
}
@media screen and (max-width: 30em) {
.htmleaf-header h1 {
font-size:1.2em;
}
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
/**仪表盘原生组件,Modified By 潘正龙 2019-01-15 version:1.0.0**/
!function(a,b){"function"==typeof define&&define.amd?define("eve",function(){return b()}):"object"==typeof exports?module.exports=b():a.eve=b()}(this,function(){var a,b,c="0.4.2",d="hasOwnProperty",e=/[\.\/]/,f="*",g=function(){},h=function(a,b){return a-b},i={n:{}},j=function(c,d){c=String(c);var e,f=b,g=Array.prototype.slice.call(arguments,2),i=j.listeners(c),k=0,l=[],m={},n=[],o=a;a=c,b=0;for(var p=0,q=i.length;q>p;p++)"zIndex"in i[p]&&(l.push(i[p].zIndex),i[p].zIndex<0&&(m[i[p].zIndex]=i[p]));for(l.sort(h);l[k]<0;)if(e=m[l[k++]],n.push(e.apply(d,g)),b)return b=f,n;for(p=0;q>p;p++)if(e=i[p],"zIndex"in e)if(e.zIndex==l[k]){if(n.push(e.apply(d,g)),b)break;do if(k++,e=m[l[k]],e&&n.push(e.apply(d,g)),b)break;while(e)}else m[e.zIndex]=e;else if(n.push(e.apply(d,g)),b)break;return b=f,a=o,n.length?n:null};return j._events=i,j.listeners=function(a){var b,c,d,g,h,j,k,l,m=a.split(e),n=i,o=[n],p=[];for(g=0,h=m.length;h>g;g++){for(l=[],j=0,k=o.length;k>j;j++)for(n=o[j].n,c=[n[m[g]],n[f]],d=2;d--;)b=c[d],b&&(l.push(b),p=p.concat(b.f||[]));o=l}return p},j.on=function(a,b){if(a=String(a),"function"!=typeof b)return function(){};for(var c=a.split(e),d=i,f=0,h=c.length;h>f;f++)d=d.n,d=d.hasOwnProperty(c[f])&&d[c[f]]||(d[c[f]]={n:{}});for(d.f=d.f||[],f=0,h=d.f.length;h>f;f++)if(d.f[f]==b)return g;return d.f.push(b),function(a){+a==+a&&(b.zIndex=+a)}},j.f=function(a){var b=[].slice.call(arguments,1);return function(){j.apply(null,[a,null].concat(b).concat([].slice.call(arguments,0)))}},j.stop=function(){b=1},j.nt=function(b){return b?new RegExp("(?:\\.|\\/|^)"+b+"(?:\\.|\\/|$)").test(a):a},j.nts=function(){return a.split(e)},j.off=j.unbind=function(a,b){if(!a)return void(j._events=i={n:{}});var c,g,h,k,l,m,n,o=a.split(e),p=[i];for(k=0,l=o.length;l>k;k++)for(m=0;m<p.length;m+=h.length-2){if(h=[m,1],c=p[m].n,o[k]!=f)c[o[k]]&&h.push(c[o[k]]);else for(g in c)c[d](g)&&h.push(c[g]);p.splice.apply(p,h)}for(k=0,l=p.length;l>k;k++)for(c=p[k];c.n;){if(b){if(c.f){for(m=0,n=c.f.length;n>m;m++)if(c.f[m]==b){c.f.splice(m,1);break}!c.f.length&&delete c.f}for(g in c.n)if(c.n[d](g)&&c.n[g].f){var q=c.n[g].f;for(m=0,n=q.length;n>m;m++)if(q[m]==b){q.splice(m,1);break}!q.length&&delete c.n[g].f}}else{delete c.f;for(g in c.n)c.n[d](g)&&c.n[g].f&&delete c.n[g].f}c=c.n}},j.once=function(a,b){var c=function(){return j.unbind(a,c),b.apply(this,arguments)};return j.on(a,c)},j.version=c,j.toString=function(){return"You are running Eve "+c},j}),function(a,b){"function"==typeof define&&define.amd?define("raphael.core",["eve"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("eve")):a.Raphael=b(a.eve)}(this,function(a){function b(c){if(b.is(c,"function"))return t?c():a.on("raphael.DOMload",c);if(b.is(c,U))return b._engine.create[C](b,c.splice(0,3+b.is(c[0],S))).add(c);var d=Array.prototype.slice.call(arguments,0);if(b.is(d[d.length-1],"function")){var e=d.pop();return t?e.call(b._engine.create[C](b,d)):a.on("raphael.DOMload",function(){e.call(b._engine.create[C](b,d))})}return b._engine.create[C](b,arguments)}function c(a){if("function"==typeof a||Object(a)!==a)return a;var b=new a.constructor;for(var d in a)a[y](d)&&(b[d]=c(a[d]));return b}function d(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return a.push(a.splice(c,1)[0])}function e(a,b,c){function e(){var f=Array.prototype.slice.call(arguments,0),g=f.join("␀"),h=e.cache=e.cache||{},i=e.count=e.count||[];return h[y](g)?(d(i,g),c?c(h[g]):h[g]):(i.length>=1e3&&delete h[i.shift()],i.push(g),h[g]=a[C](b,f),c?c(h[g]):h[g])}return e}function f(){return this.hex}function g(a,b){for(var c=[],d=0,e=a.length;e-2*!b>d;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4==d?f[3]={x:+a[0],y:+a[1]}:e-2==d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4==d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}function h(a,b,c,d,e){var f=-3*b+9*c-9*d+3*e,g=a*f+6*b-12*c+6*d;return a*g-3*b+3*c}function i(a,b,c,d,e,f,g,i,j){null==j&&(j=1),j=j>1?1:0>j?0:j;for(var k=j/2,l=12,m=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],n=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],o=0,p=0;l>p;p++){var q=k*m[p]+k,r=h(q,a,c,e,g),s=h(q,b,d,f,i),t=r*r+s*s;o+=n[p]*M.sqrt(t)}return k*o}function j(a,b,c,d,e,f,g,h,j){if(!(0>j||i(a,b,c,d,e,f,g,h)<j)){var k,l=1,m=l/2,n=l-m,o=.01;for(k=i(a,b,c,d,e,f,g,h,n);P(k-j)>o;)m/=2,n+=(j>k?1:-1)*m,k=i(a,b,c,d,e,f,g,h,n);return n}}function k(a,b,c,d,e,f,g,h){if(!(N(a,c)<O(e,g)||O(a,c)>N(e,g)||N(b,d)<O(f,h)||O(b,d)>N(f,h))){var i=(a*d-b*c)*(e-g)-(a-c)*(e*h-f*g),j=(a*d-b*c)*(f-h)-(b-d)*(e*h-f*g),k=(a-c)*(f-h)-(b-d)*(e-g);if(k){var l=i/k,m=j/k,n=+l.toFixed(2),o=+m.toFixed(2);if(!(n<+O(a,c).toFixed(2)||n>+N(a,c).toFixed(2)||n<+O(e,g).toFixed(2)||n>+N(e,g).toFixed(2)||o<+O(b,d).toFixed(2)||o>+N(b,d).toFixed(2)||o<+O(f,h).toFixed(2)||o>+N(f,h).toFixed(2)))return{x:l,y:m}}}}function l(a,c,d){var e=b.bezierBBox(a),f=b.bezierBBox(c);if(!b.isBBoxIntersect(e,f))return d?0:[];for(var g=i.apply(0,a),h=i.apply(0,c),j=N(~~(g/5),1),l=N(~~(h/5),1),m=[],n=[],o={},p=d?0:[],q=0;j+1>q;q++){var r=b.findDotsAtSegment.apply(b,a.concat(q/j));m.push({x:r.x,y:r.y,t:q/j})}for(q=0;l+1>q;q++)r=b.findDotsAtSegment.apply(b,c.concat(q/l)),n.push({x:r.x,y:r.y,t:q/l});for(q=0;j>q;q++)for(var s=0;l>s;s++){var t=m[q],u=m[q+1],v=n[s],w=n[s+1],x=P(u.x-t.x)<.001?"y":"x",y=P(w.x-v.x)<.001?"y":"x",z=k(t.x,t.y,u.x,u.y,v.x,v.y,w.x,w.y);if(z){if(o[z.x.toFixed(4)]==z.y.toFixed(4))continue;o[z.x.toFixed(4)]=z.y.toFixed(4);var A=t.t+P((z[x]-t[x])/(u[x]-t[x]))*(u.t-t.t),B=v.t+P((z[y]-v[y])/(w[y]-v[y]))*(w.t-v.t);A>=0&&1.001>=A&&B>=0&&1.001>=B&&(d?p++:p.push({x:z.x,y:z.y,t1:O(A,1),t2:O(B,1)}))}}return p}function m(a,c,d){a=b._path2curve(a),c=b._path2curve(c);for(var e,f,g,h,i,j,k,m,n,o,p=d?0:[],q=0,r=a.length;r>q;q++){var s=a[q];if("M"==s[0])e=i=s[1],f=j=s[2];else{"C"==s[0]?(n=[e,f].concat(s.slice(1)),e=n[6],f=n[7]):(n=[e,f,e,f,i,j,i,j],e=i,f=j);for(var t=0,u=c.length;u>t;t++){var v=c[t];if("M"==v[0])g=k=v[1],h=m=v[2];else{"C"==v[0]?(o=[g,h].concat(v.slice(1)),g=o[6],h=o[7]):(o=[g,h,g,h,k,m,k,m],g=k,h=m);var w=l(n,o,d);if(d)p+=w;else{for(var x=0,y=w.length;y>x;x++)w[x].segment1=q,w[x].segment2=t,w[x].bez1=n,w[x].bez2=o;p=p.concat(w)}}}}}return p}function n(a,b,c,d,e,f){null!=a?(this.a=+a,this.b=+b,this.c=+c,this.d=+d,this.e=+e,this.f=+f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function o(){return this.x+G+this.y+G+this.width+" × "+this.height}function p(a,b,c,d,e,f){function g(a){return((l*a+k)*a+j)*a}function h(a,b){var c=i(a,b);return((o*c+n)*c+m)*c}function i(a,b){var c,d,e,f,h,i;for(e=a,i=0;8>i;i++){if(f=g(e)-a,P(f)<b)return e;if(h=(3*l*e+2*k)*e+j,P(h)<1e-6)break;e-=f/h}if(c=0,d=1,e=a,c>e)return c;if(e>d)return d;for(;d>c;){if(f=g(e),P(f-a)<b)return e;a>f?c=e:d=e,e=(d-c)/2+c}return e}var j=3*b,k=3*(d-b)-j,l=1-j-k,m=3*c,n=3*(e-c)-m,o=1-m-n;return h(a,1/(200*f))}function q(a,b){var c=[],d={};if(this.ms=b,this.times=1,a){for(var e in a)a[y](e)&&(d[$(e)]=a[e],c.push($(e)));c.sort(ka)}this.anim=d,this.top=c[c.length-1],this.percents=c}function r(c,d,e,f,g,h){e=$(e);var i,j,k,l,m,o,q=c.ms,r={},s={},t={};if(f)for(w=0,x=fb.length;x>w;w++){var u=fb[w];if(u.el.id==d.id&&u.anim==c){u.percent!=e?(fb.splice(w,1),k=1):j=u,d.attr(u.totalOrigin);break}}else f=+s;for(var w=0,x=c.percents.length;x>w;w++){if(c.percents[w]==e||c.percents[w]>f*c.top){e=c.percents[w],m=c.percents[w-1]||0,q=q/c.top*(e-m),l=c.percents[w+1],i=c.anim[e];break}f&&d.attr(c.anim[c.percents[w]])}if(i){if(j)j.initstatus=f,j.start=new Date-j.ms*f;else{for(var z in i)if(i[y](z)&&(ca[y](z)||d.paper.customAttributes[y](z)))switch(r[z]=d.attr(z),null==r[z]&&(r[z]=ba[z]),s[z]=i[z],ca[z]){case S:t[z]=(s[z]-r[z])/q;break;case"colour":r[z]=b.getRGB(r[z]);var A=b.getRGB(s[z]);t[z]={r:(A.r-r[z].r)/q,g:(A.g-r[z].g)/q,b:(A.b-r[z].b)/q};break;case"path":var B=Ia(r[z],s[z]),C=B[1];for(r[z]=B[0],t[z]=[],w=0,x=r[z].length;x>w;w++){t[z][w]=[0];for(var E=1,F=r[z][w].length;F>E;E++)t[z][w][E]=(C[w][E]-r[z][w][E])/q}break;case"transform":var G=d._,J=Na(G[z],s[z]);if(J)for(r[z]=J.from,s[z]=J.to,t[z]=[],t[z].real=!0,w=0,x=r[z].length;x>w;w++)for(t[z][w]=[r[z][w][0]],E=1,F=r[z][w].length;F>E;E++)t[z][w][E]=(s[z][w][E]-r[z][w][E])/q;else{var K=d.matrix||new n,L={_:{transform:G.transform},getBBox:function(){return d.getBBox(1)}};r[z]=[K.a,K.b,K.c,K.d,K.e,K.f],La(L,s[z]),s[z]=L._.transform,t[z]=[(L.matrix.a-K.a)/q,(L.matrix.b-K.b)/q,(L.matrix.c-K.c)/q,(L.matrix.d-K.d)/q,(L.matrix.e-K.e)/q,(L.matrix.f-K.f)/q]}break;case"csv":var M=H(i[z])[I](v),N=H(r[z])[I](v);if("clip-rect"==z)for(r[z]=N,t[z]=[],w=N.length;w--;)t[z][w]=(M[w]-r[z][w])/q;s[z]=M;break;default:for(M=[][D](i[z]),N=[][D](r[z]),t[z]=[],w=d.paper.customAttributes[z].length;w--;)t[z][w]=((M[w]||0)-(N[w]||0))/q}var O=i.easing,P=b.easing_formulas[O];if(!P)if(P=H(O).match(Y),P&&5==P.length){var Q=P;P=function(a){return p(a,+Q[1],+Q[2],+Q[3],+Q[4],q)}}else P=la;if(o=i.start||c.start||+new Date,u={anim:c,percent:e,timestamp:o,start:o+(c.del||0),status:0,initstatus:f||0,stop:!1,ms:q,easing:P,from:r,diff:t,to:s,el:d,callback:i.callback,prev:m,next:l,repeat:h||c.times,origin:d.attr(),totalOrigin:g},fb.push(u),f&&!j&&!k&&(u.stop=!0,u.start=new Date-q*f,1==fb.length))return hb();k&&(u.start=new Date-u.ms*f),1==fb.length&&gb(hb)}a("raphael.anim.start."+d.id,d,c)}}function s(a){for(var b=0;b<fb.length;b++)fb[b].el.paper==a&&fb.splice(b--,1)}b.version="2.1.4",b.eve=a;var t,u,v=/[, ]+/,w={circle:1,rect:1,path:1,ellipse:1,text:1,image:1},x=/\{(\d+)\}/g,y="hasOwnProperty",z={doc:document,win:window},A={was:Object.prototype[y].call(z.win,"Raphael"),is:z.win.Raphael},B=function(){this.ca=this.customAttributes={}},C="apply",D="concat",E="ontouchstart"in z.win||z.win.DocumentTouch&&z.doc instanceof DocumentTouch,F="",G=" ",H=String,I="split",J="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[I](G),K={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},L=H.prototype.toLowerCase,M=Math,N=M.max,O=M.min,P=M.abs,Q=M.pow,R=M.PI,S="number",T="string",U="array",V=Object.prototype.toString,W=(b._ISURL=/^url\(['"]?(.+?)['"]?\)$/i,/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i),X={NaN:1,Infinity:1,"-Infinity":1},Y=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,Z=M.round,$=parseFloat,_=parseInt,aa=H.prototype.toUpperCase,ba=b._availableAttrs={"arrow-end":"none","arrow-start":"none",blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/","letter-spacing":0,opacity:1,path:"M0,0",r:0,rx:0,ry:0,src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",transform:"",width:0,x:0,y:0},ca=b._availableAnimAttrs={blur:S,"clip-rect":"csv",cx:S,cy:S,fill:"colour","fill-opacity":S,"font-size":S,height:S,opacity:S,path:"path",r:S,rx:S,ry:S,stroke:"colour","stroke-opacity":S,"stroke-width":S,transform:"transform",width:S,x:S,y:S},da=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,ea={hs:1,rg:1},fa=/,?([achlmqrstvxz]),?/gi,ga=/([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,ha=/([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,ia=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/gi,ja=(b._radial_gradient=/^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/,{}),ka=function(a,b){return $(a)-$(b)},la=function(a){return a},ma=b._rectPath=function(a,b,c,d,e){return e?[["M",a+e,b],["l",c-2*e,0],["a",e,e,0,0,1,e,e],["l",0,d-2*e],["a",e,e,0,0,1,-e,e],["l",2*e-c,0],["a",e,e,0,0,1,-e,-e],["l",0,2*e-d],["a",e,e,0,0,1,e,-e],["z"]]:[["M",a,b],["l",c,0],["l",0,d],["l",-c,0],["z"]]},na=function(a,b,c,d){return null==d&&(d=c),[["M",a,b],["m",0,-d],["a",c,d,0,1,1,0,2*d],["a",c,d,0,1,1,0,-2*d],["z"]]},oa=b._getPath={path:function(a){return a.attr("path")},circle:function(a){var b=a.attrs;return na(b.cx,b.cy,b.r)},ellipse:function(a){var b=a.attrs;return na(b.cx,b.cy,b.rx,b.ry)},rect:function(a){var b=a.attrs;return ma(b.x,b.y,b.width,b.height,b.r)},image:function(a){var b=a.attrs;return ma(b.x,b.y,b.width,b.height)},text:function(a){var b=a._getBBox();return ma(b.x,b.y,b.width,b.height)},set:function(a){var b=a._getBBox();return ma(b.x,b.y,b.width,b.height)}},pa=b.mapPath=function(a,b){if(!b)return a;var c,d,e,f,g,h,i;for(a=Ia(a),e=0,g=a.length;g>e;e++)for(i=a[e],f=1,h=i.length;h>f;f+=2)c=b.x(i[f],i[f+1]),d=b.y(i[f],i[f+1]),i[f]=c,i[f+1]=d;return a};if(b._g=z,b.type=z.win.SVGAngle||z.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML","VML"==b.type){var qa,ra=z.doc.createElement("div");if(ra.innerHTML='<v:shape adj="1"/>',qa=ra.firstChild,qa.style.behavior="url(#default#VML)",!qa||"object"!=typeof qa.adj)return b.type=F;ra=null}b.svg=!(b.vml="VML"==b.type),b._Paper=B,b.fn=u=B.prototype=b.prototype,b._id=0,b._oid=0,b.is=function(a,b){return b=L.call(b),"finite"==b?!X[y](+a):"array"==b?a instanceof Array:"null"==b&&null===a||b==typeof a&&null!==a||"object"==b&&a===Object(a)||"array"==b&&Array.isArray&&Array.isArray(a)||V.call(a).slice(8,-1).toLowerCase()==b},b.angle=function(a,c,d,e,f,g){if(null==f){var h=a-d,i=c-e;return h||i?(180+180*M.atan2(-i,-h)/R+360)%360:0}return b.angle(a,c,f,g)-b.angle(d,e,f,g)},b.rad=function(a){return a%360*R/180},b.deg=function(a){return Math.round(180*a/R%360*1e3)/1e3},b.snapTo=function(a,c,d){if(d=b.is(d,"finite")?d:10,b.is(a,U)){for(var e=a.length;e--;)if(P(a[e]-c)<=d)return a[e]}else{a=+a;var f=c%a;if(d>f)return c-f;if(f>a-d)return c-f+a}return c};b.createUUID=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=16*M.random()|0,c="x"==a?b:3&b|8;return c.toString(16)});b.setWindow=function(c){a("raphael.setWindow",b,z.win,c),z.win=c,z.doc=z.win.document,b._engine.initWin&&b._engine.initWin(z.win)};var sa=function(a){if(b.vml){var c,d=/^\s+|\s+$/g;try{var f=new ActiveXObject("htmlfile");f.write("<body>"),f.close(),c=f.body}catch(g){c=createPopup().document.body}var h=c.createTextRange();sa=e(function(a){try{c.style.color=H(a).replace(d,F);var b=h.queryCommandValue("ForeColor");return b=(255&b)<<16|65280&b|(16711680&b)>>>16,"#"+("000000"+b.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=z.doc.createElement("i");i.title="Raphaël Colour Picker",i.style.display="none",z.doc.body.appendChild(i),sa=e(function(a){return i.style.color=a,z.doc.defaultView.getComputedStyle(i,F).getPropertyValue("color")})}return sa(a)},ta=function(){return"hsb("+[this.h,this.s,this.b]+")"},ua=function(){return"hsl("+[this.h,this.s,this.l]+")"},va=function(){return this.hex},wa=function(a,c,d){if(null==c&&b.is(a,"object")&&"r"in a&&"g"in a&&"b"in a&&(d=a.b,c=a.g,a=a.r),null==c&&b.is(a,T)){var e=b.getRGB(a);a=e.r,c=e.g,d=e.b}return(a>1||c>1||d>1)&&(a/=255,c/=255,d/=255),[a,c,d]},xa=function(a,c,d,e){a*=255,c*=255,d*=255;var f={r:a,g:c,b:d,hex:b.rgb(a,c,d),toString:va};return b.is(e,"finite")&&(f.opacity=e),f};b.color=function(a){var c;return b.is(a,"object")&&"h"in a&&"s"in a&&"b"in a?(c=b.hsb2rgb(a),a.r=c.r,a.g=c.g,a.b=c.b,a.hex=c.hex):b.is(a,"object")&&"h"in a&&"s"in a&&"l"in a?(c=b.hsl2rgb(a),a.r=c.r,a.g=c.g,a.b=c.b,a.hex=c.hex):(b.is(a,"string")&&(a=b.getRGB(a)),b.is(a,"object")&&"r"in a&&"g"in a&&"b"in a?(c=b.rgb2hsl(a),a.h=c.h,a.s=c.s,a.l=c.l,c=b.rgb2hsb(a),a.v=c.b):(a={hex:"none"},a.r=a.g=a.b=a.h=a.s=a.v=a.l=-1)),a.toString=va,a},b.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,d=a.o,a=a.h),a*=360;var e,f,g,h,i;return a=a%360/60,i=c*b,h=i*(1-P(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],xa(e,f,g,d)},b.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h),(a>1||b>1||c>1)&&(a/=360,b/=100,c/=100),a*=360;var e,f,g,h,i;return a=a%360/60,i=2*b*(.5>c?c:1-c),h=i*(1-P(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],xa(e,f,g,d)},b.rgb2hsb=function(a,b,c){c=wa(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;return f=N(a,b,c),g=f-O(a,b,c),d=0==g?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=(d+360)%6*60/360,e=0==g?0:g/f,{h:d,s:e,b:f,toString:ta}},b.rgb2hsl=function(a,b,c){c=wa(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;return g=N(a,b,c),h=O(a,b,c),i=g-h,d=0==i?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=(d+360)%6*60/360,f=(g+h)/2,e=0==i?0:.5>f?i/(2*f):i/(2-2*f),{h:d,s:e,l:f,toString:ua}},b._path2string=function(){return this.join(",").replace(fa,"$1")};b._preload=function(a,b){var c=z.doc.createElement("img");c.style.cssText="position:absolute;left:-9999em;top:-9999em",c.onload=function(){b.call(this),this.onload=null,z.doc.body.removeChild(this)},c.onerror=function(){z.doc.body.removeChild(this)},z.doc.body.appendChild(c),c.src=a};b.getRGB=e(function(a){if(!a||(a=H(a)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:f};if("none"==a)return{r:-1,g:-1,b:-1,hex:"none",toString:f};!(ea[y](a.toLowerCase().substring(0,2))||"#"==a.charAt())&&(a=sa(a));var c,d,e,g,h,i,j=a.match(W);return j?(j[2]&&(e=_(j[2].substring(5),16),d=_(j[2].substring(3,5),16),c=_(j[2].substring(1,3),16)),j[3]&&(e=_((h=j[3].charAt(3))+h,16),d=_((h=j[3].charAt(2))+h,16),c=_((h=j[3].charAt(1))+h,16)),j[4]&&(i=j[4][I](da),c=$(i[0]),"%"==i[0].slice(-1)&&(c*=2.55),d=$(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=$(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),"rgba"==j[1].toLowerCase().slice(0,4)&&(g=$(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100)),j[5]?(i=j[5][I](da),c=$(i[0]),"%"==i[0].slice(-1)&&(c*=2.55),d=$(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=$(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(c/=360),"hsba"==j[1].toLowerCase().slice(0,4)&&(g=$(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100),b.hsb2rgb(c,d,e,g)):j[6]?(i=j[6][I](da),c=$(i[0]),"%"==i[0].slice(-1)&&(c*=2.55),d=$(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=$(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(c/=360),"hsla"==j[1].toLowerCase().slice(0,4)&&(g=$(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100),b.hsl2rgb(c,d,e,g)):(j={r:c,g:d,b:e,toString:f},j.hex="#"+(16777216|e|d<<8|c<<16).toString(16).slice(1),b.is(g,"finite")&&(j.opacity=g),j)):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:f}},b),b.hsb=e(function(a,c,d){return b.hsb2rgb(a,c,d).hex}),b.hsl=e(function(a,c,d){return b.hsl2rgb(a,c,d).hex}),b.rgb=e(function(a,b,c){function d(a){return a+.5|0}return"#"+(16777216|d(c)|d(b)<<8|d(a)<<16).toString(16).slice(1)}),b.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);return b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b})),c.hex},b.getColor.reset=function(){delete this.start},b.parsePathString=function(a){if(!a)return null;var c=ya(a);if(c.arr)return Aa(c.arr);var d={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},e=[];return b.is(a,U)&&b.is(a[0],U)&&(e=Aa(a)),e.length||H(a).replace(ga,function(a,b,c){var f=[],g=b.toLowerCase();if(c.replace(ia,function(a,b){b&&f.push(+b)}),"m"==g&&f.length>2&&(e.push([b][D](f.splice(0,2))),g="l",b="m"==b?"l":"L"),"r"==g)e.push([b][D](f));else for(;f.length>=d[g]&&(e.push([b][D](f.splice(0,d[g]))),d[g]););}),e.toString=b._path2string,c.arr=Aa(e),e},b.parseTransformString=e(function(a){if(!a)return null;var c=[];return b.is(a,U)&&b.is(a[0],U)&&(c=Aa(a)),c.length||H(a).replace(ha,function(a,b,d){{var e=[];L.call(b)}d.replace(ia,function(a,b){b&&e.push(+b)}),c.push([b][D](e))}),c.toString=b._path2string,c});var ya=function(a){var b=ya.ps=ya.ps||{};return b[a]?b[a].sleep=100:b[a]={sleep:100},setTimeout(function(){for(var c in b)b[y](c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])}),b[a]};b.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=Q(j,3),l=Q(j,2),m=i*i,n=m*i,o=k*a+3*l*i*c+3*j*i*i*e+n*g,p=k*b+3*l*i*d+3*j*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,w=j*e+i*g,x=j*f+i*h,y=90-180*M.atan2(q-s,r-t)/R;return(q>s||t>r)&&(y+=180),{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:w,y:x},alpha:y}},b.bezierBBox=function(a,c,d,e,f,g,h,i){b.is(a,"array")||(a=[a,c,d,e,f,g,h,i]);var j=Ha.apply(null,a);return{x:j.min.x,y:j.min.y,x2:j.max.x,y2:j.max.y,width:j.max.x-j.min.x,height:j.max.y-j.min.y}},b.isPointInsideBBox=function(a,b,c){return b>=a.x&&b<=a.x2&&c>=a.y&&c<=a.y2},b.isBBoxIntersect=function(a,c){var d=b.isPointInsideBBox;return d(c,a.x,a.y)||d(c,a.x2,a.y)||d(c,a.x,a.y2)||d(c,a.x2,a.y2)||d(a,c.x,c.y)||d(a,c.x2,c.y)||d(a,c.x,c.y2)||d(a,c.x2,c.y2)||(a.x<c.x2&&a.x>c.x||c.x<a.x2&&c.x>a.x)&&(a.y<c.y2&&a.y>c.y||c.y<a.y2&&c.y>a.y)},b.pathIntersection=function(a,b){return m(a,b)},b.pathIntersectionNumber=function(a,b){return m(a,b,1)},b.isPointInsidePath=function(a,c,d){var e=b.pathBBox(a);return b.isPointInsideBBox(e,c,d)&&m(a,[["M",c,d],["H",e.x2+10]],1)%2==1},b._removedFactory=function(b){return function(){a("raphael.log",null,"Raphaël: you are calling to method “"+b+"” of removed object",b)}};var za=b.pathBBox=function(a){var b=ya(a);if(b.bbox)return c(b.bbox);if(!a)return{x:0,y:0,width:0,height:0,x2:0,y2:0};a=Ia(a);for(var d,e=0,f=0,g=[],h=[],i=0,j=a.length;j>i;i++)if(d=a[i],"M"==d[0])e=d[1],f=d[2],g.push(e),h.push(f);else{var k=Ha(e,f,d[1],d[2],d[3],d[4],d[5],d[6]);g=g[D](k.min.x,k.max.x),h=h[D](k.min.y,k.max.y),e=d[5],f=d[6]}var l=O[C](0,g),m=O[C](0,h),n=N[C](0,g),o=N[C](0,h),p=n-l,q=o-m,r={x:l,y:m,x2:n,y2:o,width:p,height:q,cx:l+p/2,cy:m+q/2};return b.bbox=c(r),r},Aa=function(a){var d=c(a);return d.toString=b._path2string,d},Ba=b._pathToRelative=function(a){var c=ya(a);if(c.rel)return Aa(c.rel);b.is(a,U)&&b.is(a&&a[0],U)||(a=b.parsePathString(a));var d=[],e=0,f=0,g=0,h=0,i=0;"M"==a[0][0]&&(e=a[0][1],f=a[0][2],g=e,h=f,i++,d.push(["M",e,f]));for(var j=i,k=a.length;k>j;j++){var l=d[j]=[],m=a[j];if(m[0]!=L.call(m[0]))switch(l[0]=L.call(m[0]),l[0]){case"a":l[1]=m[1],l[2]=m[2],l[3]=m[3],l[4]=m[4],l[5]=m[5],l[6]=+(m[6]-e).toFixed(3),l[7]=+(m[7]-f).toFixed(3);break;case"v":l[1]=+(m[1]-f).toFixed(3);break;case"m":g=m[1],h=m[2];default:for(var n=1,o=m.length;o>n;n++)l[n]=+(m[n]-(n%2?e:f)).toFixed(3)}else{l=d[j]=[],"m"==m[0]&&(g=m[1]+e,h=m[2]+f);for(var p=0,q=m.length;q>p;p++)d[j][p]=m[p]}var r=d[j].length;switch(d[j][0]){case"z":e=g,f=h;break;case"h":e+=+d[j][r-1];break;case"v":f+=+d[j][r-1];break;default:e+=+d[j][r-2],f+=+d[j][r-1]}}return d.toString=b._path2string,c.rel=Aa(d),d},Ca=b._pathToAbsolute=function(a){var c=ya(a);if(c.abs)return Aa(c.abs);if(b.is(a,U)&&b.is(a&&a[0],U)||(a=b.parsePathString(a)),!a||!a.length)return[["M",0,0]];var d=[],e=0,f=0,h=0,i=0,j=0;"M"==a[0][0]&&(e=+a[0][1],f=+a[0][2],h=e,i=f,j++,d[0]=["M",e,f]);for(var k,l,m=3==a.length&&"M"==a[0][0]&&"R"==a[1][0].toUpperCase()&&"Z"==a[2][0].toUpperCase(),n=j,o=a.length;o>n;n++){if(d.push(k=[]),l=a[n],l[0]!=aa.call(l[0]))switch(k[0]=aa.call(l[0]),k[0]){case"A":k[1]=l[1],k[2]=l[2],k[3]=l[3],k[4]=l[4],k[5]=l[5],k[6]=+(l[6]+e),k[7]=+(l[7]+f);break;case"V":k[1]=+l[1]+f;break;case"H":k[1]=+l[1]+e;break;case"R":for(var p=[e,f][D](l.slice(1)),q=2,r=p.length;r>q;q++)p[q]=+p[q]+e,p[++q]=+p[q]+f;d.pop(),d=d[D](g(p,m));break;case"M":h=+l[1]+e,i=+l[2]+f;default:for(q=1,r=l.length;r>q;q++)k[q]=+l[q]+(q%2?e:f)}else if("R"==l[0])p=[e,f][D](l.slice(1)),d.pop(),d=d[D](g(p,m)),k=["R"][D](l.slice(-2));else for(var s=0,t=l.length;t>s;s++)k[s]=l[s];switch(k[0]){case"Z":e=h,f=i;break;case"H":e=k[1];break;case"V":f=k[1];break;case"M":h=k[k.length-2],i=k[k.length-1];default:e=k[k.length-2],f=k[k.length-1]}}return d.toString=b._path2string,c.abs=Aa(d),d},Da=function(a,b,c,d){return[a,b,c,d,c,d]},Ea=function(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]},Fa=function(a,b,c,d,f,g,h,i,j,k){var l,m=120*R/180,n=R/180*(+f||0),o=[],p=e(function(a,b,c){var d=a*M.cos(c)-b*M.sin(c),e=a*M.sin(c)+b*M.cos(c);return{x:d,y:e}});if(k)y=k[0],z=k[1],w=k[2],x=k[3];else{l=p(a,b,-n),a=l.x,b=l.y,l=p(i,j,-n),i=l.x,j=l.y;var q=(M.cos(R/180*f),M.sin(R/180*f),(a-i)/2),r=(b-j)/2,s=q*q/(c*c)+r*r/(d*d);s>1&&(s=M.sqrt(s),c=s*c,d=s*d);var t=c*c,u=d*d,v=(g==h?-1:1)*M.sqrt(P((t*u-t*r*r-u*q*q)/(t*r*r+u*q*q))),w=v*c*r/d+(a+i)/2,x=v*-d*q/c+(b+j)/2,y=M.asin(((b-x)/d).toFixed(9)),z=M.asin(((j-x)/d).toFixed(9));y=w>a?R-y:y,z=w>i?R-z:z,0>y&&(y=2*R+y),0>z&&(z=2*R+z),h&&y>z&&(y-=2*R),!h&&z>y&&(z-=2*R)}var A=z-y;if(P(A)>m){var B=z,C=i,E=j;z=y+m*(h&&z>y?1:-1),i=w+c*M.cos(z),j=x+d*M.sin(z),o=Fa(i,j,c,d,f,0,h,C,E,[z,B,w,x])}A=z-y;var F=M.cos(y),G=M.sin(y),H=M.cos(z),J=M.sin(z),K=M.tan(A/4),L=4/3*c*K,N=4/3*d*K,O=[a,b],Q=[a+L*G,b-N*F],S=[i+L*J,j-N*H],T=[i,j];if(Q[0]=2*O[0]-Q[0],Q[1]=2*O[1]-Q[1],k)return[Q,S,T][D](o);o=[Q,S,T][D](o).join()[I](",");for(var U=[],V=0,W=o.length;W>V;V++)U[V]=V%2?p(o[V-1],o[V],n).y:p(o[V],o[V+1],n).x;return U},Ga=function(a,b,c,d,e,f,g,h,i){var j=1-i;return{x:Q(j,3)*a+3*Q(j,2)*i*c+3*j*i*i*e+Q(i,3)*g,y:Q(j,3)*b+3*Q(j,2)*i*d+3*j*i*i*f+Q(i,3)*h}},Ha=e(function(a,b,c,d,e,f,g,h){var i,j=e-2*c+a-(g-2*e+c),k=2*(c-a)-2*(e-c),l=a-c,m=(-k+M.sqrt(k*k-4*j*l))/2/j,n=(-k-M.sqrt(k*k-4*j*l))/2/j,o=[b,h],p=[a,g];return P(m)>"1e12"&&(m=.5),P(n)>"1e12"&&(n=.5),m>0&&1>m&&(i=Ga(a,b,c,d,e,f,g,h,m),p.push(i.x),o.push(i.y)),n>0&&1>n&&(i=Ga(a,b,c,d,e,f,g,h,n),p.push(i.x),o.push(i.y)),j=f-2*d+b-(h-2*f+d),k=2*(d-b)-2*(f-d),l=b-d,m=(-k+M.sqrt(k*k-4*j*l))/2/j,n=(-k-M.sqrt(k*k-4*j*l))/2/j,P(m)>"1e12"&&(m=.5),P(n)>"1e12"&&(n=.5),m>0&&1>m&&(i=Ga(a,b,c,d,e,f,g,h,m),p.push(i.x),o.push(i.y)),n>0&&1>n&&(i=Ga(a,b,c,d,e,f,g,h,n),p.push(i.x),o.push(i.y)),{min:{x:O[C](0,p),y:O[C](0,o)},max:{x:N[C](0,p),y:N[C](0,o)}}}),Ia=b._path2curve=e(function(a,b){var c=!b&&ya(a);if(!b&&c.curve)return Aa(c.curve);for(var d=Ca(a),e=b&&Ca(b),f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},h=(function(a,b,c){var d,e,f={T:1,Q:1};if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];switch(!(a[0]in f)&&(b.qx=b.qy=null),a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][D](Fa[C](0,[b.x,b.y][D](a.slice(1))));break;case"S":"C"==c||"S"==c?(d=2*b.x-b.bx,e=2*b.y-b.by):(d=b.x,e=b.y),a=["C",d,e][D](a.slice(1));break;case"T":"Q"==c||"T"==c?(b.qx=2*b.x-b.qx,b.qy=2*b.y-b.qy):(b.qx=b.x,b.qy=b.y),a=["C"][D](Ea(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][D](Ea(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][D](Da(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][D](Da(b.x,b.y,a[1],b.y));break;case"V":a=["C"][D](Da(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][D](Da(b.x,b.y,b.X,b.Y))}return a}),i=function(a,b){if(a[b].length>7){a[b].shift();for(var c=a[b];c.length;)k[b]="A",e&&(l[b]="A"),a.splice(b++,0,["C"][D](c.splice(0,6)));a.splice(b,1),p=N(d.length,e&&e.length||0)}},j=function(a,b,c,f,g){a&&b&&"M"==a[g][0]&&"M"!=b[g][0]&&(b.splice(g,0,["M",f.x,f.y]),c.bx=0,c.by=0,c.x=a[g][1],c.y=a[g][2],p=N(d.length,e&&e.length||0))},k=[],l=[],m="",n="",o=0,p=N(d.length,e&&e.length||0);p>o;o++){d[o]&&(m=d[o][0]),"C"!=m&&(k[o]=m,o&&(n=k[o-1])),d[o]=h(d[o],f,n),"A"!=k[o]&&"C"==m&&(k[o]="C"),i(d,o),e&&(e[o]&&(m=e[o][0]),"C"!=m&&(l[o]=m,o&&(n=l[o-1])),e[o]=h(e[o],g,n),"A"!=l[o]&&"C"==m&&(l[o]="C"),i(e,o)),j(d,e,f,g,o),j(e,d,g,f,o);var q=d[o],r=e&&e[o],s=q.length,t=e&&r.length;f.x=q[s-2],f.y=q[s-1],f.bx=$(q[s-4])||f.x,f.by=$(q[s-3])||f.y,g.bx=e&&($(r[t-4])||g.x),g.by=e&&($(r[t-3])||g.y),g.x=e&&r[t-2],g.y=e&&r[t-1]}return e||(c.curve=Aa(d)),e?[d,e]:d},null,Aa),Ja=(b._parseDots=e(function(a){for(var c=[],d=0,e=a.length;e>d;d++){var f={},g=a[d].match(/^([^:]*):?([\d\.]*)/);if(f.color=b.getRGB(g[1]),f.color.error)return null;f.opacity=f.color.opacity,f.color=f.color.hex,g[2]&&(f.offset=g[2]+"%"),c.push(f)}for(d=1,e=c.length-1;e>d;d++)if(!c[d].offset){for(var h=$(c[d-1].offset||0),i=0,j=d+1;e>j;j++)if(c[j].offset){i=c[j].offset;break}i||(i=100,j=e),i=$(i);for(var k=(i-h)/(j-d+1);j>d;d++)h+=k,c[d].offset=h+"%"}return c}),b._tear=function(a,b){a==b.top&&(b.top=a.prev),a==b.bottom&&(b.bottom=a.next),a.next&&(a.next.prev=a.prev),a.prev&&(a.prev.next=a.next)}),Ka=(b._tofront=function(a,b){b.top!==a&&(Ja(a,b),a.next=null,a.prev=b.top,b.top.next=a,b.top=a)},b._toback=function(a,b){b.bottom!==a&&(Ja(a,b),a.next=b.bottom,a.prev=null,b.bottom.prev=a,b.bottom=a)},b._insertafter=function(a,b,c){Ja(a,c),b==c.top&&(c.top=a),b.next&&(b.next.prev=a),a.next=b.next,a.prev=b,b.next=a},b._insertbefore=function(a,b,c){Ja(a,c),b==c.bottom&&(c.bottom=a),b.prev&&(b.prev.next=a),a.prev=b.prev,b.prev=a,a.next=b},b.toMatrix=function(a,b){var c=za(a),d={_:{transform:F},getBBox:function(){return c}};return La(d,b),d.matrix}),La=(b.transformPath=function(a,b){return pa(a,Ka(a,b))},b._extractTransform=function(a,c){if(null==c)return a._.transform;c=H(c).replace(/\.{3}|\u2026/g,a._.transform||F);var d=b.parseTransformString(c),e=0,f=0,g=0,h=1,i=1,j=a._,k=new n;if(j.transform=d||[],d)for(var l=0,m=d.length;m>l;l++){var o,p,q,r,s,t=d[l],u=t.length,v=H(t[0]).toLowerCase(),w=t[0]!=v,x=w?k.invert():0;"t"==v&&3==u?w?(o=x.x(0,0),p=x.y(0,0),q=x.x(t[1],t[2]),r=x.y(t[1],t[2]),k.translate(q-o,r-p)):k.translate(t[1],t[2]):"r"==v?2==u?(s=s||a.getBBox(1),k.rotate(t[1],s.x+s.width/2,s.y+s.height/2),e+=t[1]):4==u&&(w?(q=x.x(t[2],t[3]),r=x.y(t[2],t[3]),k.rotate(t[1],q,r)):k.rotate(t[1],t[2],t[3]),e+=t[1]):"s"==v?2==u||3==u?(s=s||a.getBBox(1),k.scale(t[1],t[u-1],s.x+s.width/2,s.y+s.height/2),h*=t[1],i*=t[u-1]):5==u&&(w?(q=x.x(t[3],t[4]),r=x.y(t[3],t[4]),k.scale(t[1],t[2],q,r)):k.scale(t[1],t[2],t[3],t[4]),h*=t[1],i*=t[2]):"m"==v&&7==u&&k.add(t[1],t[2],t[3],t[4],t[5],t[6]),j.dirtyT=1,a.matrix=k}a.matrix=k,j.sx=h,j.sy=i,j.deg=e,j.dx=f=k.e,j.dy=g=k.f,1==h&&1==i&&!e&&j.bbox?(j.bbox.x+=+f,j.bbox.y+=+g):j.dirtyT=1}),Ma=function(a){var b=a[0];switch(b.toLowerCase()){case"t":return[b,0,0];case"m":return[b,1,0,0,1,0,0];case"r":return 4==a.length?[b,0,a[2],a[3]]:[b,0];case"s":return 5==a.length?[b,1,1,a[3],a[4]]:3==a.length?[b,1,1]:[b,1]}},Na=b._equaliseTransform=function(a,c){c=H(c).replace(/\.{3}|\u2026/g,a),a=b.parseTransformString(a)||[],c=b.parseTransformString(c)||[];for(var d,e,f,g,h=N(a.length,c.length),i=[],j=[],k=0;h>k;k++){if(f=a[k]||Ma(c[k]),g=c[k]||Ma(f),f[0]!=g[0]||"r"==f[0].toLowerCase()&&(f[2]!=g[2]||f[3]!=g[3])||"s"==f[0].toLowerCase()&&(f[3]!=g[3]||f[4]!=g[4]))return;for(i[k]=[],j[k]=[],d=0,e=N(f.length,g.length);e>d;d++)d in f&&(i[k][d]=f[d]),d in g&&(j[k][d]=g[d])}return{from:i,to:j}};b._getContainer=function(a,c,d,e){var f;return f=null!=e||b.is(a,"object")?a:z.doc.querySelector(a),null!=f?f.tagName?null==c?{container:f,width:f.style.pixelWidth||f.offsetWidth,height:f.style.pixelHeight||f.offsetHeight}:{container:f,width:c,height:d}:{container:1,x:a,y:c,width:d,height:e}:void 0},b.pathToRelative=Ba,b._engine={},b.path2curve=Ia,b.matrix=function(a,b,c,d,e,f){return new n(a,b,c,d,e,f)},function(a){function c(a){return a[0]*a[0]+a[1]*a[1]}function d(a){var b=M.sqrt(c(a));a[0]&&(a[0]/=b),a[1]&&(a[1]/=b)}a.add=function(a,b,c,d,e,f){var g,h,i,j,k=[[],[],[]],l=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],m=[[a,c,e],[b,d,f],[0,0,1]];for(a&&a instanceof n&&(m=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]),g=0;3>g;g++)for(h=0;3>h;h++){for(j=0,i=0;3>i;i++)j+=l[g][i]*m[i][h];k[g][h]=j}this.a=k[0][0],this.b=k[1][0],this.c=k[0][1],this.d=k[1][1],this.e=k[0][2],this.f=k[1][2]},a.invert=function(){var a=this,b=a.a*a.d-a.b*a.c;return new n(a.d/b,-a.b/b,-a.c/b,a.a/b,(a.c*a.f-a.d*a.e)/b,(a.b*a.e-a.a*a.f)/b)},a.clone=function(){return new n(this.a,this.b,this.c,this.d,this.e,this.f)},a.translate=function(a,b){this.add(1,0,0,1,a,b)},a.scale=function(a,b,c,d){null==b&&(b=a),(c||d)&&this.add(1,0,0,1,c,d),this.add(a,0,0,b,0,0),(c||d)&&this.add(1,0,0,1,-c,-d)},a.rotate=function(a,c,d){a=b.rad(a),c=c||0,d=d||0;var e=+M.cos(a).toFixed(9),f=+M.sin(a).toFixed(9);this.add(e,f,-f,e,c,d),this.add(1,0,0,1,-c,-d)},a.x=function(a,b){return a*this.a+b*this.c+this.e},a.y=function(a,b){return a*this.b+b*this.d+this.f},a.get=function(a){return+this[H.fromCharCode(97+a)].toFixed(4)},a.toString=function(){return b.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()},a.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"},a.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},a.split=function(){var a={};a.dx=this.e,a.dy=this.f;var e=[[this.a,this.c],[this.b,this.d]];a.scalex=M.sqrt(c(e[0])),d(e[0]),a.shear=e[0][0]*e[1][0]+e[0][1]*e[1][1],e[1]=[e[1][0]-e[0][0]*a.shear,e[1][1]-e[0][1]*a.shear],a.scaley=M.sqrt(c(e[1])),d(e[1]),a.shear/=a.scaley;var f=-e[0][1],g=e[1][1];return 0>g?(a.rotate=b.deg(M.acos(g)),0>f&&(a.rotate=360-a.rotate)):a.rotate=b.deg(M.asin(f)),a.isSimple=!(+a.shear.toFixed(9)||a.scalex.toFixed(9)!=a.scaley.toFixed(9)&&a.rotate),a.isSuperSimple=!+a.shear.toFixed(9)&&a.scalex.toFixed(9)==a.scaley.toFixed(9)&&!a.rotate,a.noRotation=!+a.shear.toFixed(9)&&!a.rotate,a},a.toTransformString=function(a){var b=a||this[I]();return b.isSimple?(b.scalex=+b.scalex.toFixed(4),b.scaley=+b.scaley.toFixed(4),b.rotate=+b.rotate.toFixed(4),(b.dx||b.dy?"t"+[b.dx,b.dy]:F)+(1!=b.scalex||1!=b.scaley?"s"+[b.scalex,b.scaley,0,0]:F)+(b.rotate?"r"+[b.rotate,0,0]:F)):"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}}(n.prototype);for(var Oa=function(){this.returnValue=!1},Pa=function(){return this.originalEvent.preventDefault()},Qa=function(){this.cancelBubble=!0},Ra=function(){return this.originalEvent.stopPropagation()},Sa=function(a){var b=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,c=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft;return{x:a.clientX+c,y:a.clientY+b}},Ta=function(){return z.doc.addEventListener?function(a,b,c,d){var e=function(a){var b=Sa(a);return c.call(d,a,b.x,b.y)};if(a.addEventListener(b,e,!1),E&&K[b]){var f=function(b){for(var e=Sa(b),f=b,g=0,h=b.targetTouches&&b.targetTouches.length;h>g;g++)if(b.targetTouches[g].target==a){b=b.targetTouches[g],b.originalEvent=f,b.preventDefault=Pa,b.stopPropagation=Ra;break}return c.call(d,b,e.x,e.y)};a.addEventListener(K[b],f,!1)}return function(){return a.removeEventListener(b,e,!1),E&&K[b]&&a.removeEventListener(K[b],f,!1),!0}}:z.doc.attachEvent?function(a,b,c,d){var e=function(a){a=a||z.win.event;var b=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,e=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft,f=a.clientX+e,g=a.clientY+b;return a.preventDefault=a.preventDefault||Oa,a.stopPropagation=a.stopPropagation||Qa,c.call(d,a,f,g)};a.attachEvent("on"+b,e);var f=function(){return a.detachEvent("on"+b,e),!0};return f}:void 0}(),Ua=[],Va=function(b){for(var c,d=b.clientX,e=b.clientY,f=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,g=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft,h=Ua.length;h--;){if(c=Ua[h],E&&b.touches){for(var i,j=b.touches.length;j--;)if(i=b.touches[j],i.identifier==c.el._drag.id){d=i.clientX,e=i.clientY,(b.originalEvent?b.originalEvent:b).preventDefault();break}}else b.preventDefault();var k,l=c.el.node,m=l.nextSibling,n=l.parentNode,o=l.style.display;z.win.opera&&n.removeChild(l),l.style.display="none",k=c.el.paper.getElementByPoint(d,e),l.style.display=o,z.win.opera&&(m?n.insertBefore(l,m):n.appendChild(l)),k&&a("raphael.drag.over."+c.el.id,c.el,k),d+=g,e+=f,a("raphael.drag.move."+c.el.id,c.move_scope||c.el,d-c.el._drag.x,e-c.el._drag.y,d,e,b)}},Wa=function(c){b.unmousemove(Va).unmouseup(Wa);for(var d,e=Ua.length;e--;)d=Ua[e],d.el._drag={},a("raphael.drag.end."+d.el.id,d.end_scope||d.start_scope||d.move_scope||d.el,c);Ua=[]},Xa=b.el={},Ya=J.length;Ya--;)!function(a){b[a]=Xa[a]=function(c,d){return b.is(c,"function")&&(this.events=this.events||[],this.events.push({name:a,f:c,unbind:Ta(this.shape||this.node||z.doc,a,c,d||this)})),this},b["un"+a]=Xa["un"+a]=function(c){for(var d=this.events||[],e=d.length;e--;)d[e].name!=a||!b.is(c,"undefined")&&d[e].f!=c||(d[e].unbind(),d.splice(e,1),!d.length&&delete this.events);return this}}(J[Ya]);Xa.data=function(c,d){var e=ja[this.id]=ja[this.id]||{};if(0==arguments.length)return e;if(1==arguments.length){if(b.is(c,"object")){for(var f in c)c[y](f)&&this.data(f,c[f]);return this}return a("raphael.data.get."+this.id,this,e[c],c),e[c]}return e[c]=d,a("raphael.data.set."+this.id,this,d,c),this},Xa.removeData=function(a){return null==a?ja[this.id]={}:ja[this.id]&&delete ja[this.id][a],this},Xa.getData=function(){return c(ja[this.id]||{})},Xa.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)},Xa.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var Za=[];Xa.drag=function(c,d,e,f,g,h){function i(i){(i.originalEvent||i).preventDefault();var j=i.clientX,k=i.clientY,l=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,m=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft;if(this._drag.id=i.identifier,E&&i.touches)for(var n,o=i.touches.length;o--;)if(n=i.touches[o],this._drag.id=n.identifier,n.identifier==this._drag.id){j=n.clientX,k=n.clientY;break}this._drag.x=j+m,this._drag.y=k+l,!Ua.length&&b.mousemove(Va).mouseup(Wa),Ua.push({el:this,move_scope:f,start_scope:g,end_scope:h}),d&&a.on("raphael.drag.start."+this.id,d),c&&a.on("raphael.drag.move."+this.id,c),e&&a.on("raphael.drag.end."+this.id,e),a("raphael.drag.start."+this.id,g||f||this,i.clientX+m,i.clientY+l,i)}return this._drag={},Za.push({el:this,start:i}),this.mousedown(i),this},Xa.onDragOver=function(b){b?a.on("raphael.drag.over."+this.id,b):a.unbind("raphael.drag.over."+this.id)},Xa.undrag=function(){for(var c=Za.length;c--;)Za[c].el==this&&(this.unmousedown(Za[c].start),Za.splice(c,1),a.unbind("raphael.drag.*."+this.id));!Za.length&&b.unmousemove(Va).unmouseup(Wa),Ua=[]},u.circle=function(a,c,d){var e=b._engine.circle(this,a||0,c||0,d||0);return this.__set__&&this.__set__.push(e),e},u.rect=function(a,c,d,e,f){var g=b._engine.rect(this,a||0,c||0,d||0,e||0,f||0);return this.__set__&&this.__set__.push(g),g},u.ellipse=function(a,c,d,e){var f=b._engine.ellipse(this,a||0,c||0,d||0,e||0);return this.__set__&&this.__set__.push(f),f},u.path=function(a){a&&!b.is(a,T)&&!b.is(a[0],U)&&(a+=F);var c=b._engine.path(b.format[C](b,arguments),this);return this.__set__&&this.__set__.push(c),c},u.image=function(a,c,d,e,f){var g=b._engine.image(this,a||"about:blank",c||0,d||0,e||0,f||0);return this.__set__&&this.__set__.push(g),g},u.text=function(a,c,d){var e=b._engine.text(this,a||0,c||0,H(d));return this.__set__&&this.__set__.push(e),e},u.set=function(a){!b.is(a,"array")&&(a=Array.prototype.splice.call(arguments,0,arguments.length));var c=new jb(a);return this.__set__&&this.__set__.push(c),c.paper=this,c.type="set",c},u.setStart=function(a){this.__set__=a||this.set()},u.setFinish=function(a){var b=this.__set__;return delete this.__set__,b},u.getSize=function(){var a=this.canvas.parentNode;return{width:a.offsetWidth,height:a.offsetHeight}},u.setSize=function(a,c){return b._engine.setSize.call(this,a,c)},u.setViewBox=function(a,c,d,e,f){return b._engine.setViewBox.call(this,a,c,d,e,f)},u.top=u.bottom=null,u.raphael=b;var $a=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,g=e.clientLeft||d.clientLeft||0,h=b.top+(z.win.pageYOffset||e.scrollTop||d.scrollTop)-f,i=b.left+(z.win.pageXOffset||e.scrollLeft||d.scrollLeft)-g;return{y:h,x:i}};u.getElementByPoint=function(a,b){var c=this,d=c.canvas,e=z.doc.elementFromPoint(a,b);if(z.win.opera&&"svg"==e.tagName){var f=$a(d),g=d.createSVGRect();g.x=a-f.x,g.y=b-f.y,g.width=g.height=1;var h=d.getIntersectionList(g,null);h.length&&(e=h[h.length-1])}if(!e)return null;for(;e.parentNode&&e!=d.parentNode&&!e.raphael;)e=e.parentNode;return e==c.canvas.parentNode&&(e=d),e=e&&e.raphael?c.getById(e.raphaelid):null},u.getElementsByBBox=function(a){var c=this.set();return this.forEach(function(d){b.isBBoxIntersect(d.getBBox(),a)&&c.push(d)}),c},u.getById=function(a){for(var b=this.bottom;b;){if(b.id==a)return b;b=b.next}return null},u.forEach=function(a,b){for(var c=this.bottom;c;){if(a.call(b,c)===!1)return this;c=c.next}return this},u.getElementsByPoint=function(a,b){var c=this.set();return this.forEach(function(d){d.isPointInside(a,b)&&c.push(d)}),c},Xa.isPointInside=function(a,c){var d=this.realPath=oa[this.type](this);return this.attr("transform")&&this.attr("transform").length&&(d=b.transformPath(d,this.attr("transform"))),b.isPointInsidePath(d,a,c)},Xa.getBBox=function(a){if(this.removed)return{};var b=this._;return a?((b.dirty||!b.bboxwt)&&(this.realPath=oa[this.type](this),b.bboxwt=za(this.realPath),b.bboxwt.toString=o,b.dirty=0),b.bboxwt):((b.dirty||b.dirtyT||!b.bbox)&&((b.dirty||!this.realPath)&&(b.bboxwt=0,this.realPath=oa[this.type](this)),b.bbox=za(pa(this.realPath,this.matrix)),b.bbox.toString=o,b.dirty=b.dirtyT=0),b.bbox)},Xa.clone=function(){if(this.removed)return null;var a=this.paper[this.type]().attr(this.attr());return this.__set__&&this.__set__.push(a),a},Xa.glow=function(a){if("text"==this.type)return null;a=a||{};var b={width:(a.width||10)+(+this.attr("stroke-width")||1),fill:a.fill||!1,opacity:null==a.opacity?.5:a.opacity,offsetx:a.offsetx||0,offsety:a.offsety||0,color:a.color||"#000"},c=b.width/2,d=this.paper,e=d.set(),f=this.realPath||oa[this.type](this);f=this.matrix?pa(f,this.matrix):f;for(var g=1;c+1>g;g++)e.push(d.path(f).attr({stroke:b.color,fill:b.fill?b.color:"none","stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(b.width/c*g).toFixed(3),opacity:+(b.opacity/c).toFixed(3)}));return e.insertBefore(this).translate(b.offsetx,b.offsety)};var _a=function(a,c,d,e,f,g,h,k,l){return null==l?i(a,c,d,e,f,g,h,k):b.findDotsAtSegment(a,c,d,e,f,g,h,k,j(a,c,d,e,f,g,h,k,l))},ab=function(a,c){return function(d,e,f){d=Ia(d);for(var g,h,i,j,k,l="",m={},n=0,o=0,p=d.length;p>o;o++){if(i=d[o],"M"==i[0])g=+i[1],h=+i[2];else{if(j=_a(g,h,i[1],i[2],i[3],i[4],i[5],i[6]),n+j>e){if(c&&!m.start){if(k=_a(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),l+=["C"+k.start.x,k.start.y,k.m.x,k.m.y,k.x,k.y],f)return l;m.start=l,l=["M"+k.x,k.y+"C"+k.n.x,k.n.y,k.end.x,k.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue}if(!a&&!c)return k=_a(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),{x:k.x,y:k.y,alpha:k.alpha}}n+=j,g=+i[5],h=+i[6]}l+=i.shift()+i}return m.end=l,k=a?n:c?m:b.findDotsAtSegment(g,h,i[0],i[1],i[2],i[3],i[4],i[5],1),k.alpha&&(k={x:k.x,y:k.y,alpha:k.alpha}),k}},bb=ab(1),cb=ab(),db=ab(0,1);b.getTotalLength=bb,b.getPointAtLength=cb,b.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6)return db(a,b).end;var d=db(a,c,1);return b?db(d,b).end:d},Xa.getTotalLength=function(){var a=this.getPath();if(a)return this.node.getTotalLength?this.node.getTotalLength():bb(a)},Xa.getPointAtLength=function(a){var b=this.getPath();if(b)return cb(b,a)},Xa.getPath=function(){var a,c=b._getPath[this.type];if("text"!=this.type&&"set"!=this.type)return c&&(a=c(this)),a},Xa.getSubpath=function(a,c){var d=this.getPath();if(d)return b.getSubpath(d,a,c)};var eb=b.easing_formulas={linear:function(a){return a},"<":function(a){return Q(a,1.7)},">":function(a){return Q(a,.48)},"<>":function(a){var b=.48-a/1.04,c=M.sqrt(.1734+b*b),d=c-b,e=Q(P(d),1/3)*(0>d?-1:1),f=-c-b,g=Q(P(f),1/3)*(0>f?-1:1),h=e+g+.5;return 3*(1-h)*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a-=1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){return a==!!a?a:Q(2,-10*a)*M.sin(2*(a-.075)*R/.3)+1},bounce:function(a){var b,c=7.5625,d=2.75;return 1/d>a?b=c*a*a:2/d>a?(a-=1.5/d,b=c*a*a+.75):2.5/d>a?(a-=2.25/d,b=c*a*a+.9375):(a-=2.625/d,b=c*a*a+.984375),b}};eb.easeIn=eb["ease-in"]=eb["<"],eb.easeOut=eb["ease-out"]=eb[">"],eb.easeInOut=eb["ease-in-out"]=eb["<>"],eb["back-in"]=eb.backIn,eb["back-out"]=eb.backOut;var fb=[],gb=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,16)},hb=function(){for(var c=+new Date,d=0;d<fb.length;d++){var e=fb[d];if(!e.el.removed&&!e.paused){var f,g,h=c-e.start,i=e.ms,j=e.easing,k=e.from,l=e.diff,m=e.to,n=(e.t,e.el),o={},p={};if(e.initstatus?(h=(e.initstatus*e.anim.top-e.prev)/(e.percent-e.prev)*i,e.status=e.initstatus,delete e.initstatus,e.stop&&fb.splice(d--,1)):e.status=(e.prev+(e.percent-e.prev)*(h/i))/e.anim.top,!(0>h))if(i>h){var q=j(h/i);for(var s in k)if(k[y](s)){switch(ca[s]){case S:f=+k[s]+q*i*l[s];break;case"colour":f="rgb("+[ib(Z(k[s].r+q*i*l[s].r)),ib(Z(k[s].g+q*i*l[s].g)),ib(Z(k[s].b+q*i*l[s].b))].join(",")+")";break;case"path":f=[];for(var t=0,u=k[s].length;u>t;t++){f[t]=[k[s][t][0]];for(var v=1,w=k[s][t].length;w>v;v++)f[t][v]=+k[s][t][v]+q*i*l[s][t][v];f[t]=f[t].join(G)}f=f.join(G);break;case"transform":if(l[s].real)for(f=[],t=0,u=k[s].length;u>t;t++)for(f[t]=[k[s][t][0]],v=1,w=k[s][t].length;w>v;v++)f[t][v]=k[s][t][v]+q*i*l[s][t][v];else{var x=function(a){return+k[s][a]+q*i*l[s][a]};f=[["m",x(0),x(1),x(2),x(3),x(4),x(5)]]}break;case"csv":if("clip-rect"==s)for(f=[],t=4;t--;)f[t]=+k[s][t]+q*i*l[s][t];break;default:var z=[][D](k[s]);for(f=[],t=n.paper.customAttributes[s].length;t--;)f[t]=+z[t]+q*i*l[s][t]}o[s]=f}n.attr(o),function(b,c,d){setTimeout(function(){a("raphael.anim.frame."+b,c,d)})}(n.id,n,e.anim)}else{if(function(c,d,e){setTimeout(function(){a("raphael.anim.frame."+d.id,d,e),a("raphael.anim.finish."+d.id,d,e),b.is(c,"function")&&c.call(d)})}(e.callback,n,e.anim),n.attr(m),fb.splice(d--,1),e.repeat>1&&!e.next){for(g in m)m[y](g)&&(p[g]=e.totalOrigin[g]);e.el.attr(p),r(e.anim,e.el,e.anim.percents[0],null,e.totalOrigin,e.repeat-1)}e.next&&!e.stop&&r(e.anim,e.el,e.next,null,e.totalOrigin,e.repeat)}}}fb.length&&gb(hb)},ib=function(a){return a>255?255:0>a?0:a};Xa.animateWith=function(a,c,d,e,f,g){var h=this;if(h.removed)return g&&g.call(h),h;var i=d instanceof q?d:b.animation(d,e,f,g);r(i,h,i.percents[0],null,h.attr());for(var j=0,k=fb.length;k>j;j++)if(fb[j].anim==c&&fb[j].el==a){fb[k-1].start=fb[j].start;break}return h},Xa.onAnimation=function(b){return b?a.on("raphael.anim.frame."+this.id,b):a.unbind("raphael.anim.frame."+this.id),this},q.prototype.delay=function(a){var b=new q(this.anim,this.ms);return b.times=this.times,b.del=+a||0,b},q.prototype.repeat=function(a){var b=new q(this.anim,this.ms);return b.del=this.del,b.times=M.floor(N(a,0))||1,b},b.animation=function(a,c,d,e){if(a instanceof q)return a;(b.is(d,"function")||!d)&&(e=e||d||null,d=null),a=Object(a),c=+c||0;var f,g,h={};for(g in a)a[y](g)&&$(g)!=g&&$(g)+"%"!=g&&(f=!0,h[g]=a[g]);if(f)return d&&(h.easing=d),e&&(h.callback=e),new q({100:h},c);if(e){var i=0;for(var j in a){var k=_(j);a[y](j)&&k>i&&(i=k)}i+="%",!a[i].callback&&(a[i].callback=e)}return new q(a,c)},Xa.animate=function(a,c,d,e){var f=this;if(f.removed)return e&&e.call(f),f;var g=a instanceof q?a:b.animation(a,c,d,e);return r(g,f,g.percents[0],null,f.attr()),f},Xa.setTime=function(a,b){return a&&null!=b&&this.status(a,O(b,a.ms)/a.ms),this},Xa.status=function(a,b){var c,d,e=[],f=0;if(null!=b)return r(a,this,-1,O(b,1)),this;for(c=fb.length;c>f;f++)if(d=fb[f],d.el.id==this.id&&(!a||d.anim==a)){if(a)return d.status;e.push({anim:d.anim,status:d.status})}return a?0:e},Xa.pause=function(b){for(var c=0;c<fb.length;c++)fb[c].el.id!=this.id||b&&fb[c].anim!=b||a("raphael.anim.pause."+this.id,this,fb[c].anim)!==!1&&(fb[c].paused=!0);return this},Xa.resume=function(b){for(var c=0;c<fb.length;c++)if(fb[c].el.id==this.id&&(!b||fb[c].anim==b)){var d=fb[c];a("raphael.anim.resume."+this.id,this,d.anim)!==!1&&(delete d.paused,this.status(d.anim,d.status))}return this},Xa.stop=function(b){for(var c=0;c<fb.length;c++)fb[c].el.id!=this.id||b&&fb[c].anim!=b||a("raphael.anim.stop."+this.id,this,fb[c].anim)!==!1&&fb.splice(c--,1);return this},a.on("raphael.remove",s),a.on("raphael.clear",s),Xa.toString=function(){return"Raphaël’s object"};var jb=function(a){if(this.items=[],this.length=0,this.type="set",a)for(var b=0,c=a.length;c>b;b++)!a[b]||a[b].constructor!=Xa.constructor&&a[b].constructor!=jb||(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},kb=jb.prototype;kb.push=function(){for(var a,b,c=0,d=arguments.length;d>c;c++)a=arguments[c],!a||a.constructor!=Xa.constructor&&a.constructor!=jb||(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this},kb.pop=function(){return this.length&&delete this[this.length--],this.items.pop()},kb.forEach=function(a,b){for(var c=0,d=this.items.length;d>c;c++)if(a.call(b,this.items[c],c)===!1)return this;return this};for(var lb in Xa)Xa[y](lb)&&(kb[lb]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a][C](c,b)})}}(lb));return kb.attr=function(a,c){if(a&&b.is(a,U)&&b.is(a[0],"object"))for(var d=0,e=a.length;e>d;d++)this.items[d].attr(a[d]);else for(var f=0,g=this.items.length;g>f;f++)this.items[f].attr(a,c);return this},kb.clear=function(){for(;this.length;)this.pop()},kb.splice=function(a,b,c){a=0>a?N(this.length+a,0):a,b=N(0,O(this.length-a,b));var d,e=[],f=[],g=[];for(d=2;d<arguments.length;d++)g.push(arguments[d]);for(d=0;b>d;d++)f.push(this[a+d]);for(;d<this.length-a;d++)e.push(this[a+d]);var h=g.length;for(d=0;d<h+e.length;d++)this.items[a+d]=this[a+d]=h>d?g[d]:e[d-h];for(d=this.items.length=this.length-=b-h;this[d];)delete this[d++];return new jb(f)},kb.exclude=function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]==a)return this.splice(b,1),!0},kb.animate=function(a,c,d,e){(b.is(d,"function")||!d)&&(e=d||null);var f,g,h=this.items.length,i=h,j=this;if(!h)return this;e&&(g=function(){!--h&&e.call(j)}),d=b.is(d,T)?d:g;var k=b.animation(a,c,d,g);for(f=this.items[--i].animate(k);i--;)this.items[i]&&!this.items[i].removed&&this.items[i].animateWith(f,k,k),this.items[i]&&!this.items[i].removed||h--;return this},kb.insertAfter=function(a){for(var b=this.items.length;b--;)this.items[b].insertAfter(a);return this},kb.getBBox=function(){for(var a=[],b=[],c=[],d=[],e=this.items.length;e--;)if(!this.items[e].removed){var f=this.items[e].getBBox();a.push(f.x),b.push(f.y),c.push(f.x+f.width),d.push(f.y+f.height)}return a=O[C](0,a),b=O[C](0,b),c=N[C](0,c),d=N[C](0,d),{x:a,y:b,x2:c,y2:d,width:c-a,height:d-b}},kb.clone=function(a){a=this.paper.set();for(var b=0,c=this.items.length;c>b;b++)a.push(this.items[b].clone());return a},kb.toString=function(){return"Raphaël‘s set"},kb.glow=function(a){var b=this.paper.set();return this.forEach(function(c,d){var e=c.glow(a);null!=e&&e.forEach(function(a,c){b.push(a)})}),b},kb.isPointInside=function(a,b){var c=!1;return this.forEach(function(d){return d.isPointInside(a,b)?(c=!0,!1):void 0}),c},b.registerFont=function(a){if(!a.face)return a;this.fonts=this.fonts||{};var b={w:a.w,face:{},glyphs:{}},c=a.face["font-family"];for(var d in a.face)a.face[y](d)&&(b.face[d]=a.face[d]);if(this.fonts[c]?this.fonts[c].push(b):this.fonts[c]=[b],!a.svg){b.face["units-per-em"]=_(a.face["units-per-em"],10);for(var e in a.glyphs)if(a.glyphs[y](e)){var f=a.glyphs[e];if(b.glyphs[e]={w:f.w,k:{},d:f.d&&"M"+f.d.replace(/[mlcxtrv]/g,function(a){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[a]||"M"})+"z"},f.k)for(var g in f.k)f[y](g)&&(b.glyphs[e].k[g]=f.k[g])}}return a},u.getFont=function(a,c,d,e){if(e=e||"normal",d=d||"normal",c=+c||{normal:400,bold:700,lighter:300,bolder:800}[c]||400,b.fonts){var f=b.fonts[a];if(!f){var g=new RegExp("(^|\\s)"+a.replace(/[^\w\d\s+!~.:_-]/g,F)+"(\\s|$)","i");for(var h in b.fonts)if(b.fonts[y](h)&&g.test(h)){f=b.fonts[h];break}}var i;if(f)for(var j=0,k=f.length;k>j&&(i=f[j],i.face["font-weight"]!=c||i.face["font-style"]!=d&&i.face["font-style"]||i.face["font-stretch"]!=e);j++);return i}},u.print=function(a,c,d,e,f,g,h,i){g=g||"middle",h=N(O(h||0,1),-1),i=N(O(i||1,3),1);var j,k=H(d)[I](F),l=0,m=0,n=F;if(b.is(e,"string")&&(e=this.getFont(e)),e){j=(f||16)/e.face["units-per-em"];for(var o=e.face.bbox[I](v),p=+o[0],q=o[3]-o[1],r=0,s=+o[1]+("baseline"==g?q+ +e.face.descent:q/2),t=0,u=k.length;u>t;t++){if("\n"==k[t])l=0,x=0,m=0,r+=q*i;else{var w=m&&e.glyphs[k[t-1]]||{},x=e.glyphs[k[t]];l+=m?(w.w||e.w)+(w.k&&w.k[k[t]]||0)+e.w*h:0,m=1}x&&x.d&&(n+=b.transformPath(x.d,["t",l*j,r*j,"s",j,j,p,s,"t",(a-p)/j,(c-s)/j]))}}return this.path(n).attr({fill:"#000",stroke:"none"})},u.add=function(a){if(b.is(a,"array"))for(var c,d=this.set(),e=0,f=a.length;f>e;e++)c=a[e]||{},w[y](c.type)&&d.push(this[c.type]().attr(c));return d},b.format=function(a,c){var d=b.is(c,U)?[0][D](c):arguments;return a&&b.is(a,T)&&d.length-1&&(a=a.replace(x,function(a,b){return null==d[++b]?F:d[b]})),a||F},b.fullfill=function(){var a=/\{([^\}]+)\}/g,b=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,c=function(a,c,d){var e=d;return c.replace(b,function(a,b,c,d,f){b=b||d,e&&(b in e&&(e=e[b]),"function"==typeof e&&f&&(e=e()))}),e=(null==e||e==d?a:e)+""};return function(b,d){return String(b).replace(a,function(a,b){return c(a,b,d)})}}(),b.ninja=function(){return A.was?z.win.Raphael=A.is:delete Raphael,b},b.st=kb,a.on("raphael.DOMload",function(){t=!0}),function(a,c,d){function e(){/in/.test(a.readyState)?setTimeout(e,9):b.eve("raphael.DOMload")}null==a.readyState&&a.addEventListener&&(a.addEventListener(c,d=function(){a.removeEventListener(c,d,!1),a.readyState="complete"},!1),a.readyState="loading"),e()}(document,"DOMContentLoaded"),b}),function(a,b){"function"==typeof define&&define.amd?define("raphael.svg",["raphael.core"],function(a){return b(a)}):b("object"==typeof exports?require("./raphael.core"):a.Raphael)}(this,function(a){if(!a||a.svg){var b="hasOwnProperty",c=String,d=parseFloat,e=parseInt,f=Math,g=f.max,h=f.abs,i=f.pow,j=/[, ]+/,k=a.eve,l="",m=" ",n="http://www.w3.org/1999/xlink",o={block:"M5,0 0,2.5 5,5z",classic:"M5,0 0,2.5 5,5 3.5,3 3.5,2z",diamond:"M2.5,0 5,2.5 2.5,5 0,2.5z",open:"M6,1 1,3.5 6,6",oval:"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"},p={};a.toString=function(){return"Your browser supports SVG.\nYou are running Raphaël "+this.version};var q=function(d,e){if(e){"string"==typeof d&&(d=q(d));for(var f in e)e[b](f)&&("xlink:"==f.substring(0,6)?d.setAttributeNS(n,f.substring(6),c(e[f])):d.setAttribute(f,c(e[f])))}else d=a._g.doc.createElementNS("http://www.w3.org/2000/svg",d),d.style&&(d.style.webkitTapHighlightColor="rgba(0,0,0,0)");return d},r=function(b,e){var j="linear",k=b.id+e,m=.5,n=.5,o=b.node,p=b.paper,r=o.style,s=a._g.doc.getElementById(k);if(!s){if(e=c(e).replace(a._radial_gradient,function(a,b,c){if(j="radial",b&&c){m=d(b),n=d(c);var e=2*(n>.5)-1;i(m-.5,2)+i(n-.5,2)>.25&&(n=f.sqrt(.25-i(m-.5,2))*e+.5)&&.5!=n&&(n=n.toFixed(5)-1e-5*e)}return l}),e=e.split(/\s*\-\s*/),"linear"==j){var t=e.shift();if(t=-d(t),isNaN(t))return null;var u=[0,0,f.cos(a.rad(t)),f.sin(a.rad(t))],v=1/(g(h(u[2]),h(u[3]))||1);u[2]*=v,u[3]*=v,u[2]<0&&(u[0]=-u[2],u[2]=0),u[3]<0&&(u[1]=-u[3],u[3]=0)}var w=a._parseDots(e);if(!w)return null;if(k=k.replace(/[\(\)\s,\xb0#]/g,"_"),b.gradient&&k!=b.gradient.id&&(p.defs.removeChild(b.gradient),delete b.gradient),!b.gradient){s=q(j+"Gradient",{id:k}),b.gradient=s,q(s,"radial"==j?{fx:m,fy:n}:{x1:u[0],y1:u[1],x2:u[2],y2:u[3],gradientTransform:b.matrix.invert()}),p.defs.appendChild(s);for(var x=0,y=w.length;y>x;x++)s.appendChild(q("stop",{offset:w[x].offset?w[x].offset:x?"100%":"0%","stop-color":w[x].color||"#fff","stop-opacity":isFinite(w[x].opacity)?w[x].opacity:1}))}}return q(o,{fill:"url('"+document.location.origin+document.location.pathname+"#"+k+"')",opacity:1,"fill-opacity":1}),r.fill=l,r.opacity=1,r.fillOpacity=1,1},s=function(a){var b=a.getBBox(1);q(a.pattern,{patternTransform:a.matrix.invert()+" translate("+b.x+","+b.y+")"})},t=function(d,e,f){if("path"==d.type){for(var g,h,i,j,k,m=c(e).toLowerCase().split("-"),n=d.paper,r=f?"end":"start",s=d.node,t=d.attrs,u=t["stroke-width"],v=m.length,w="classic",x=3,y=3,z=5;v--;)switch(m[v]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":w=m[v];break;case"wide":y=5;break;case"narrow":y=2;break;case"long":x=5;break;case"short":x=2}if("open"==w?(x+=2,y+=2,z+=2,i=1,j=f?4:1,k={fill:"none",stroke:t.stroke}):(j=i=x/2,k={fill:t.stroke,stroke:"none"}),d._.arrows?f?(d._.arrows.endPath&&p[d._.arrows.endPath]--,d._.arrows.endMarker&&p[d._.arrows.endMarker]--):(d._.arrows.startPath&&p[d._.arrows.startPath]--,d._.arrows.startMarker&&p[d._.arrows.startMarker]--):d._.arrows={},"none"!=w){var A="raphael-marker-"+w,B="raphael-marker-"+r+w+x+y+"-obj"+d.id;a._g.doc.getElementById(A)?p[A]++:(n.defs.appendChild(q(q("path"),{"stroke-linecap":"round",d:o[w],id:A})),p[A]=1);var C,D=a._g.doc.getElementById(B);D?(p[B]++,C=D.getElementsByTagName("use")[0]):(D=q(q("marker"),{id:B,markerHeight:y,markerWidth:x,orient:"auto",refX:j,refY:y/2}),C=q(q("use"),{"xlink:href":"#"+A,transform:(f?"rotate(180 "+x/2+" "+y/2+") ":l)+"scale("+x/z+","+y/z+")","stroke-width":(1/((x/z+y/z)/2)).toFixed(4)}),D.appendChild(C),n.defs.appendChild(D),p[B]=1),q(C,k);var E=i*("diamond"!=w&&"oval"!=w);f?(g=d._.arrows.startdx*u||0,h=a.getTotalLength(t.path)-E*u):(g=E*u,h=a.getTotalLength(t.path)-(d._.arrows.enddx*u||0)),k={},k["marker-"+r]="url(#"+B+")",(h||g)&&(k.d=a.getSubpath(t.path,g,h)),q(s,k),d._.arrows[r+"Path"]=A,d._.arrows[r+"Marker"]=B,d._.arrows[r+"dx"]=E,d._.arrows[r+"Type"]=w,d._.arrows[r+"String"]=e}else f?(g=d._.arrows.startdx*u||0,h=a.getTotalLength(t.path)-g):(g=0,h=a.getTotalLength(t.path)-(d._.arrows.enddx*u||0)),d._.arrows[r+"Path"]&&q(s,{d:a.getSubpath(t.path,g,h)}),delete d._.arrows[r+"Path"],delete d._.arrows[r+"Marker"],delete d._.arrows[r+"dx"],delete d._.arrows[r+"Type"],delete d._.arrows[r+"String"];for(k in p)if(p[b](k)&&!p[k]){var F=a._g.doc.getElementById(k);F&&F.parentNode.removeChild(F)}}},u={"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},v=function(a,b,d){if(b=u[c(b).toLowerCase()]){for(var e=a.attrs["stroke-width"]||"1",f={round:e,square:e,butt:0}[a.attrs["stroke-linecap"]||d["stroke-linecap"]]||0,g=[],h=b.length;h--;)g[h]=b[h]*e+(h%2?1:-1)*f;q(a.node,{"stroke-dasharray":g.join(",")})}else q(a.node,{"stroke-dasharray":"none"})},w=function(d,f){var i=d.node,k=d.attrs,m=i.style.visibility;i.style.visibility="hidden";for(var o in f)if(f[b](o)){if(!a._availableAttrs[b](o))continue;var p=f[o];switch(k[o]=p,o){case"blur":d.blur(p);break;case"title":var u=i.getElementsByTagName("title");if(u.length&&(u=u[0]))u.firstChild.nodeValue=p;else{u=q("title");var w=a._g.doc.createTextNode(p);u.appendChild(w),i.appendChild(u)}break;case"href":case"target":var x=i.parentNode;if("a"!=x.tagName.toLowerCase()){var z=q("a");x.insertBefore(z,i),z.appendChild(i),x=z}"target"==o?x.setAttributeNS(n,"show","blank"==p?"new":p):x.setAttributeNS(n,o,p);break;case"cursor":i.style.cursor=p;break;case"transform":d.transform(p);break;case"arrow-start":t(d,p);break;case"arrow-end":t(d,p,1);break;case"clip-rect":var A=c(p).split(j);if(4==A.length){d.clip&&d.clip.parentNode.parentNode.removeChild(d.clip.parentNode);var B=q("clipPath"),C=q("rect");B.id=a.createUUID(),q(C,{x:A[0],y:A[1],width:A[2],height:A[3]}),B.appendChild(C),d.paper.defs.appendChild(B),q(i,{"clip-path":"url(#"+B.id+")"}),d.clip=C}if(!p){var D=i.getAttribute("clip-path");if(D){var E=a._g.doc.getElementById(D.replace(/(^url\(#|\)$)/g,l));E&&E.parentNode.removeChild(E),q(i,{"clip-path":l}),delete d.clip}}break;case"path":"path"==d.type&&(q(i,{d:p?k.path=a._pathToAbsolute(p):"M0,0"}),d._.dirty=1,d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1)));break;case"width":if(i.setAttribute(o,p),d._.dirty=1,!k.fx)break;o="x",p=k.x;case"x":k.fx&&(p=-k.x-(k.width||0));case"rx":if("rx"==o&&"rect"==d.type)break;case"cx":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"height":if(i.setAttribute(o,p),d._.dirty=1,!k.fy)break;o="y",p=k.y;case"y":k.fy&&(p=-k.y-(k.height||0));case"ry":if("ry"==o&&"rect"==d.type)break;case"cy":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"r":"rect"==d.type?q(i,{rx:p,ry:p}):i.setAttribute(o,p),d._.dirty=1;break;case"src":"image"==d.type&&i.setAttributeNS(n,"href",p);break;case"stroke-width":(1!=d._.sx||1!=d._.sy)&&(p/=g(h(d._.sx),h(d._.sy))||1),i.setAttribute(o,p),k["stroke-dasharray"]&&v(d,k["stroke-dasharray"],f),d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"stroke-dasharray":v(d,p,f);break;case"fill":var F=c(p).match(a._ISURL);if(F){B=q("pattern");var G=q("image");B.id=a.createUUID(),q(B,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1}),q(G,{x:0,y:0,"xlink:href":F[1]}),B.appendChild(G),function(b){a._preload(F[1],function(){var a=this.offsetWidth,c=this.offsetHeight;q(b,{width:a,height:c}),q(G,{width:a,height:c})})}(B),d.paper.defs.appendChild(B),q(i,{fill:"url(#"+B.id+")"}),d.pattern=B,d.pattern&&s(d);break}var H=a.getRGB(p);if(H.error){if(("circle"==d.type||"ellipse"==d.type||"r"!=c(p).charAt())&&r(d,p)){if("opacity"in k||"fill-opacity"in k){var I=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l));if(I){var J=I.getElementsByTagName("stop");q(J[J.length-1],{"stop-opacity":("opacity"in k?k.opacity:1)*("fill-opacity"in k?k["fill-opacity"]:1)})}}k.gradient=p,k.fill="none";break}}else delete f.gradient,delete k.gradient,!a.is(k.opacity,"undefined")&&a.is(f.opacity,"undefined")&&q(i,{opacity:k.opacity}),!a.is(k["fill-opacity"],"undefined")&&a.is(f["fill-opacity"],"undefined")&&q(i,{"fill-opacity":k["fill-opacity"]});H[b]("opacity")&&q(i,{"fill-opacity":H.opacity>1?H.opacity/100:H.opacity});case"stroke":H=a.getRGB(p),i.setAttribute(o,H.hex),"stroke"==o&&H[b]("opacity")&&q(i,{"stroke-opacity":H.opacity>1?H.opacity/100:H.opacity}),"stroke"==o&&d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"gradient":("circle"==d.type||"ellipse"==d.type||"r"!=c(p).charAt())&&r(d,p);break;case"opacity":k.gradient&&!k[b]("stroke-opacity")&&q(i,{"stroke-opacity":p>1?p/100:p});case"fill-opacity":if(k.gradient){I=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l)),I&&(J=I.getElementsByTagName("stop"),q(J[J.length-1],{"stop-opacity":p}));break}default:"font-size"==o&&(p=e(p,10)+"px");var K=o.replace(/(\-.)/g,function(a){return a.substring(1).toUpperCase()});i.style[K]=p,d._.dirty=1,i.setAttribute(o,p)}}y(d,f),i.style.visibility=m},x=1.2,y=function(d,f){if("text"==d.type&&(f[b]("text")||f[b]("font")||f[b]("font-size")||f[b]("x")||f[b]("y"))){var g=d.attrs,h=d.node,i=h.firstChild?e(a._g.doc.defaultView.getComputedStyle(h.firstChild,l).getPropertyValue("font-size"),10):10;if(f[b]("text")){for(g.text=f.text;h.firstChild;)h.removeChild(h.firstChild);for(var j,k=c(f.text).split("\n"),m=[],n=0,o=k.length;o>n;n++)j=q("tspan"),n&&q(j,{dy:i*x,x:g.x}),j.appendChild(a._g.doc.createTextNode(k[n])),h.appendChild(j),m[n]=j}else for(m=h.getElementsByTagName("tspan"),n=0,o=m.length;o>n;n++)n?q(m[n],{dy:i*x,x:g.x}):q(m[0],{dy:0});q(h,{x:g.x,y:g.y}),d._.dirty=1;var p=d._getBBox(),r=g.y-(p.y+p.height/2);r&&a.is(r,"finite")&&q(m[0],{dy:r})}},z=function(a){return a.parentNode&&"a"===a.parentNode.tagName.toLowerCase()?a.parentNode:a},A=function(b,c){this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.matrix=a.matrix(),this.realPath=null,this.paper=c,this.attrs=this.attrs||{},this._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},B=a.el;A.prototype=B,B.constructor=A,a._engine.path=function(a,b){var c=q("path");b.canvas&&b.canvas.appendChild(c);var d=new A(c,b);return d.type="path",w(d,{fill:"none",stroke:"#000",path:a}),d},B.rotate=function(a,b,e){if(this.removed)return this;if(a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),null==e&&(b=e),null==b||null==e){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}return this.transform(this._.transform.concat([["r",a,b,e]])),this},B.scale=function(a,b,e,f){if(this.removed)return this;if(a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3])),a=d(a[0]),null==b&&(b=a),null==f&&(e=f),null==e||null==f)var g=this.getBBox(1);return e=null==e?g.x+g.width/2:e,f=null==f?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]])),this},B.translate=function(a,b){return this.removed?this:(a=c(a).split(j),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this.transform(this._.transform.concat([["t",a,b]])),this)},B.transform=function(c){var d=this._;if(null==c)return d.transform;if(a._extractTransform(this,c),this.clip&&q(this.clip,{transform:this.matrix.invert()}),this.pattern&&s(this),this.node&&q(this.node,{transform:this.matrix}),1!=d.sx||1!=d.sy){var e=this.attrs[b]("stroke-width")?this.attrs["stroke-width"]:1;this.attr({"stroke-width":e})}return this},B.hide=function(){return this.removed||(this.node.style.display="none"),this},B.show=function(){return this.removed||(this.node.style.display=""),this},B.remove=function(){var b=z(this.node);if(!this.removed&&b.parentNode){var c=this.paper;c.__set__&&c.__set__.exclude(this),k.unbind("raphael.*.*."+this.id),this.gradient&&c.defs.removeChild(this.gradient),a._tear(this,c),b.parentNode.removeChild(b),this.removeData();for(var d in this)this[d]="function"==typeof this[d]?a._removedFactory(d):null;this.removed=!0}},B._getBBox=function(){if("none"==this.node.style.display){this.show();var a=!0}var b,c=!1;this.paper.canvas.parentElement?b=this.paper.canvas.parentElement.style:this.paper.canvas.parentNode&&(b=this.paper.canvas.parentNode.style),b&&"none"==b.display&&(c=!0,b.display="");var d={};try{d=this.node.getBBox()}catch(e){d={x:this.node.clientLeft,y:this.node.clientTop,width:this.node.clientWidth,height:this.node.clientHeight}}finally{d=d||{},c&&(b.display="none")}return a&&this.hide(),d},B.attr=function(c,d){if(this.removed)return this;if(null==c){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);return e.gradient&&"none"==e.fill&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform,e}if(null==d&&a.is(c,"string")){if("fill"==c&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;if("transform"==c)return this._.transform;for(var g=c.split(j),h={},i=0,l=g.length;l>i;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return l-1?h:h[g[0]]}if(null==d&&a.is(c,"array")){for(h={},i=0,l=c.length;l>i;i++)h[c[i]]=this.attr(c[i]);return h}if(null!=d){var m={};m[c]=d}else null!=c&&a.is(c,"object")&&(m=c);for(var n in m)k("raphael.attr."+n+"."+this.id,this,m[n]);for(n in this.paper.customAttributes)if(this.paper.customAttributes[b](n)&&m[b](n)&&a.is(this.paper.customAttributes[n],"function")){var o=this.paper.customAttributes[n].apply(this,[].concat(m[n]));this.attrs[n]=m[n];for(var p in o)o[b](p)&&(m[p]=o[p])}return w(this,m),this},B.toFront=function(){if(this.removed)return this;var b=z(this.node);b.parentNode.appendChild(b);var c=this.paper;return c.top!=this&&a._tofront(this,c),this},B.toBack=function(){if(this.removed)return this;var b=z(this.node),c=b.parentNode;c.insertBefore(b,c.firstChild),a._toback(this,this.paper);this.paper;return this},B.insertAfter=function(b){if(this.removed||!b)return this;var c=z(this.node),d=z(b.node||b[b.length-1].node);return d.nextSibling?d.parentNode.insertBefore(c,d.nextSibling):d.parentNode.appendChild(c),a._insertafter(this,b,this.paper),this},B.insertBefore=function(b){if(this.removed||!b)return this;var c=z(this.node),d=z(b.node||b[0].node);return d.parentNode.insertBefore(c,d),a._insertbefore(this,b,this.paper),this},B.blur=function(b){var c=this;if(0!==+b){var d=q("filter"),e=q("feGaussianBlur");c.attrs.blur=b,d.id=a.createUUID(),q(e,{stdDeviation:+b||1.5}),d.appendChild(e),c.paper.defs.appendChild(d),c._blur=d,q(c.node,{filter:"url(#"+d.id+")"})}else c._blur&&(c._blur.parentNode.removeChild(c._blur),delete c._blur,delete c.attrs.blur),c.node.removeAttribute("filter");return c},a._engine.circle=function(a,b,c,d){var e=q("circle");a.canvas&&a.canvas.appendChild(e);var f=new A(e,a);return f.attrs={cx:b,cy:c,r:d,fill:"none",stroke:"#000"},f.type="circle",q(e,f.attrs),f},a._engine.rect=function(a,b,c,d,e,f){var g=q("rect");a.canvas&&a.canvas.appendChild(g);var h=new A(g,a);return h.attrs={x:b,y:c,width:d,height:e,rx:f||0,ry:f||0,fill:"none",stroke:"#000"},h.type="rect",q(g,h.attrs),h},a._engine.ellipse=function(a,b,c,d,e){var f=q("ellipse");a.canvas&&a.canvas.appendChild(f);var g=new A(f,a);return g.attrs={cx:b,cy:c,rx:d,ry:e,fill:"none",stroke:"#000"},g.type="ellipse",q(f,g.attrs),g},a._engine.image=function(a,b,c,d,e,f){var g=q("image");q(g,{x:c,y:d,width:e,height:f,preserveAspectRatio:"none"}),g.setAttributeNS(n,"href",b),a.canvas&&a.canvas.appendChild(g);var h=new A(g,a);return h.attrs={x:c,y:d,width:e,height:f,src:b},h.type="image",h},a._engine.text=function(b,c,d,e){var f=q("text");b.canvas&&b.canvas.appendChild(f);var g=new A(f,b);return g.attrs={x:c,y:d,"text-anchor":"middle",text:e,"font-family":a._availableAttrs["font-family"],"font-size":a._availableAttrs["font-size"],stroke:"none",fill:"#000"},g.type="text",w(g,g.attrs),g},a._engine.setSize=function(a,b){return this.width=a||this.width,this.height=b||this.height,this.canvas.setAttribute("width",this.width),this.canvas.setAttribute("height",this.height),this._viewBox&&this.setViewBox.apply(this,this._viewBox),this},a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b&&b.container,d=b.x,e=b.y,f=b.width,g=b.height;if(!c)throw new Error("SVG container not found.");var h,i=q("svg"),j="overflow:hidden;";return d=d||0,e=e||0,f=f||512,g=g||342,q(i,{height:g,version:1.1,width:f,xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}),1==c?(i.style.cssText=j+"position:absolute;left:"+d+"px;top:"+e+"px",a._g.doc.body.appendChild(i),h=1):(i.style.cssText=j+"position:relative",c.firstChild?c.insertBefore(i,c.firstChild):c.appendChild(i)),c=new a._Paper,c.width=f,c.height=g,c.canvas=i,c.clear(),c._left=c._top=0,h&&(c.renderfix=function(){}),c.renderfix(),c},a._engine.setViewBox=function(a,b,c,d,e){k("raphael.setViewBox",this,this._viewBox,[a,b,c,d,e]);var f,h,i=this.getSize(),j=g(c/i.width,d/i.height),l=this.top,n=e?"xMidYMid meet":"xMinYMin";for(null==a?(this._vbSize&&(j=1),delete this._vbSize,f="0 0 "+this.width+m+this.height):(this._vbSize=j,f=a+m+b+m+c+m+d),q(this.canvas,{viewBox:f,preserveAspectRatio:n});j&&l;)h="stroke-width"in l.attrs?l.attrs["stroke-width"]:1,l.attr({"stroke-width":h}),l._.dirty=1,l._.dirtyT=1,l=l.prev;return this._viewBox=[a,b,c,d,!!e],this},a.prototype.renderfix=function(){var a,b=this.canvas,c=b.style;try{a=b.getScreenCTM()||b.createSVGMatrix()}catch(d){a=b.createSVGMatrix()}var e=-a.e%1,f=-a.f%1;(e||f)&&(e&&(this._left=(this._left+e)%1,c.left=this._left+"px"),f&&(this._top=(this._top+f)%1,c.top=this._top+"px"))},a.prototype.clear=function(){a.eve("raphael.clear",this);for(var b=this.canvas;b.firstChild;)b.removeChild(b.firstChild);this.bottom=this.top=null,(this.desc=q("desc")).appendChild(a._g.doc.createTextNode("Created with Raphaël "+a.version)),b.appendChild(this.desc),b.appendChild(this.defs=q("defs"))},a.prototype.remove=function(){k("raphael.remove",this),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]="function"==typeof this[b]?a._removedFactory(b):null};var C=a.st;for(var D in B)B[b](D)&&!C[b](D)&&(C[D]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(D))}}),function(a,b){"function"==typeof define&&define.amd?define("raphael.vml",["raphael.core"],function(a){return b(a)}):b("object"==typeof exports?require("./raphael.core"):a.Raphael)}(this,function(a){if(!a||a.vml){var b="hasOwnProperty",c=String,d=parseFloat,e=Math,f=e.round,g=e.max,h=e.min,i=e.abs,j="fill",k=/[, ]+/,l=a.eve,m=" progid:DXImageTransform.Microsoft",n=" ",o="",p={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},q=/([clmz]),?([^clmz]*)/gi,r=/ progid:\S+Blur\([^\)]+\)/g,s=/-?[^,\s-]+/g,t="position:absolute;left:0;top:0;width:1px;height:1px;behavior:url(#default#VML)",u=21600,v={path:1,rect:1,image:1},w={circle:1,ellipse:1},x=function(b){var d=/[ahqstv]/gi,e=a._pathToAbsolute;if(c(b).match(d)&&(e=a._path2curve),d=/[clmz]/g,e==a._pathToAbsolute&&!c(b).match(d)){var g=c(b).replace(q,function(a,b,c){var d=[],e="m"==b.toLowerCase(),g=p[b];return c.replace(s,function(a){e&&2==d.length&&(g+=d+p["m"==b?"l":"L"],d=[]),d.push(f(a*u))}),g+d});return g}var h,i,j=e(b);g=[];for(var k=0,l=j.length;l>k;k++){h=j[k],i=j[k][0].toLowerCase(),"z"==i&&(i="x");for(var m=1,r=h.length;r>m;m++)i+=f(h[m]*u)+(m!=r-1?",":o);g.push(i)}return g.join(n)},y=function(b,c,d){var e=a.matrix();return e.rotate(-b,.5,.5),{dx:e.x(c,d),dy:e.y(c,d)}},z=function(a,b,c,d,e,f){var g=a._,h=a.matrix,k=g.fillpos,l=a.node,m=l.style,o=1,p="",q=u/b,r=u/c;if(m.visibility="hidden",b&&c){if(l.coordsize=i(q)+n+i(r),m.rotation=f*(0>b*c?-1:1),f){var s=y(f,d,e);d=s.dx,e=s.dy}if(0>b&&(p+="x"),0>c&&(p+=" y")&&(o=-1),m.flip=p,l.coordorigin=d*-q+n+e*-r,k||g.fillsize){var t=l.getElementsByTagName(j);t=t&&t[0],l.removeChild(t),k&&(s=y(f,h.x(k[0],k[1]),h.y(k[0],k[1])),t.position=s.dx*o+n+s.dy*o),g.fillsize&&(t.size=g.fillsize[0]*i(b)+n+g.fillsize[1]*i(c)),l.appendChild(t)}m.visibility="visible"}};a.toString=function(){return"Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël "+this.version};var A=function(a,b,d){for(var e=c(b).toLowerCase().split("-"),f=d?"end":"start",g=e.length,h="classic",i="medium",j="medium";g--;)switch(e[g]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":h=e[g];break;case"wide":case"narrow":j=e[g];break;case"long":case"short":i=e[g]}var k=a.node.getElementsByTagName("stroke")[0];k[f+"arrow"]=h,k[f+"arrowlength"]=i,k[f+"arrowwidth"]=j},B=function(e,i){e.attrs=e.attrs||{};var l=e.node,m=e.attrs,p=l.style,q=v[e.type]&&(i.x!=m.x||i.y!=m.y||i.width!=m.width||i.height!=m.height||i.cx!=m.cx||i.cy!=m.cy||i.rx!=m.rx||i.ry!=m.ry||i.r!=m.r),r=w[e.type]&&(m.cx!=i.cx||m.cy!=i.cy||m.r!=i.r||m.rx!=i.rx||m.ry!=i.ry),s=e;for(var t in i)i[b](t)&&(m[t]=i[t]);if(q&&(m.path=a._getPath[e.type](e),e._.dirty=1),i.href&&(l.href=i.href),i.title&&(l.title=i.title),i.target&&(l.target=i.target),i.cursor&&(p.cursor=i.cursor),"blur"in i&&e.blur(i.blur),(i.path&&"path"==e.type||q)&&(l.path=x(~c(m.path).toLowerCase().indexOf("r")?a._pathToAbsolute(m.path):m.path),e._.dirty=1,"image"==e.type&&(e._.fillpos=[m.x,m.y],e._.fillsize=[m.width,m.height],z(e,1,1,0,0,0))),"transform"in i&&e.transform(i.transform),r){var y=+m.cx,B=+m.cy,D=+m.rx||+m.r||0,E=+m.ry||+m.r||0;l.path=a.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x",f((y-D)*u),f((B-E)*u),f((y+D)*u),f((B+E)*u),f(y*u)),e._.dirty=1}if("clip-rect"in i){var G=c(i["clip-rect"]).split(k);if(4==G.length){G[2]=+G[2]+ +G[0],G[3]=+G[3]+ +G[1];var H=l.clipRect||a._g.doc.createElement("div"),I=H.style;I.clip=a.format("rect({1}px {2}px {3}px {0}px)",G),l.clipRect||(I.position="absolute",I.top=0,I.left=0,I.width=e.paper.width+"px",I.height=e.paper.height+"px",l.parentNode.insertBefore(H,l),H.appendChild(l),l.clipRect=H)}i["clip-rect"]||l.clipRect&&(l.clipRect.style.clip="auto")}if(e.textpath){var J=e.textpath.style;i.font&&(J.font=i.font),i["font-family"]&&(J.fontFamily='"'+i["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,o)+'"'),i["font-size"]&&(J.fontSize=i["font-size"]),i["font-weight"]&&(J.fontWeight=i["font-weight"]),i["font-style"]&&(J.fontStyle=i["font-style"])}if("arrow-start"in i&&A(s,i["arrow-start"]),"arrow-end"in i&&A(s,i["arrow-end"],1),null!=i.opacity||null!=i["stroke-width"]||null!=i.fill||null!=i.src||null!=i.stroke||null!=i["stroke-width"]||null!=i["stroke-opacity"]||null!=i["fill-opacity"]||null!=i["stroke-dasharray"]||null!=i["stroke-miterlimit"]||null!=i["stroke-linejoin"]||null!=i["stroke-linecap"]){var K=l.getElementsByTagName(j),L=!1;if(K=K&&K[0],!K&&(L=K=F(j)),"image"==e.type&&i.src&&(K.src=i.src),i.fill&&(K.on=!0),(null==K.on||"none"==i.fill||null===i.fill)&&(K.on=!1),K.on&&i.fill){var M=c(i.fill).match(a._ISURL);if(M){K.parentNode==l&&l.removeChild(K),K.rotate=!0,K.src=M[1],K.type="tile";var N=e.getBBox(1);K.position=N.x+n+N.y,e._.fillpos=[N.x,N.y],a._preload(M[1],function(){e._.fillsize=[this.offsetWidth,this.offsetHeight]})}else K.color=a.getRGB(i.fill).hex,K.src=o,K.type="solid",a.getRGB(i.fill).error&&(s.type in{circle:1,ellipse:1}||"r"!=c(i.fill).charAt())&&C(s,i.fill,K)&&(m.fill="none",m.gradient=i.fill,K.rotate=!1)}if("fill-opacity"in i||"opacity"in i){var O=((+m["fill-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+a.getRGB(i.fill).o+1||2)-1);O=h(g(O,0),1),K.opacity=O,K.src&&(K.color="none")}l.appendChild(K);var P=l.getElementsByTagName("stroke")&&l.getElementsByTagName("stroke")[0],Q=!1;!P&&(Q=P=F("stroke")),(i.stroke&&"none"!=i.stroke||i["stroke-width"]||null!=i["stroke-opacity"]||i["stroke-dasharray"]||i["stroke-miterlimit"]||i["stroke-linejoin"]||i["stroke-linecap"])&&(P.on=!0),("none"==i.stroke||null===i.stroke||null==P.on||0==i.stroke||0==i["stroke-width"])&&(P.on=!1);var R=a.getRGB(i.stroke);P.on&&i.stroke&&(P.color=R.hex),O=((+m["stroke-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+R.o+1||2)-1);var S=.75*(d(i["stroke-width"])||1);if(O=h(g(O,0),1),null==i["stroke-width"]&&(S=m["stroke-width"]),i["stroke-width"]&&(P.weight=S),S&&1>S&&(O*=S)&&(P.weight=1),P.opacity=O,i["stroke-linejoin"]&&(P.joinstyle=i["stroke-linejoin"]||"miter"),P.miterlimit=i["stroke-miterlimit"]||8,i["stroke-linecap"]&&(P.endcap="butt"==i["stroke-linecap"]?"flat":"square"==i["stroke-linecap"]?"square":"round"),"stroke-dasharray"in i){var T={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};P.dashstyle=T[b](i["stroke-dasharray"])?T[i["stroke-dasharray"]]:o}Q&&l.appendChild(P)}if("text"==s.type){s.paper.canvas.style.display=o;var U=s.paper.span,V=100,W=m.font&&m.font.match(/\d+(?:\.\d*)?(?=px)/);p=U.style,m.font&&(p.font=m.font),m["font-family"]&&(p.fontFamily=m["font-family"]),m["font-weight"]&&(p.fontWeight=m["font-weight"]),m["font-style"]&&(p.fontStyle=m["font-style"]),W=d(m["font-size"]||W&&W[0])||10,p.fontSize=W*V+"px",s.textpath.string&&(U.innerHTML=c(s.textpath.string).replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br>"));var X=U.getBoundingClientRect();s.W=m.w=(X.right-X.left)/V,s.H=m.h=(X.bottom-X.top)/V,s.X=m.x,s.Y=m.y+s.H/2,("x"in i||"y"in i)&&(s.path.v=a.format("m{0},{1}l{2},{1}",f(m.x*u),f(m.y*u),f(m.x*u)+1));for(var Y=["x","y","text","font","font-family","font-weight","font-style","font-size"],Z=0,$=Y.length;$>Z;Z++)if(Y[Z]in i){s._.dirty=1;break}switch(m["text-anchor"]){case"start":s.textpath.style["v-text-align"]="left",s.bbx=s.W/2;break;case"end":s.textpath.style["v-text-align"]="right",s.bbx=-s.W/2;break;default:s.textpath.style["v-text-align"]="center",s.bbx=0}s.textpath.style["v-text-kern"]=!0}},C=function(b,f,g){b.attrs=b.attrs||{};var h=(b.attrs,Math.pow),i="linear",j=".5 .5";if(b.attrs.gradient=f,f=c(f).replace(a._radial_gradient,function(a,b,c){return i="radial",b&&c&&(b=d(b),c=d(c),h(b-.5,2)+h(c-.5,2)>.25&&(c=e.sqrt(.25-h(b-.5,2))*(2*(c>.5)-1)+.5),j=b+n+c),o}),f=f.split(/\s*\-\s*/),"linear"==i){var k=f.shift();if(k=-d(k),isNaN(k))return null}var l=a._parseDots(f);if(!l)return null;if(b=b.shape||b.node,l.length){b.removeChild(g),g.on=!0,g.method="none",g.color=l[0].color,g.color2=l[l.length-1].color;for(var m=[],p=0,q=l.length;q>p;p++)l[p].offset&&m.push(l[p].offset+n+l[p].color);g.colors=m.length?m.join():"0% "+g.color,"radial"==i?(g.type="gradientTitle",g.focus="100%",g.focussize="0 0",g.focusposition=j,g.angle=0):(g.type="gradient",g.angle=(270-k)%360),b.appendChild(g)}return 1},D=function(b,c){this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.X=0,this.Y=0,this.attrs={},this.paper=c,this.matrix=a.matrix(),this._={transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},E=a.el;D.prototype=E,E.constructor=D,E.transform=function(b){if(null==b)return this._.transform;var d,e=this.paper._viewBoxShift,f=e?"s"+[e.scale,e.scale]+"-1-1t"+[e.dx,e.dy]:o;e&&(d=b=c(b).replace(/\.{3}|\u2026/g,this._.transform||o)),a._extractTransform(this,f+b);var g,h=this.matrix.clone(),i=this.skew,j=this.node,k=~c(this.attrs.fill).indexOf("-"),l=!c(this.attrs.fill).indexOf("url(");if(h.translate(1,1),l||k||"image"==this.type)if(i.matrix="1 0 0 1",i.offset="0 0",g=h.split(),k&&g.noRotation||!g.isSimple){j.style.filter=h.toFilter();var m=this.getBBox(),p=this.getBBox(1),q=m.x-p.x,r=m.y-p.y;j.coordorigin=q*-u+n+r*-u,z(this,1,1,q,r,0)}else j.style.filter=o,z(this,g.scalex,g.scaley,g.dx,g.dy,g.rotate);else j.style.filter=o,i.matrix=c(h),i.offset=h.offset();return null!==d&&(this._.transform=d,a._extractTransform(this,d)),this},E.rotate=function(a,b,e){if(this.removed)return this;if(null!=a){if(a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),null==e&&(b=e),null==b||null==e){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}return this._.dirtyT=1,this.transform(this._.transform.concat([["r",a,b,e]])),this}},E.translate=function(a,b){return this.removed?this:(a=c(a).split(k),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this._.bbox&&(this._.bbox.x+=a,this._.bbox.y+=b),this.transform(this._.transform.concat([["t",a,b]])),this)},E.scale=function(a,b,e,f){if(this.removed)return this;if(a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3]),isNaN(e)&&(e=null),isNaN(f)&&(f=null)),a=d(a[0]),null==b&&(b=a),null==f&&(e=f),null==e||null==f)var g=this.getBBox(1);return e=null==e?g.x+g.width/2:e,f=null==f?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]])),this._.dirtyT=1,this},E.hide=function(){return!this.removed&&(this.node.style.display="none"),this},E.show=function(){return!this.removed&&(this.node.style.display=o),this},E.auxGetBBox=a.el.getBBox,E.getBBox=function(){var a=this.auxGetBBox();if(this.paper&&this.paper._viewBoxShift){var b={},c=1/this.paper._viewBoxShift.scale;return b.x=a.x-this.paper._viewBoxShift.dx,b.x*=c,b.y=a.y-this.paper._viewBoxShift.dy,b.y*=c,b.width=a.width*c,b.height=a.height*c,b.x2=b.x+b.width,b.y2=b.y+b.height,b}return a},E._getBBox=function(){return this.removed?{}:{x:this.X+(this.bbx||0)-this.W/2,y:this.Y-this.H,width:this.W,height:this.H}},E.remove=function(){if(!this.removed&&this.node.parentNode){this.paper.__set__&&this.paper.__set__.exclude(this),a.eve.unbind("raphael.*.*."+this.id),a._tear(this,this.paper),this.node.parentNode.removeChild(this.node),this.shape&&this.shape.parentNode.removeChild(this.shape);for(var b in this)this[b]="function"==typeof this[b]?a._removedFactory(b):null;this.removed=!0}},E.attr=function(c,d){if(this.removed)return this;if(null==c){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);return e.gradient&&"none"==e.fill&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform,e}if(null==d&&a.is(c,"string")){if(c==j&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;for(var g=c.split(k),h={},i=0,m=g.length;m>i;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return m-1?h:h[g[0]]}if(this.attrs&&null==d&&a.is(c,"array")){for(h={},i=0,m=c.length;m>i;i++)h[c[i]]=this.attr(c[i]);return h}var n;null!=d&&(n={},n[c]=d),null==d&&a.is(c,"object")&&(n=c);for(var o in n)l("raphael.attr."+o+"."+this.id,this,n[o]);if(n){for(o in this.paper.customAttributes)if(this.paper.customAttributes[b](o)&&n[b](o)&&a.is(this.paper.customAttributes[o],"function")){var p=this.paper.customAttributes[o].apply(this,[].concat(n[o]));this.attrs[o]=n[o];for(var q in p)p[b](q)&&(n[q]=p[q])}n.text&&"text"==this.type&&(this.textpath.string=n.text),B(this,n)}return this},E.toFront=function(){return!this.removed&&this.node.parentNode.appendChild(this.node),this.paper&&this.paper.top!=this&&a._tofront(this,this.paper),this},E.toBack=function(){return this.removed?this:(this.node.parentNode.firstChild!=this.node&&(this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild),a._toback(this,this.paper)),this)},E.insertAfter=function(b){return this.removed?this:(b.constructor==a.st.constructor&&(b=b[b.length-1]),b.node.nextSibling?b.node.parentNode.insertBefore(this.node,b.node.nextSibling):b.node.parentNode.appendChild(this.node),a._insertafter(this,b,this.paper),this)},E.insertBefore=function(b){return this.removed?this:(b.constructor==a.st.constructor&&(b=b[0]),b.node.parentNode.insertBefore(this.node,b.node),a._insertbefore(this,b,this.paper),this)},E.blur=function(b){var c=this.node.runtimeStyle,d=c.filter;return d=d.replace(r,o),0!==+b?(this.attrs.blur=b,c.filter=d+n+m+".Blur(pixelradius="+(+b||1.5)+")",c.margin=a.format("-{0}px 0 0 -{0}px",f(+b||1.5))):(c.filter=d,c.margin=0,delete this.attrs.blur),this},a._engine.path=function(a,b){var c=F("shape");c.style.cssText=t,c.coordsize=u+n+u,c.coordorigin=b.coordorigin;var d=new D(c,b),e={fill:"none",stroke:"#000"};a&&(e.path=a),d.type="path",d.path=[],d.Path=o,B(d,e),b.canvas.appendChild(c);var f=F("skew");return f.on=!0,c.appendChild(f),d.skew=f,d.transform(o),d},a._engine.rect=function(b,c,d,e,f,g){var h=a._rectPath(c,d,e,f,g),i=b.path(h),j=i.attrs;return i.X=j.x=c,i.Y=j.y=d,i.W=j.width=e,i.H=j.height=f,j.r=g,j.path=h,i.type="rect",i},a._engine.ellipse=function(a,b,c,d,e){{var f=a.path();f.attrs}return f.X=b-d,f.Y=c-e,f.W=2*d,f.H=2*e,f.type="ellipse",B(f,{cx:b,cy:c,rx:d,ry:e}),f},a._engine.circle=function(a,b,c,d){{var e=a.path();e.attrs}return e.X=b-d,e.Y=c-d,e.W=e.H=2*d,e.type="circle",B(e,{cx:b,cy:c,r:d}),e},a._engine.image=function(b,c,d,e,f,g){var h=a._rectPath(d,e,f,g),i=b.path(h).attr({stroke:"none"}),k=i.attrs,l=i.node,m=l.getElementsByTagName(j)[0];return k.src=c,i.X=k.x=d,i.Y=k.y=e,i.W=k.width=f,i.H=k.height=g,k.path=h,i.type="image",m.parentNode==l&&l.removeChild(m),m.rotate=!0,m.src=c,m.type="tile",i._.fillpos=[d,e],i._.fillsize=[f,g],l.appendChild(m),z(i,1,1,0,0,0),i},a._engine.text=function(b,d,e,g){var h=F("shape"),i=F("path"),j=F("textpath");d=d||0,e=e||0,g=g||"",i.v=a.format("m{0},{1}l{2},{1}",f(d*u),f(e*u),f(d*u)+1),i.textpathok=!0,j.string=c(g),j.on=!0,h.style.cssText=t,h.coordsize=u+n+u,h.coordorigin="0 0";var k=new D(h,b),l={fill:"#000",stroke:"none",font:a._availableAttrs.font,text:g};k.shape=h,k.path=i,k.textpath=j,k.type="text",k.attrs.text=c(g),k.attrs.x=d,k.attrs.y=e,k.attrs.w=1,k.attrs.h=1,B(k,l),h.appendChild(j),h.appendChild(i),b.canvas.appendChild(h);var m=F("skew");return m.on=!0,h.appendChild(m),k.skew=m,k.transform(o),k},a._engine.setSize=function(b,c){var d=this.canvas.style;return this.width=b,this.height=c,b==+b&&(b+="px"),c==+c&&(c+="px"),d.width=b,d.height=c,d.clip="rect(0 "+b+" "+c+" 0)",this._viewBox&&a._engine.setViewBox.apply(this,this._viewBox),this},a._engine.setViewBox=function(b,c,d,e,f){a.eve("raphael.setViewBox",this,this._viewBox,[b,c,d,e,f]);var g,h,i=this.getSize(),j=i.width,k=i.height;return f&&(g=k/e,h=j/d,j>d*g&&(b-=(j-d*g)/2/g),k>e*h&&(c-=(k-e*h)/2/h)),this._viewBox=[b,c,d,e,!!f],this._viewBoxShift={dx:-b,dy:-c,scale:i},this.forEach(function(a){a.transform("...")}),this};var F;a._engine.initWin=function(a){var b=a.document;b.styleSheets.length<31?b.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)"):b.styleSheets[0].addRule(".rvml","behavior:url(#default#VML)");try{!b.namespaces.rvml&&b.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),F=function(a){return b.createElement("<rvml:"+a+' class="rvml">')}}catch(c){F=function(a){return b.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},a._engine.initWin(a._g.win),a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b.container,d=b.height,e=b.width,f=b.x,g=b.y;if(!c)throw new Error("VML container not found.");var h=new a._Paper,i=h.canvas=a._g.doc.createElement("div"),j=i.style;return f=f||0,g=g||0,e=e||512,d=d||342,h.width=e,h.height=d,e==+e&&(e+="px"),d==+d&&(d+="px"),h.coordsize=1e3*u+n+1e3*u,h.coordorigin="0 0",h.span=a._g.doc.createElement("span"),h.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",i.appendChild(h.span),j.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",e,d),1==c?(a._g.doc.body.appendChild(i),j.left=f+"px",j.top=g+"px",j.position="absolute"):c.firstChild?c.insertBefore(i,c.firstChild):c.appendChild(i),h.renderfix=function(){},h},a.prototype.clear=function(){a.eve("raphael.clear",this),this.canvas.innerHTML=o,this.span=a._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},a.prototype.remove=function(){a.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]="function"==typeof this[b]?a._removedFactory(b):null;return!0};var G=a.st;for(var H in E)E[b](H)&&!G[b](H)&&(G[H]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(H))}});
\ No newline at end of file
<!doctype html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>纯javascript简单实用的仪表盘插件</title>
<link rel="stylesheet" type="text/css" href="normalize.css" />
<link rel="stylesheet" type="text/css" href="default.css">
<style>
.container {
width: 450px;
margin: 0 auto;
text-align: center;
}
.gauge {
width: 450px;
height: 450px;
}
a:link.button,
a:active.button,
a:visited.button,
a:hover.button {
margin: 30px 5px 0 2px;
padding: 7px 13px;
}
</style>
</head>
<body>
<div class="htmleaf-container">
<div class="container">
<div class="gg1" class="gauge"></div>
<a href="#" id="gg1_refresh" class="btn">Random Refresh</a>
</div>
</div>
<script src="gauge.min.js"></script>
<script src="justgage.js"></script>
<script>
document.addEventListener("DOMContentLoaded", function(event) {
var gg1 = new $Gauge({
dom: ".gg1",
value: 72,
min: 0,
max: 100,
donut: true,
gaugeWidthScale: 0.6,
counter: true,
symbol:'%'
});
document.getElementById('gg1_refresh').addEventListener('click', function() {
gg1.refresh(getRandomInt(0, 100));
});
});
</script>
</body>
</html>
\ No newline at end of file
$Gauge = function(config) {
var obj = this;
// Helps in case developer wants to debug it. unobtrusive
if (config === null || config === undefined) {
console.log('未设置config参数');
return false;
}
var node;
if (config.dom !== null && config.dom !== undefined) {
node = document.querySelector(config.dom);
if (!node) {
console.log('未找到dom', config.dom);
return false;
}
} else if (config.parentNode !== null && config.parentNode !== undefined) {
node = config.parentNode;
} else {
console.log('请确保现有的Dom元素或父节点可以正确传递构造函数');
return false;
}
var dataset = node.dataset ? node.dataset : {};
// configurable parameters
obj.config =
{
// id : string
// this is container element dom
dom : config.dom,
// parentNode : node object
// this is container element
parentNode : kvLookup('parentNode', config, dataset, null),
// width : int
// gauge width
width : kvLookup('width', config, dataset, null),
// height : int
// gauge height
height : kvLookup('height', config, dataset, null),
// title : string
// gauge title
title : kvLookup('title', config, dataset, ""),
// titleFontColor : string
// color of gauge title
titleFontColor : kvLookup('titleFontColor', config, dataset, "#999999"),
// value : float
// value gauge is showing
value : kvLookup('value', config, dataset, 0, 'float'),
// valueFontColor : string
// color of label showing current value
valueFontColor : kvLookup('valueFontColor', config, dataset, "#010101"),
// symbol : string
// special symbol to show next to value
symbol : kvLookup('symbol', config, dataset, ''),
// min : float
// min value
min : kvLookup('min', config, dataset, 0, 'float'),
// max : float
// max value
max : kvLookup('max', config, dataset, 100, 'float'),
// humanFriendlyDecimal : int
// number of decimal places for our human friendly number to contain
humanFriendlyDecimal : kvLookup('humanFriendlyDecimal', config, dataset, 0),
// textRenderer: func
// function applied before rendering text
textRenderer : kvLookup('textRenderer', config, dataset, null),
// gaugeWidthScale : float
// width of the gauge element
gaugeWidthScale : kvLookup('gaugeWidthScale', config, dataset, 1.0),
// gaugeColor : string
// background color of gauge element
gaugeColor : kvLookup('gaugeColor', config, dataset, "#edebeb"),
// label : string
// text to show below value
label : kvLookup('label', config, dataset, ''),
// labelFontColor : string
// color of label showing label under value
labelFontColor : kvLookup('labelFontColor', config, dataset, "#b3b3b3"),
// shadowOpacity : int
// 0 ~ 1
shadowOpacity : kvLookup('shadowOpacity', config, dataset, 0.2),
// shadowSize: int
// inner shadow size
shadowSize : kvLookup('shadowSize', config, dataset, 5),
// shadowVerticalOffset : int
// how much shadow is offset from top
shadowVerticalOffset : kvLookup('shadowVerticalOffset', config, dataset, 3),
// levelColors : string[]
// colors of indicator, from lower to upper, in RGB format
levelColors : kvLookup('levelColors', config, dataset, [ "#36a29f", "#36a29f", "#36a29f" ], 'array', ','),
// startAnimationTime : int
// length of initial animation
startAnimationTime : kvLookup('startAnimationTime', config, dataset, 700),
// startAnimationType : string
// type of initial animation (linear, >, <, <>, bounce)
startAnimationType : kvLookup('startAnimationType', config, dataset, '>'),
// refreshAnimationTime : int
// length of refresh animation
refreshAnimationTime : kvLookup('refreshAnimationTime', config, dataset, 700),
// refreshAnimationType : string
// type of refresh animation (linear, >, <, <>, bounce)
refreshAnimationType : kvLookup('refreshAnimationType', config, dataset, '>'),
// donutStartAngle : int
// angle to start from when in donut mode
donutStartAngle : kvLookup('donutStartAngle', config, dataset, 90),
// valueMinFontSize : int
// absolute minimum font size for the value
valueMinFontSize : kvLookup('valueMinFontSize', config, dataset, 16),
// titleMinFontSize
// absolute minimum font size for the title
titleMinFontSize : kvLookup('titleMinFontSize', config, dataset, 10),
// labelMinFontSize
// absolute minimum font size for the label
labelMinFontSize : kvLookup('labelMinFontSize', config, dataset, 10),
// minLabelMinFontSize
// absolute minimum font size for the minimum label
minLabelMinFontSize : kvLookup('minLabelMinFontSize', config, dataset, 10),
// maxLabelMinFontSize
// absolute minimum font size for the maximum label
maxLabelMinFontSize : kvLookup('maxLabelMinFontSize', config, dataset, 10),
// hideValue : bool
// hide value text
hideValue : kvLookup('hideValue', config, dataset, false),
// hideMinMax : bool
// hide min and max values
hideMinMax : kvLookup('hideMinMax', config, dataset, false),
// hideInnerShadow : bool
// hide inner shadow
hideInnerShadow : kvLookup('hideInnerShadow', config, dataset, false),
// humanFriendly : bool
// convert large numbers for min, max, value to human friendly (e.g. 1234567 -> 1.23M)
humanFriendly : kvLookup('humanFriendly', config, dataset, false),
// noGradient : bool
// whether to use gradual color change for value, or sector-based
noGradient : kvLookup('noGradient', config, dataset, false),
// donut : bool
// show full donut gauge
donut : kvLookup('donut', config, dataset, false),
// relativeGaugeSize : bool
// whether gauge size should follow changes in container element size
relativeGaugeSize : kvLookup('relativeGaugeSize', config, dataset, false),
// counter : bool
// animate level number change
counter : kvLookup('counter', config, dataset, false),
// decimals : int
// number of digits after floating point
decimals : kvLookup('decimals', config, dataset, 0),
// customSectors : [] of objects
// number of digits after floating point
customSectors : kvLookup('customSectors', config, dataset, []),
// formatNumber: boolean
// formats numbers with commas where appropriate
formatNumber : kvLookup('formatNumber', config, dataset, false)
};
// variables
var
canvasW,
canvasH,
widgetW,
widgetH,
aspect,
dx,
dy,
titleFontSize,
titleX,
titleY,
valueFontSize,
valueX,
valueY,
labelFontSize,
labelX,
labelY,
minFontSize,
minX,
minY,
maxFontSize,
maxX,
maxY;
// overflow values
if (obj.config.value > obj.config.max) obj.config.value = obj.config.max;
if (obj.config.value < obj.config.min) obj.config.value = obj.config.min;
obj.originalValue = kvLookup('value', config, dataset, -1, 'float');
// create canvas
if (obj.config.dom !== null && (document.querySelector(obj.config.dom)) !== null) {
obj.canvas = Raphael(obj.config.dom, "100%", "100%");
} else if (obj.config.parentNode !== null) {
obj.canvas = Raphael(obj.config.parentNode, "100%", "100%");
}
if (obj.config.relativeGaugeSize === true) {
obj.canvas.setViewBox(0, 0, 200, 150, true);
}
// canvas dimensions
if (obj.config.relativeGaugeSize === true) {
canvasW = 200;
canvasH = 150;
} else if (obj.config.width !== null && obj.config.height !== null) {
canvasW = obj.config.width;
canvasH = obj.config.height;
} else if (obj.config.parentNode !== null) {
obj.canvas.setViewBox(0, 0, 200, 150, true);
canvasW = 200;
canvasH = 150;
} else {
canvasW = getStyle(document.querySelector(obj.config.dom), "width").slice(0, -2) * 1;
canvasH = getStyle(document.querySelector(obj.config.dom), "height").slice(0, -2) * 1;
}
// widget dimensions
if (obj.config.donut === true) {
// DONUT *******************************
// width more than height
if(canvasW > canvasH) {
widgetH = canvasH;
widgetW = widgetH;
// width less than height
} else if (canvasW < canvasH) {
widgetW = canvasW;
widgetH = widgetW;
// if height don't fit, rescale both
if(widgetH > canvasH) {
aspect = widgetH / canvasH;
widgetH = widgetH / aspect;
widgetW = widgetH / aspect;
}
// equal
} else {
widgetW = canvasW;
widgetH = widgetW;
}
// delta
dx = (canvasW - widgetW)/2;
dy = (canvasH - widgetH)/2;
// title
titleFontSize = ((widgetH / 8) > 10) ? (widgetH / 10) : 10;
titleX = dx + widgetW / 2;
titleY = dy + widgetH / 11;
// value
valueFontSize = ((widgetH / 6.4) > 16) ? (widgetH / 5.4) : 18;
valueX = dx + widgetW / 2;
if(obj.config.label !== '') {
valueY = dy + widgetH / 1.85;
} else {
valueY = dy + widgetH / 1.7;
}
// label
labelFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10;
labelX = dx + widgetW / 2;
labelY = valueY + labelFontSize;
// min
minFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10;
minX = dx + (widgetW / 10) + (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2 ;
minY = labelY;
// max
maxFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10;
maxX = dx + widgetW - (widgetW / 10) - (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2 ;
maxY = labelY;
} else {
// HALF *******************************
// width more than height
if(canvasW > canvasH) {
widgetH = canvasH;
widgetW = widgetH * 1.25;
//if width doesn't fit, rescale both
if(widgetW > canvasW) {
aspect = widgetW / canvasW;
widgetW = widgetW / aspect;
widgetH = widgetH / aspect;
}
// width less than height
} else if (canvasW < canvasH) {
widgetW = canvasW;
widgetH = widgetW / 1.25;
// if height don't fit, rescale both
if(widgetH > canvasH) {
aspect = widgetH / canvasH;
widgetH = widgetH / aspect;
widgetW = widgetH / aspect;
}
// equal
} else {
widgetW = canvasW;
widgetH = widgetW * 0.75;
}
// delta
dx = (canvasW - widgetW)/2;
dy = (canvasH - widgetH)/2;
// title
titleFontSize = ((widgetH / 8) > obj.config.titleMinFontSize) ? (widgetH / 10) : obj.config.titleMinFontSize;
titleX = dx + widgetW / 2;
titleY = dy + widgetH / 6.4;
// value
valueFontSize = ((widgetH / 6.5) > obj.config.valueMinFontSize) ? (widgetH / 6.5) : obj.config.valueMinFontSize;
valueX = dx + widgetW / 2;
valueY = dy + widgetH / 1.275;
// label
labelFontSize = ((widgetH / 16) > obj.config.labelMinFontSize) ? (widgetH / 16) : obj.config.labelMinFontSize;
labelX = dx + widgetW / 2;
labelY = valueY + valueFontSize / 2 + 5;
// min
minFontSize = ((widgetH / 16) > obj.config.minLabelMinFontSize) ? (widgetH / 16) : obj.config.minLabelMinFontSize;
minX = dx + (widgetW / 10) + (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2 ;
minY = labelY;
// max
maxFontSize = ((widgetH / 16) > obj.config.maxLabelMinFontSize) ? (widgetH / 16) : obj.config.maxLabelMinFontSize;
maxX = dx + widgetW - (widgetW / 10) - (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2 ;
maxY = labelY;
}
// parameters
obj.params = {
canvasW : canvasW,
canvasH : canvasH,
widgetW : widgetW,
widgetH : widgetH,
dx : dx,
dy : dy,
titleFontSize : titleFontSize,
titleX : titleX,
titleY : titleY,
valueFontSize : valueFontSize,
valueX : valueX,
valueY : valueY,
labelFontSize : labelFontSize,
labelX : labelX,
labelY : labelY,
minFontSize : minFontSize,
minX : minX,
minY : minY,
maxFontSize : maxFontSize,
maxX : maxX,
maxY : maxY
};
// var clear
canvasW, canvasH, widgetW, widgetH, aspect, dx, dy, titleFontSize, titleX, titleY, valueFontSize, valueX, valueY, labelFontSize, labelX, labelY, minFontSize, minX, minY, maxFontSize, maxX, maxY = null;
// pki - custom attribute for generating gauge paths
obj.canvas.customAttributes.pki = function (value, min, max, w, h, dx, dy, gws, donut) {
var alpha, Ro, Ri, Cx, Cy, Xo, Yo, Xi, Yi, path;
if (donut) {
alpha = (1 - 2 * (value - min) / (max - min)) * Math.PI;
Ro = w / 2 - w / 7;
Ri = Ro - w / 6.666666666666667 * gws;
Cx = w / 2 + dx;
Cy = h / 1.95 + dy;
Xo = w / 2 + dx + Ro * Math.cos(alpha);
Yo = h - (h - Cy) - Ro * Math.sin(alpha);
Xi = w / 2 + dx + Ri * Math.cos(alpha);
Yi = h - (h - Cy) - Ri * Math.sin(alpha);
path = "M" + (Cx - Ri) + "," + Cy + " ";
path += "L" + (Cx - Ro) + "," + Cy + " ";
if (value > ((max - min) / 2)) {
path += "A" + Ro + "," + Ro + " 0 0 1 " + (Cx + Ro) + "," + Cy + " ";
}
path += "A" + Ro + "," + Ro + " 0 0 1 " + Xo + "," + Yo + " ";
path += "L" + Xi + "," + Yi + " ";
if (value > ((max - min) / 2)) {
path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx + Ri) + "," + Cy + " ";
}
path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx - Ri) + "," + Cy + " ";
path += "Z ";
return { path: path };
} else {
alpha = (1 - (value - min) / (max - min)) * Math.PI;
Ro = w / 2 - w / 10;
Ri = Ro - w / 6.666666666666667 * gws;
Cx = w / 2 + dx;
Cy = h / 1.25 + dy;
Xo = w / 2 + dx + Ro * Math.cos(alpha);
Yo = h - (h - Cy) - Ro * Math.sin(alpha);
Xi = w / 2 + dx + Ri * Math.cos(alpha);
Yi = h - (h - Cy) - Ri * Math.sin(alpha);
path = "M" + (Cx - Ri) + "," + Cy + " ";
path += "L" + (Cx - Ro) + "," + Cy + " ";
path += "A" + Ro + "," + Ro + " 0 0 1 " + Xo + "," + Yo + " ";
path += "L" + Xi + "," + Yi + " ";
path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx - Ri) + "," + Cy + " ";
path += "Z ";
return { path: path };
}
// var clear
alpha, Ro, Ri, Cx, Cy, Xo, Yo, Xi, Yi, path = null;
};
// gauge
obj.gauge = obj.canvas.path().attr({
"stroke": "none",
"fill": obj.config.gaugeColor,
pki: [
obj.config.max,
obj.config.min,
obj.config.max,
obj.params.widgetW,
obj.params.widgetH,
obj.params.dx,
obj.params.dy,
obj.config.gaugeWidthScale,
obj.config.donut
]
});
// level
obj.level = obj.canvas.path().attr({
"stroke": "none",
"fill": getColor(obj.config.value, (obj.config.value - obj.config.min) / (obj.config.max - obj.config.min), obj.config.levelColors, obj.config.noGradient, obj.config.customSectors),
pki: [
obj.config.min,
obj.config.min,
obj.config.max,
obj.params.widgetW,
obj.params.widgetH,
obj.params.dx,
obj.params.dy,
obj.config.gaugeWidthScale,
obj.config.donut
]
});
if(obj.config.donut) {
obj.level.transform("r" + obj.config.donutStartAngle + ", " + (obj.params.widgetW/2 + obj.params.dx) + ", " + (obj.params.widgetH/1.95 + obj.params.dy));
}
// title
obj.txtTitle = obj.canvas.text(obj.params.titleX, obj.params.titleY, obj.config.title);
obj.txtTitle.attr({
"font-size":obj.params.titleFontSize,
"font-weight":"bold",
"font-family":"Arial",
"fill":obj.config.titleFontColor,
"fill-opacity":"1"
});
setDy(obj.txtTitle, obj.params.titleFontSize, obj.params.titleY);
// value
obj.txtValue = obj.canvas.text(obj.params.valueX, obj.params.valueY, 0);
obj.txtValue.attr({
"font-size":obj.params.valueFontSize,
"font-weight":"bold",
"font-family":"Arial",
"fill":obj.config.valueFontColor,
"fill-opacity":"0"
});
setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY);
// label
obj.txtLabel = obj.canvas.text(obj.params.labelX, obj.params.labelY, obj.config.label);
obj.txtLabel.attr({
"font-size":obj.params.labelFontSize,
"font-weight":"normal",
"font-family":"Arial",
"fill":obj.config.labelFontColor,
"fill-opacity":"0"
});
setDy(obj.txtLabel, obj.params.labelFontSize, obj.params.labelY);
// min
obj.txtMinimum = obj.config.min;
if( obj.config.humanFriendly ) {
obj.txtMinimum = humanFriendlyNumber( obj.config.min, obj.config.humanFriendlyDecimal );
} else if ( obj.config.formatNumber ) {
obj.txtMinimum = formatNumber( obj.config.min );
}
obj.txtMin = obj.canvas.text(obj.params.minX, obj.params.minY, obj.txtMinimum);
obj.txtMin.attr({
"font-size":obj.params.minFontSize,
"font-weight":"normal",
"font-family":"Arial",
"fill":obj.config.labelFontColor,
"fill-opacity": (obj.config.hideMinMax || obj.config.donut)? "0" : "1"
});
setDy(obj.txtMin, obj.params.minFontSize, obj.params.minY);
// max
obj.txtMaximum = obj.config.max;
if( obj.config.formatNumber ) {
obj.txtMaximum = formatNumber( obj.txtMaximum );
} else if( obj.config.humanFriendly ) {
obj.txtMaximum = humanFriendlyNumber( obj.config.max, obj.config.humanFriendlyDecimal );
}
obj.txtMax = obj.canvas.text(obj.params.maxX, obj.params.maxY, obj.txtMaximum);
obj.txtMax.attr({
"font-size":obj.params.maxFontSize,
"font-weight":"normal",
"font-family":"Arial",
"fill":obj.config.labelFontColor,
"fill-opacity": (obj.config.hideMinMax || obj.config.donut)? "0" : "1"
});
setDy(obj.txtMax, obj.params.maxFontSize, obj.params.maxY);
var defs = obj.canvas.canvas.childNodes[1];
var svg = "http://www.w3.org/2000/svg";
if (ie !== 'undefined' && ie < 9 ) {
// VML mode - no SVG & SVG filter support
}
else if (ie !== 'undefined') {
onCreateElementNsReady(function() {
obj.generateShadow(svg, defs);
});
} else {
obj.generateShadow(svg, defs);
}
// var clear
defs, svg = null;
// set value to display
if(obj.config.textRenderer) {
obj.originalValue = obj.config.textRenderer(obj.originalValue);
} else if(obj.config.humanFriendly) {
obj.originalValue = humanFriendlyNumber( obj.originalValue, obj.config.humanFriendlyDecimal ) + obj.config.symbol;
} else if(obj.config.formatNumber) {
obj.originalValue = formatNumber(obj.originalValue) + obj.config.symbol;
} else {
obj.originalValue = (obj.originalValue * 1).toFixed(obj.config.decimals) + obj.config.symbol;
}
if(obj.config.counter === true) {
//on each animation frame
eve.on("raphael.anim.frame." + (obj.level.id), function() {
var currentValue = obj.level.attr("pki");
if(obj.config.textRenderer) {
obj.txtValue.attr("text", obj.config.textRenderer(Math.floor(currentValue[0])));
} else if(obj.config.humanFriendly) {
obj.txtValue.attr("text", humanFriendlyNumber( Math.floor(currentValue[0]), obj.config.humanFriendlyDecimal ) + obj.config.symbol);
} else if(obj.config.formatNumber) {
obj.txtValue.attr("text", formatNumber(Math.floor(currentValue[0])) + obj.config.symbol);
} else {
obj.txtValue.attr("text", (currentValue[0] * 1).toFixed(obj.config.decimals) + obj.config.symbol);
}
setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY);
currentValue = null;
});
//on animation end
eve.on("raphael.anim.finish." + (obj.level.id), function() {
obj.txtValue.attr({"text" : obj.originalValue});
setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY);
});
} else {
//on animation start
eve.on("raphael.anim.start." + (obj.level.id), function() {
obj.txtValue.attr({"text" : obj.originalValue});
setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY);
});
}
// animate gauge level, value & label
obj.level.animate({
pki: [
obj.config.value,
obj.config.min,
obj.config.max,
obj.params.widgetW,
obj.params.widgetH,
obj.params.dx,
obj.params.dy,
obj.config.gaugeWidthScale,
obj.config.donut
]
}, obj.config.startAnimationTime, obj.config.startAnimationType);
obj.txtValue.animate({"fill-opacity":(obj.config.hideValue)?"0":"1"}, obj.config.startAnimationTime, obj.config.startAnimationType);
obj.txtLabel.animate({"fill-opacity":"1"}, obj.config.startAnimationTime, obj.config.startAnimationType);
};
/** Refresh gauge level */
$Gauge.prototype.refresh = function(val, max) {
var obj = this;
var displayVal, color, max = max || null;
// set new max
if(max !== null) {
obj.config.max = max;
obj.txtMaximum = obj.config.max;
if( obj.config.humanFriendly ) {
obj.txtMaximum = humanFriendlyNumber( obj.config.max, obj.config.humanFriendlyDecimal );
} else if( obj.config.formatNumber ) {
obj.txtMaximum = formatNumber( obj.config.max );
}
obj.txtMax.attr({"text" : obj.txtMaximum});
setDy(obj.txtMax, obj.params.maxFontSize, obj.params.maxY);
}
// overflow values
displayVal = val;
if ((val * 1) > (obj.config.max * 1)) {val = (obj.config.max * 1);}
if ((val * 1) < (obj.config.min * 1)) {val = (obj.config.min * 1);}
color = getColor(val, (val - obj.config.min) / (obj.config.max - obj.config.min), obj.config.levelColors, obj.config.noGradient, obj.config.customSectors);
if(obj.config.textRenderer) {
displayVal = obj.config.textRenderer(displayVal);
} else if( obj.config.humanFriendly ) {
displayVal = humanFriendlyNumber( displayVal, obj.config.humanFriendlyDecimal ) + obj.config.symbol;
} else if( obj.config.formatNumber ) {
displayVal = formatNumber((displayVal * 1).toFixed(obj.config.decimals)) + obj.config.symbol;
} else {
displayVal = (displayVal * 1).toFixed(obj.config.decimals) + obj.config.symbol;
}
obj.originalValue = displayVal;
obj.config.value = val * 1;
if(!obj.config.counter) {
obj.txtValue.attr({"text":displayVal});
setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY);
}
obj.level.animate({
pki: [
obj.config.value,
obj.config.min,
obj.config.max,
obj.params.widgetW,
obj.params.widgetH,
obj.params.dx,
obj.params.dy,
obj.config.gaugeWidthScale,
obj.config.donut
],
"fill":color
}, obj.config.refreshAnimationTime, obj.config.refreshAnimationType);
// var clear
obj, displayVal, color, max = null;
};
/** Generate shadow */
$Gauge.prototype.generateShadow = function(svg, defs) {
var obj = this;
var sid = "inner-shadow-" + obj.config.dom;
var gaussFilter, feOffset, feGaussianBlur, feComposite1, feFlood, feComposite2, feComposite3;
// FILTER
gaussFilter = document.createElementNS(svg,"filter");
gaussFilter.setAttribute("id", sid);
defs.appendChild(gaussFilter);
// offset
feOffset = document.createElementNS(svg,"feOffset");
feOffset.setAttribute("dx", 0);
feOffset.setAttribute("dy", obj.config.shadowVerticalOffset);
gaussFilter.appendChild(feOffset);
// blur
feGaussianBlur = document.createElementNS(svg,"feGaussianBlur");
feGaussianBlur.setAttribute("result","offset-blur");
feGaussianBlur.setAttribute("stdDeviation", obj.config.shadowSize);
gaussFilter.appendChild(feGaussianBlur);
// composite 1
feComposite1 = document.createElementNS(svg,"feComposite");
feComposite1.setAttribute("operator","out");
feComposite1.setAttribute("in", "SourceGraphic");
feComposite1.setAttribute("in2","offset-blur");
feComposite1.setAttribute("result","inverse");
gaussFilter.appendChild(feComposite1);
// flood
feFlood = document.createElementNS(svg,"feFlood");
feFlood.setAttribute("flood-color","black");
feFlood.setAttribute("flood-opacity", obj.config.shadowOpacity);
feFlood.setAttribute("result","color");
gaussFilter.appendChild(feFlood);
// composite 2
feComposite2 = document.createElementNS(svg,"feComposite");
feComposite2.setAttribute("operator","in");
feComposite2.setAttribute("in", "color");
feComposite2.setAttribute("in2","inverse");
feComposite2.setAttribute("result","shadow");
gaussFilter.appendChild(feComposite2);
// composite 3
feComposite3 = document.createElementNS(svg,"feComposite");
feComposite3.setAttribute("operator","over");
feComposite3.setAttribute("in", "shadow");
feComposite3.setAttribute("in2","SourceGraphic");
gaussFilter.appendChild(feComposite3);
// set shadow
if (!obj.config.hideInnerShadow) {
obj.canvas.canvas.childNodes[2].setAttribute("filter", "url(#"+ sid +")");
obj.canvas.canvas.childNodes[3].setAttribute("filter", "url(#"+ sid +")");
}
// var clear
gaussFilter, feOffset, feGaussianBlur, feComposite1, feFlood, feComposite2, feComposite3 = null;
};
//
// tiny helper function to lookup value of a key from two hash tables
// if none found, return defaultvalue
//
// key: string
// tablea: object
// tableb: DOMStringMap|object
// defval: string|integer|float|null
// datatype: return datatype
// delimiter: delimiter to be used in conjunction with datatype formatting
//
function kvLookup(key, tablea, tableb, defval, datatype, delimiter) {
var val = defval;
var canConvert = false;
if (!(key === null || key === undefined)) {
if (tableb !== null && tableb !== undefined && typeof tableb === "object" && key in tableb) {
val = tableb[key];
canConvert = true;
} else if (tablea !== null && tablea !== undefined && typeof tablea === "object" && key in tablea) {
val = tablea[key];
canConvert = true;
} else {
val = defval;
}
if (canConvert === true) {
if (datatype !== null && datatype !== undefined) {
switch(datatype) {
case 'int':
val = parseInt(val, 10);
break;
case 'float':
val = parseFloat(val);
break;
default:
break;
}
}
}
}
return val;
};
/** Get color for value */
function getColor(val, pct, col, noGradient, custSec) {
var no, inc, colors, percentage, rval, gval, bval, lower, upper, range, rangePct, pctLower, pctUpper, color;
var noGradient = noGradient || custSec.length > 0;
if(custSec.length > 0) {
for(var i = 0; i < custSec.length; i++) {
if(val > custSec[i].lo && val <= custSec[i].hi) {
return custSec[i].color;
}
}
}
no = col.length;
if (no === 1) return col[0];
inc = (noGradient) ? (1 / no) : (1 / (no - 1));
colors = [];
for (i = 0; i < col.length; i++) {
percentage = (noGradient) ? (inc * (i + 1)) : (inc * i);
rval = parseInt((cutHex(col[i])).substring(0,2),16);
gval = parseInt((cutHex(col[i])).substring(2,4),16);
bval = parseInt((cutHex(col[i])).substring(4,6),16);
colors[i] = { pct: percentage, color: { r: rval, g: gval, b: bval } };
}
if(pct === 0) {
return 'rgb(' + [colors[0].color.r, colors[0].color.g, colors[0].color.b].join(',') + ')';
}
for (var j = 0; j < colors.length; j++) {
if (pct <= colors[j].pct) {
if (noGradient) {
return 'rgb(' + [colors[j].color.r, colors[j].color.g, colors[j].color.b].join(',') + ')';
} else {
lower = colors[j - 1];
upper = colors[j];
range = upper.pct - lower.pct;
rangePct = (pct - lower.pct) / range;
pctLower = 1 - rangePct;
pctUpper = rangePct;
color = {
r: Math.floor(lower.color.r * pctLower + upper.color.r * pctUpper),
g: Math.floor(lower.color.g * pctLower + upper.color.g * pctUpper),
b: Math.floor(lower.color.b * pctLower + upper.color.b * pctUpper)
};
return 'rgb(' + [color.r, color.g, color.b].join(',') + ')';
}
}
}
}
/** Fix Raphael display:none tspan dy attribute bug */
function setDy(elem, fontSize, txtYpos) {
if ((!ie || ie > 9) && elem.node.firstChild.attributes.dy) {
elem.node.firstChild.attributes.dy.value = 0;
}
}
/** Random integer */
function getRandomInt (min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
/** Cut hex */
function cutHex(str) {
return (str.charAt(0)=="#") ? str.substring(1,7):str;
}
/** Human friendly number suffix - From: http://stackoverflow.com/questions/2692323/code-golf-friendly-number-abbreviator */
function humanFriendlyNumber( n, d ) {
var p, d2, i, s;
p = Math.pow;
d2 = p(10, d);
i = 7;
while( i ) {
s = p(10,i--*3);
if( s <= n ) {
n = Math.round(n*d2/s)/d2+"KMGTPE"[i];
}
}
return n;
}
/** Format numbers with commas - From: http://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript */
function formatNumber(x) {
var parts = x.toString().split(".");
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return parts.join(".");
}
/** Get style */
function getStyle(oElm, strCssRule){
var strValue = "";
if(document.defaultView && document.defaultView.getComputedStyle){
strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
}
else if(oElm.currentStyle){
strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
return p1.toUpperCase();
});
strValue = oElm.currentStyle[strCssRule];
}
return strValue;
}
/** Create Element NS Ready */
function onCreateElementNsReady(func) {
if (document.createElementNS !== undefined) {
func();
} else {
setTimeout(function() { onCreateElementNsReady(func); }, 100);
}
}
var ie = (function(){
var undef,
v = 3,
div = document.createElement('div'),
all = div.getElementsByTagName('i');
while (
div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
all[0]
);
return v > 4 ? v : undef;
}());
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block;}audio,canvas,video{display:inline-block;}audio:not([controls]){display:none;height:0;}[hidden]{display:none;}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;}body{margin:0;}a:focus{outline:thin dotted;}a:active,a:hover{outline:0;}h1{font-size:2em;margin:0.67em 0;}abbr[title]{border-bottom:1px dotted;}b,strong{font-weight:bold;}dfn{font-style:italic;}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0;}mark{background:#ff0;color:#000;}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em;}pre{white-space:pre-wrap;}q{quotes:"\201C" "\201D" "\2018" "\2019";}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}img{border:0;}svg:not(:root){overflow:hidden;}figure{margin:0;}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em;}legend{border:0;padding:0;}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0;}button,input{line-height:normal;}button,select{text-transform:none;}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}button[disabled],html input[disabled]{cursor:default;}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}textarea{overflow:auto;vertical-align:top;}table{border-collapse:collapse;border-spacing:0;}
\ No newline at end of file
/** @gridService
* Created by lbc on 2017/1/19 version:1.0 基于Angular原生用法封装
* Modified By 潘正龙 2018-11-22 15:20 version2.0,基于原Angular GridService进行二次包装,变成通用组件
*/
/**全局GridService**/
var gridService = {
/**编辑字体颜色 @param params & @returns {number}**/
inputColor:function(params) {
return params.data.lineEditor && params.colDef.editor;
},
/**是否可以编辑 @param params & @returns {*}**/
editableFn:function(params) {
return params.node.data.lineEditor && params.column.colDef.editor;
},
/**千分位数值转换**/
formatCurrency:function(params) {
if(params.value){
return $filter('currency')(params.value,'¥');
}else{
return '';
}
},
/**百分比格式化**/
formatRate:function(params) {
if(params.value){
return params.value+'%';
}else{
return '';
}
},
/**单元格货币渲染 @param params & @returns {*}**/
currencyRenderer:function(params) {
if (params.value === null || params.value === undefined) {
if (params.data.lineEditor && params.colDef.editor) {
return '____'
}
return null;
} else if (isNaN(params.value)) {
return 'NaN';
} else {
if (params.node.group && params.column.aggFunc === 'count') {
return params.value;
} else {
var t = "";
if (params.data.lineEditor && params.colDef.editor) {
t = '____';
}
if (params.data.type && params.data.type.indexOf('_rate') > 0) {
if (isNaN(params.value) || params.value === '') {
return '';
}
return parseInt(params.value) + '%';
}
if (params.value == "") {
if (!params.data.lineEditor) {
return '¥0';
} else {
if (!params.colDef.editor) {
return '';
}
return '____';
}
}
var filedText = params.colDef.field+"_gridType";
if(params.data[filedText]!=undefined&&params.data[filedText]=="update"&&params.colDef.field.indexOf("_estimate")>0){
var old='¥' + new Number(params.data[params.colDef.field+"_old"]).toFixed(2);
if(old!="¥0.00"&&old!='¥NaN'){
return' <div style="margin-top:-15px"><p style="font-size: 12px!important; color:#979797; text-align:right;text-decoration: line-through' +
'">'+old+'</p><p style="margin-top:-10px;text-align: right">'+ '¥' + new Number(params.value).toFixed(2) +'</p></div>';
}else{
return $filter("currency")(params.value,"¥");
}
}else{
return $filter("currency")(params.value,"¥");
}
}
}
},
/**一行统计 @param params**/
totalLine:function(params) {
var obj = params.data;
var total = 0;
var last = 0;
for (var p in obj) {
if (p.indexOf("_estimate") > 5) {
total += Number(obj[p]);
last = Number(obj[p]);
}
}
if (params.colDef.field == 'total' && obj.type.indexOf('_ytd') > 0) {
total = last;
}
if (params.node.group && params.column.aggFunc === 'count') {
return total;
} else {
if (params.data.type && params.data.type.indexOf('_rate') > 0) {
if (isNaN(total)) {
return '';
}
if (params.colDef.field == 'total' && obj.type == 'monthly_profit_rate') {
var rows = params.$scope.$parent.$parent.rows;
var monthly_profit = 0;
var total_earning = 0;
angular.forEach(rows, function (data) {
if (data.type == 'monthly_profit') {
monthly_profit = data;
} else if (data.type == 'total_earning') {
total_earning = data;
}
});
var t = 0;
var m = 0;
for (var p in total_earning) {
if (p.indexOf("_estimate") > 5) {
t += Number(total_earning[p]);
m += Number(monthly_profit[p]);
}
}
total = m / t * 100;
if (isNaN(total)) {
return '';
}
}
return parseInt(total) + '%';
}
if (isNaN(total)) {
return '¥0';
}
return '¥' + Math.floor(total).toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
}
},
/**货币样式 @param params & @returns {*}**/
currencyCssFunc:function(params) {
var obj = {};
if (params.value !== null && params.value !== undefined && params.value < 0) {
obj = {"color": "red", "text-align": "right", "font-weight": "bold"};
} else {
obj = {"text-align": "right"};
}
if (params.data.type != undefined && params.data.type.indexOf('total_') > -1) {
obj.background = "rgba(255, 253, 185,0.7)";
}
if(params.data.operation=="update"||params.data.operation=="add"){
obj.background = "#b7f29d";
}
return obj;
},
/**设置全局色值**/
totalCss:function(params) {
var obj = {};
if(params.data.type != undefined && params.data.type.indexOf('total_') > -1) {
obj.background = "rgba(255, 253, 185,0.7)";
}
if(params.data.operation=="update"||params.data.operation=="add"){
obj.background = "#b7f29d";
}
return obj;
},
/**
* grid统计
* @param gridOptions
* @param params
* @param rows
* @param totalNumber
*/
gridTotal:function(gridOptions, params, rows, totalNumber) {
if (rows == undefined) {
rows = [];
}
var page = params.endRow / gridOptions.paginationPageSize;
if(page === 1 && gridOptions.autoWidth !== undefined && !gridOptions.autoWidth){
setTimeout(function () {
$rootScope.loadingbar = false;
params.successCallback(rows, totalNumber);
},500);
}else{
$rootScope.loadingbar = false;
params.successCallback(rows, totalNumber);
}
gridOptions.params = params;
gridOptions.totalNumber = totalNumber;
if (page === 1) {
if(gridOptions.setTempListData){
gridOptions.setTempListData(rows);
}
gridOptions.loadedCount = rows.length;
if(gridOptions.loadedCount === 0){
if(gridOptions.showNoRowsOverlay){
gridOptions.showNoRowsOverlay();
}
}else{
if(gridOptions.hideOverlay){
gridOptions.hideOverlay();
}
}
if (gridOptions.selectedRow) {
gridOptions.selectedRow();
}
if (gridOptions.totalPosition) {
if (gridOptions.remoteTotal) {
gridOptions.remoteTotal(gridOptions, params, totalNumber);
} else {
parseTotal(gridOptions, rows);
}
}
}else{
if (gridOptions.totalPosition && totalNumber > 0) {
if (gridOptions.remoteTotal) {
if(page==1){
gridOptions.remoteTotal(gridOptions, params, totalNumber);
}
} else {
parseTotal(gridOptions, rows);
}
}
gridOptions.loadedCount = (page - 1) * gridOptions.paginationPageSize + rows.length
}
},
/**设置行数据并算出总和**/
setRowDataAndTotal:function(gridOptions,rows) {
gridOptions.setRowData(rows);
parseTotal(gridOptions,rows);
},
/**显示名称**/
displayName:function(list,value) {
var text = value;
for(var i=0;i<list.length;i++){
var item=list[i];
if(item.name==value){
text = item.displayName;
break;
}
}
return text;
},
/**判断是不是文本**/
ifText:function(param) {
if (param.value!=undefined) {
var text = '';
if(param.value){
text = '是';
}else{
text = '否';
}
return text;
}
return '';
},
/**判断是不是样式**/
ifStyle:function(param) {
if (param.value!=undefined) {
if (param.value) {
return 'bg-success';
}else{
return 'bg-danger';
}
}
return '';
},
/**格式化总和**/
parseTotal:function(gridOptions,rows) {
var arr = [];
angular.forEach(gridOptions.columnDefs,function (item) {
if(item.agg){
arr.push({name:item.field,agg:item.agg});
}
});
var obj = {
__grid_total:true
};
obj[gridOptions.columnDefs[0].field] = '合计:';
angular.forEach(arr,function (item) {
var total=0;
angular.forEach(rows,function (data) {
if(data[item.name] === undefined){
data[item.name] = 0;
}
total+= parseFloat(data[item.name]);
});
obj[item.name] = total;
});
if(gridOptions.totalPosition === 'top'){
gridOptions.setPinnedTopRowData([obj]);
}else{
gridOptions.setPinnedBottomRowData([obj]);
}
},
/**
* 远程统计
* @param gridOptions
* @param params
* @param totalNumber
* @param totalData 统计数据
*/
remoteTotalFn:function(gridOptions,params,totalNumber,totalData) {
var page = params.endRow / gridOptions.paginationPageSize;
if(page==1){
var arr=[];
angular.forEach(gridOptions.columnDefs,function (item) {
if(item.agg){
arr.push({name:item.field,agg:item.agg});
}
});
var obj = {
__grid_total:true
};
obj[gridOptions.columnDefs[0].field] = '合计:';
angular.forEach(arr,function (item,index) {
obj[item.name] = totalData[item.name];
});
if(gridOptions.totalPosition === 'top'){
gridOptions.setPinnedTopRowData([obj]);
}else{
gridOptions.setPinnedBottomRowData([obj]);
}
}
},
/**日期数据初始化**/
dateGridInit:function($scope) {
/**取得当前日期一周内的某一天**/
function getWeek(i) {
var now = new Date();
//day of week
var n = now.getDay();
if(n==0){
n=7;
}
var start = new Date();
start.setDate(now.getDate() - n + i+1); /**取得一周内的第一天、第二天、第三天...**/
return start;
}
/**取得当前日期一周内的七天**/
function getWeeks() {
var days = [];
for(var i=1;i<=7;i++) {
days[i-1] = getWeek(i-1);
}
return days;
}
/**取得下一周的日期数(共七天)**/
function getNextWeekDates(ndt) {
var days = [];
for(var i=1;i<=7;i++) {
var dt = new Date(ndt);
days[i-1] = getNextWeek(dt,i);
}
return days;
}
/**指定日期的下一周(后七天)**/
function getNextWeek(dt,i) {
var today = dt;
today.setDate(today.getDate()+i);
return today;
}
/**取得上一周的日期数(共七天)**/
function getPreviousWeekDates(ndt) {
var days = [];
for(var i=-7; i<=-1; i++) {
var dt = new Date(ndt);
days[7+i] = getPreviousWeek(dt,i);
}
return days;
}
/**指定日期的上一周(前七天)**/
function getPreviousWeek(dt,i) {
var today = dt;
today.setDate(today.getDate()+i);
return today;
}
/**根据数值获取weekDay**/
function getWeekDay(date) {
var days = [];
var fullYear = date.getFullYear();
var month = date.getMonth();
var day = date.getDay();
var date0=date.getDate();
var lastDayOfWeek= new Date(fullYear, month, date0-day);
return getNextWeekDates(lastDayOfWeek);
}
/**取指定日期所在月的所有天数 @param date**/
function getMonthDay(date) {
var daysOfMonth = [];
var fullYear = date.getFullYear();
var month = date.getMonth() + 1;
var lastDayOfMonth = new Date(fullYear, month, 0).getDate();
for (var i = 1; i <= lastDayOfMonth; i++) {
daysOfMonth.push(dateParse(fullYear + '-' + month + '-' + i));
}
return daysOfMonth;
}
/**获取上个月所有日期 @param date**/
function getPreMonthDay(date){
var fullYear = date.getFullYear();
var month = date.getMonth() - 1;
return getMonthDay(new Date(fullYear,month,1))
}
/**获取下个月所有日期 @param date**/
function getNextMonthDay(date){
var fullYear = date.getFullYear();
var month = date.getMonth() + 1;
return getMonthDay(new Date(fullYear,month,1))
}
/**获取日历map**/
function weekdayMapping(i) {
var list=["<span style='color: #ee6b36;'>"+$filter('translate')("timeManagement.SUNDAY")+"</span>",$filter('translate')("timeManagement.MONDAY"),$filter('translate')("timeManagement.TUESDAY"),$filter('translate')("timeManagement.WEDNESDAY"),$filter('translate')("timeManagement.THURSDAY"),$filter('translate')("timeManagement.FRIDAY"),"<span style='color: #ee6b36;'>"+$filter('translate')("timeManagement.SATURDAY")+"</span>"];
return list[i];
}
/**根据年份获取其他年份**/
function getYear(year) {
$scope.year=year;
var arr=[];
for(var i=1;i<=12;i++){
var str=year+"-"+systemService.fillZero(i,2)+"-01";
arr.push(dateParse(str));
}
return arr;
}
/**获取上一年**/
function getPreYear(){
return getYear($scope.year-1);
}
/**获取下一年**/
function getNextYear(){
return getYear($scope.year+1);
}
/**月份**/
function viewMonth(month) {
switch (month){
case 0:
return "一月";
case 1:
return "二月";
case 2:
return "三月";
case 3:
return "四月";
case 4:
return "五月";
case 5:
return "六月";
case 6:
return "七月";
case 7:
return "八月";
case 8:
return "九月";
case 9:
return "十月";
case 10:
return "十一月";
case 11:
return "十二月";
}
}
/**日期类型表头样式 @param date & @return {string}**/
$scope.getGridDateHeader = function(date) {
var format = 'yyyy-MM-dd';
var view = '';
if($scope.searchObj.type === 'YEAR'){
format = 'yyyy-MM';
view = viewMonth(date.getMonth());
}else{
view = weekdayMapping(date.getDay());
}
return '<span style="width:100%;display: inline-block;text-align: right;padding-right: 10px;">'+date.format(format)+'<br/>'+view+'</span>'
};
/**改变类型**/
$scope.changeType = function () {
$scope.getCurrent();
};
/**获取当前**/
$scope.getCurrent = function () {
var dates;
if($scope.searchObj.type === 'WEEK'){
dates = getWeeks();
}else if($scope.searchObj.type == 'MONTH'){
dates = getMonthDay(new Date());
}else {
dates = getYear(new Date().getFullYear());
}
$scope.genHeader(dates);
};
/**获取上一个**/
$scope.getPre = function () {
var dates;
if($scope.searchObj.type === 'WEEK'){
dates = dates = getPreviousWeekDates($scope.firstDay);
}else if($scope.searchObj.type=='MONTH'){
dates = dates = getPreMonthDay($scope.firstDay);
}else {
dates = getPreYear();
}
$scope.genHeader(dates);
};
/**获取下一个**/
$scope.getNext = function () {
var dates;
if($scope.searchObj.type === 'WEEK'){
dates = dates = getNextWeekDates($scope.lastDay);
}else if($scope.searchObj.type === 'MONTH'){
dates = dates = getNextMonthDay($scope.lastDay);
}else {
dates = getNextYear();
}
$scope.genHeader(dates);
};
}
};
/**全局ObjectEditor**/
function ObjectEditor() {};
ObjectEditor.prototype.init = function (params) {
this.eInput = document.createElement('input');
this.eInput.className = 'ag-cell-edit-input';
this.eInput.value = params.value;
this.eInput.setAttribute('ng-model', 'data.' + params.column.colId);
this.focusAfterAttached = true;
};
ObjectEditor.prototype.afterGuiAttached = function () {
if (!this.focusAfterAttached) {
return;
}
var eInput = this.getGui();
eInput.focus();
if (this.highlightAllOnFocus) {
eInput.select();
}
else {
var length = eInput.value ? eInput.value.length : 0;
if (length > 0) {
eInput.setSelectionRange(length, length);
}
}
};
// gets called when tabbing trough cells and in full row edit mode
ObjectEditor.prototype.focusIn = function () {
var eInput = this.getGui();
eInput.focus();
eInput.select();
};
ObjectEditor.prototype.getValue = function () {
var eInput = this.getGui();
return eInput.value;
};
ObjectEditor.prototype.getGui = function () {
return this.eInput;
};
\ No newline at end of file
/** @gridService
* Created by lbc on 2017/1/19 version:1.0 基于Angular原生用法封装
* Modified By 潘正龙 2018-11-22 15:20 version2.0,基于原Angular GridService进行二次包装,变成通用组件
*/
/**全局GridService**/
var gridService = {
/**编辑字体颜色 @param params & @returns {number}**/
inputColor:function(params) {
return params.data.lineEditor && params.colDef.editor;
},
/**是否可以编辑 @param params & @returns {*}**/
editableFn:function(params) {
return params.node.data.lineEditor && params.column.colDef.editor;
},
/**千分位数值转换**/
formatCurrency:function(params) {
if(params.value){
return $filter('currency')(params.value,'¥');
}else{
return '';
}
},
/**百分比格式化**/
formatRate:function(params) {
if(params.value){
return params.value+'%';
}else{
return '';
}
},
/**单元格货币渲染 @param params & @returns {*}**/
currencyRenderer:function(params) {
if (params.value === null || params.value === undefined) {
if (params.data.lineEditor && params.colDef.editor) {
return '____'
}
return null;
} else if (isNaN(params.value)) {
return 'NaN';
} else {
if (params.node.group && params.column.aggFunc === 'count') {
return params.value;
} else {
var t = "";
if (params.data.lineEditor && params.colDef.editor) {
t = '____';
}
if (params.data.type && params.data.type.indexOf('_rate') > 0) {
if (isNaN(params.value) || params.value === '') {
return '';
}
return parseInt(params.value) + '%';
}
if (params.value == "") {
if (!params.data.lineEditor) {
return '¥0';
} else {
if (!params.colDef.editor) {
return '';
}
return '____';
}
}
var filedText = params.colDef.field+"_gridType";
if(params.data[filedText]!=undefined&&params.data[filedText]=="update"&&params.colDef.field.indexOf("_estimate")>0){
var old='¥' + new Number(params.data[params.colDef.field+"_old"]).toFixed(2);
if(old!="¥0.00"&&old!='¥NaN'){
return' <div style="margin-top:-15px"><p style="font-size: 12px!important; color:#979797; text-align:right;text-decoration: line-through' +
'">'+old+'</p><p style="margin-top:-10px;text-align: right">'+ '¥' + new Number(params.value).toFixed(2) +'</p></div>';
}else{
return $filter("currency")(params.value,"¥");
}
}else{
return $filter("currency")(params.value,"¥");
}
}
}
},
/**一行统计 @param params**/
totalLine:function(params) {
var obj = params.data;
var total = 0;
var last = 0;
for (var p in obj) {
if (p.indexOf("_estimate") > 5) {
total += Number(obj[p]);
last = Number(obj[p]);
}
}
if (params.colDef.field == 'total' && obj.type.indexOf('_ytd') > 0) {
total = last;
}
if (params.node.group && params.column.aggFunc === 'count') {
return total;
} else {
if (params.data.type && params.data.type.indexOf('_rate') > 0) {
if (isNaN(total)) {
return '';
}
if (params.colDef.field == 'total' && obj.type == 'monthly_profit_rate') {
var rows = params.$scope.$parent.$parent.rows;
var monthly_profit = 0;
var total_earning = 0;
angular.forEach(rows, function (data) {
if (data.type == 'monthly_profit') {
monthly_profit = data;
} else if (data.type == 'total_earning') {
total_earning = data;
}
});
var t = 0;
var m = 0;
for (var p in total_earning) {
if (p.indexOf("_estimate") > 5) {
t += Number(total_earning[p]);
m += Number(monthly_profit[p]);
}
}
total = m / t * 100;
if (isNaN(total)) {
return '';
}
}
return parseInt(total) + '%';
}
if (isNaN(total)) {
return '¥0';
}
return '¥' + Math.floor(total).toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
}
},
/**货币样式 @param params & @returns {*}**/
currencyCssFunc:function(params) {
var obj = {};
if (params.value !== null && params.value !== undefined && params.value < 0) {
obj = {"color": "red", "text-align": "right", "font-weight": "bold"};
} else {
obj = {"text-align": "right"};
}
if (params.data.type != undefined && params.data.type.indexOf('total_') > -1) {
obj.background = "rgba(255, 253, 185,0.7)";
}
if(params.data.operation=="update"||params.data.operation=="add"){
obj.background = "#b7f29d";
}
return obj;
},
/**设置全局色值**/
totalCss:function(params) {
var obj = {};
if(params.data.type != undefined && params.data.type.indexOf('total_') > -1) {
obj.background = "rgba(255, 253, 185,0.7)";
}
if(params.data.operation=="update"||params.data.operation=="add"){
obj.background = "#b7f29d";
}
return obj;
},
/**
* grid统计
* @param gridOptions
* @param params
* @param rows
* @param totalNumber
*/
gridTotal:function(gridOptions, params, rows, totalNumber) {
if (rows == undefined) {
rows = [];
}
var page = params.endRow / gridOptions.paginationPageSize;
if(page === 1 && gridOptions.autoWidth !== undefined && !gridOptions.autoWidth){
setTimeout(function () {
$rootScope.loadingbar = false;
params.successCallback(rows, totalNumber);
},500);
}else{
$rootScope.loadingbar = false;
params.successCallback(rows, totalNumber);
}
gridOptions.params = params;
gridOptions.totalNumber = totalNumber;
if (page === 1) {
if(gridOptions.setTempListData){
gridOptions.setTempListData(rows);
}
gridOptions.loadedCount = rows.length;
if(gridOptions.loadedCount === 0){
if(gridOptions.showNoRowsOverlay){
gridOptions.showNoRowsOverlay();
}
}else{
if(gridOptions.hideOverlay){
gridOptions.hideOverlay();
}
}
if (gridOptions.selectedRow) {
gridOptions.selectedRow();
}
if (gridOptions.totalPosition) {
if (gridOptions.remoteTotal) {
gridOptions.remoteTotal(gridOptions, params, totalNumber);
} else {
parseTotal(gridOptions, rows);
}
}
}else{
if (gridOptions.totalPosition && totalNumber > 0) {
if (gridOptions.remoteTotal) {
if(page==1){
gridOptions.remoteTotal(gridOptions, params, totalNumber);
}
} else {
parseTotal(gridOptions, rows);
}
}
gridOptions.loadedCount = (page - 1) * gridOptions.paginationPageSize + rows.length
}
},
/**设置行数据并算出总和**/
setRowDataAndTotal:function(gridOptions,rows) {
gridOptions.setRowData(rows);
parseTotal(gridOptions,rows);
},
/**显示名称**/
displayName:function(list,value) {
var text = value;
for(var i=0;i<list.length;i++){
var item=list[i];
if(item.name==value){
text = item.displayName;
break;
}
}
return text;
},
/**判断是不是文本**/
ifText:function(param) {
if (param.value!=undefined) {
var text = '';
if(param.value){
text = '是';
}else{
text = '否';
}
return text;
}
return '';
},
/**判断是不是样式**/
ifStyle:function(param) {
if (param.value!=undefined) {
if (param.value) {
return 'bg-success';
}else{
return 'bg-danger';
}
}
return '';
},
/**格式化总和**/
parseTotal:function(gridOptions,rows) {
var arr = [];
angular.forEach(gridOptions.columnDefs,function (item) {
if(item.agg){
arr.push({name:item.field,agg:item.agg});
}
});
var obj = {
__grid_total:true
};
if(gridOptions.columnDefs.length>0){
obj[gridOptions.columnDefs[0].field]='合计:';
}
angular.forEach(arr,function (item) {
var total=0;
angular.forEach(rows,function (data) {
if(data[item.name] === undefined){
data[item.name] = 0;
}
total+= parseFloat(data[item.name]);
});
obj[item.name] = total;
});
if(gridOptions.totalPosition === 'top'){
gridOptions.setPinnedTopRowData([obj]);
}else{
gridOptions.setPinnedBottomRowData([obj]);
}
},
/**
* 远程统计
* @param gridOptions
* @param params
* @param totalNumber
* @param totalData 统计数据
*/
remoteTotalFn:function(gridOptions,params,totalNumber,totalData) {
var page = params.endRow / gridOptions.paginationPageSize;
if(page==1){
var arr=[];
angular.forEach(gridOptions.columnDefs,function (item) {
if(item.agg){
arr.push({name:item.field,agg:item.agg});
}
});
var obj = {
__grid_total:true
};
if(gridOptions.columnDefs.length>0){
obj[gridOptions.columnDefs[0].field]='合计:';
}
angular.forEach(arr,function (item,index) {
obj[item.name] = totalData[item.name];
});
if(gridOptions.totalPosition === 'top'){
gridOptions.setPinnedTopRowData([obj]);
}else{
gridOptions.setPinnedBottomRowData([obj]);
}
}
},
/**日期数据初始化**/
dateGridInit:function($scope) {
/**取得当前日期一周内的某一天**/
function getWeek(i) {
var now = new Date();
//day of week
var n = now.getDay();
if(n==0){
n=7;
}
var start = new Date();
start.setDate(now.getDate() - n + i+1); /**取得一周内的第一天、第二天、第三天...**/
return start;
}
/**取得当前日期一周内的七天**/
function getWeeks() {
var days = [];
for(var i=1;i<=7;i++) {
days[i-1] = getWeek(i-1);
}
return days;
}
/**取得下一周的日期数(共七天)**/
function getNextWeekDates(ndt) {
var days = [];
for(var i=1;i<=7;i++) {
var dt = new Date(ndt);
days[i-1] = getNextWeek(dt,i);
}
return days;
}
/**指定日期的下一周(后七天)**/
function getNextWeek(dt,i) {
var today = dt;
today.setDate(today.getDate()+i);
return today;
}
/**取得上一周的日期数(共七天)**/
function getPreviousWeekDates(ndt) {
var days = [];
for(var i=-7; i<=-1; i++) {
var dt = new Date(ndt);
days[7+i] = getPreviousWeek(dt,i);
}
return days;
}
/**指定日期的上一周(前七天)**/
function getPreviousWeek(dt,i) {
var today = dt;
today.setDate(today.getDate()+i);
return today;
}
/**根据数值获取weekDay**/
function getWeekDay(date) {
var days = [];
var fullYear = date.getFullYear();
var month = date.getMonth();
var day = date.getDay();
var date0=date.getDate();
var lastDayOfWeek= new Date(fullYear, month, date0-day);
return getNextWeekDates(lastDayOfWeek);
}
/**取指定日期所在月的所有天数 @param date**/
function getMonthDay(date) {
var daysOfMonth = [];
var fullYear = date.getFullYear();
var month = date.getMonth() + 1;
var lastDayOfMonth = new Date(fullYear, month, 0).getDate();
for (var i = 1; i <= lastDayOfMonth; i++) {
daysOfMonth.push(dateParse(fullYear + '-' + month + '-' + i));
}
return daysOfMonth;
}
/**获取上个月所有日期 @param date**/
function getPreMonthDay(date){
var fullYear = date.getFullYear();
var month = date.getMonth() - 1;
return getMonthDay(new Date(fullYear,month,1))
}
/**获取下个月所有日期 @param date**/
function getNextMonthDay(date){
var fullYear = date.getFullYear();
var month = date.getMonth() + 1;
return getMonthDay(new Date(fullYear,month,1))
}
/**获取日历map**/
function weekdayMapping(i) {
var list=["<span style='color: #ee6b36;'>"+$filter('translate')("timeManagement.SUNDAY")+"</span>",$filter('translate')("timeManagement.MONDAY"),$filter('translate')("timeManagement.TUESDAY"),$filter('translate')("timeManagement.WEDNESDAY"),$filter('translate')("timeManagement.THURSDAY"),$filter('translate')("timeManagement.FRIDAY"),"<span style='color: #ee6b36;'>"+$filter('translate')("timeManagement.SATURDAY")+"</span>"];
return list[i];
}
/**根据年份获取其他年份**/
function getYear(year) {
$scope.year=year;
var arr=[];
for(var i=1;i<=12;i++){
var str=year+"-"+systemService.fillZero(i,2)+"-01";
arr.push(dateParse(str));
}
return arr;
}
/**获取上一年**/
function getPreYear(){
return getYear($scope.year-1);
}
/**获取下一年**/
function getNextYear(){
return getYear($scope.year+1);
}
/**月份**/
function viewMonth(month) {
switch (month){
case 0:
return "一月";
case 1:
return "二月";
case 2:
return "三月";
case 3:
return "四月";
case 4:
return "五月";
case 5:
return "六月";
case 6:
return "七月";
case 7:
return "八月";
case 8:
return "九月";
case 9:
return "十月";
case 10:
return "十一月";
case 11:
return "十二月";
}
}
/**日期类型表头样式 @param date & @return {string}**/
$scope.getGridDateHeader = function(date) {
var format = 'yyyy-MM-dd';
var view = '';
if($scope.searchObj.type === 'YEAR'){
format = 'yyyy-MM';
view = viewMonth(date.getMonth());
}else{
view = weekdayMapping(date.getDay());
}
return '<span style="width:100%;display: inline-block;text-align: right;padding-right: 10px;">'+date.format(format)+'<br/>'+view+'</span>'
};
/**改变类型**/
$scope.changeType = function () {
$scope.getCurrent();
};
/**获取当前**/
$scope.getCurrent = function () {
var dates;
if($scope.searchObj.type === 'WEEK'){
dates = getWeeks();
}else if($scope.searchObj.type == 'MONTH'){
dates = getMonthDay(new Date());
}else {
dates = getYear(new Date().getFullYear());
}
$scope.genHeader(dates);
};
/**获取上一个**/
$scope.getPre = function () {
var dates;
if($scope.searchObj.type === 'WEEK'){
dates = dates = getPreviousWeekDates($scope.firstDay);
}else if($scope.searchObj.type=='MONTH'){
dates = dates = getPreMonthDay($scope.firstDay);
}else {
dates = getPreYear();
}
$scope.genHeader(dates);
};
/**获取下一个**/
$scope.getNext = function () {
var dates;
if($scope.searchObj.type === 'WEEK'){
dates = dates = getNextWeekDates($scope.lastDay);
}else if($scope.searchObj.type === 'MONTH'){
dates = dates = getNextMonthDay($scope.lastDay);
}else {
dates = getNextYear();
}
$scope.genHeader(dates);
};
}
};
/**全局ObjectEditor**/
function ObjectEditor() {};
ObjectEditor.prototype.init = function (params) {
this.eInput = document.createElement('input');
this.eInput.className = 'ag-cell-edit-input';
this.eInput.value = params.value;
this.eInput.setAttribute('ng-model', 'data.' + params.column.colId);
this.focusAfterAttached = true;
};
ObjectEditor.prototype.afterGuiAttached = function () {
if (!this.focusAfterAttached) {
return;
}
var eInput = this.getGui();
eInput.focus();
if (this.highlightAllOnFocus) {
eInput.select();
}
else {
var length = eInput.value ? eInput.value.length : 0;
if (length > 0) {
eInput.setSelectionRange(length, length);
}
}
};
// gets called when tabbing trough cells and in full row edit mode
ObjectEditor.prototype.focusIn = function () {
var eInput = this.getGui();
eInput.focus();
eInput.select();
};
ObjectEditor.prototype.getValue = function () {
var eInput = this.getGui();
return eInput.value;
};
ObjectEditor.prototype.getGui = function () {
return this.eInput;
};
\ No newline at end of file
/*! jQuery v2.1.1 | (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.1",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)>=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"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","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}"+M+"?|("+M+")|.)","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)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(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||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(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 I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===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+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(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 ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&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=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(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 typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),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))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),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===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(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?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.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 fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.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},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.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=fb.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=fb.selectors={cacheLength:50,createPseudo:hb,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]||fb.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]&&fb.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("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.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+" ").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()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(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),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.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:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(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 sb(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 tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(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 vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(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?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(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 vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(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]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.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)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(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+Math.random()}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.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",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<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/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*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ib={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};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></$2>")+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></$2>");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("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^("+Q+")(.*)$","i"),Bb=new RegExp("^([+-])=("+Q+")","i"),Cb={position:"absolute",visibility:"hidden",display:"block"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit","O","Moz","ms"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ib(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pb=/queueHooks$/,Qb=[Vb],Rb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Lb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))
},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)>=0)return!0;return!1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.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(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var ec,fc,gc=/#.*$/,hc=/([?&])_=[^&]*/,ic=/^(.*?):[ \t]*([^\r\n]*)$/gm,jc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,kc=/^(?:GET|HEAD)$/,lc=/^\/\//,mc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,nc={},oc={},pc="*/".concat("*");try{fc=location.href}catch(qc){fc=l.createElement("a"),fc.href="",fc=fc.href}ec=mc.exec(fc.toLowerCase())||[];function rc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function sc(a,b,c,d){var e={},f=a===oc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function tc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function uc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function vc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:fc,type:"GET",isLocal:jc.test(ec[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":pc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?tc(tc(a,n.ajaxSettings),b):tc(n.ajaxSettings,a)},ajaxPrefilter:rc(nc),ajaxTransport:rc(oc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=ic.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||fc)+"").replace(gc,"").replace(lc,ec[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=mc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===ec[1]&&h[2]===ec[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(ec[3]||("http:"===ec[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),sc(nc,k,b,v),2===t)return v;i=k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!kc.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=hc.test(d)?d.replace(hc,"$1_="+cc++):d+(dc.test(d)?"&":"?")+"_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+pc+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=sc(oc,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=uc(k,v,f)),u=vc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var wc=/%20/g,xc=/\[\]$/,yc=/\r?\n/g,zc=/^(?:submit|button|image|reset|file)$/i,Ac=/^(?:input|select|textarea|keygen)/i;function Bc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||xc.test(a)?d(a,e):Bc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Bc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Bc(c,a[c],b,e);return d.join("&").replace(wc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Ac.test(this.nodeName)&&!zc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(yc,"\r\n")}}):{name:b.name,value:c.replace(yc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Cc=0,Dc={},Ec={0:200,1223:204},Fc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Dc)Dc[a]()}),k.cors=!!Fc&&"withCredentials"in Fc,k.ajax=Fc=!!Fc,n.ajaxTransport(function(a){var b;return k.cors||Fc&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Cc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Dc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Ec[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Dc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Gc=[],Hc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Gc.pop()||n.expando+"_"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Hc.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Hc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Hc,"$1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Gc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Ic=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Ic)return Ic.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Jc=a.document.documentElement;function Kc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Kc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Jc;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Jc})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Kc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Lc=a.jQuery,Mc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Mc),b&&a.jQuery===n&&(a.jQuery=Lc),n},typeof b===U&&(a.jQuery=a.$=n),n});
//# sourceMappingURL=jquery.min.map
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
/** JS Document
* Created By 潘正龙 2018-07-31 version1.0 原生JS创建全局通用方法和类等*
* Modified By 潘正龙 2018-09-14 version1.1 修改为兼容angular框架的原生组件js
* Modified By 潘正龙 2018-09-19 version1.2 修改为钻取方法
**/
// 逻辑
var EchartsOptionsInit = {
init:function(catalog, type, children, dom, drilling){
var option = {
title: {},
textStyle: {
fontStyle:'normal'
},
tooltip : {},
legend: {data:[]},
toolbox: {
feature: {
saveAsImage: {}
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
type: 'category',
data: []
},
yAxis: {
type: 'value'
},
series: []
};
if(catalog == 'line'){ // 折线类型的数据初始化
option.title = {
show:false,
subtext:'折线图副标题',
text:'折线图主标题',
x: 'center', // 水平安放位置,默认为左对齐,可选为:
// 'center' ¦ 'left' ¦ 'right'
// ¦ {number}(x坐标,单位px)
y: 'top', // 垂直安放位置,默认为全图顶端,可选为:
// 'top' ¦ 'bottom' ¦ 'center'
// ¦ {number}(y坐标,单位px)
//textAlign: null // 水平对齐方式,默认根据x设置自动调整
backgroundColor: 'rgba(0,0,0,0)',
borderColor: '#ccc', // 标题边框颜色
borderWidth: 0, // 标题边框线宽,单位px,默认为0(无边框)
padding: 5, // 标题内边距,单位px,默认各方向内边距为5,
// 接受数组分别设定上右下左边距,同css
itemGap: 10, // 主副标题纵向间隔,单位px,默认为10,
textStyle: {
fontSize: 18,
fontWeight: 'bolder',
color: '#333', // 主标题文字颜色
fontStyle:'italic'
},
subtextStyle: {
color: '#aaa' // 副标题文字颜色
}
};
option.tooltip = {
trigger: 'axis',
axisPointer: {
type: 'cross',
label: {
backgroundColor: '#6a7985'
}
}
};
option.toolbox = {
show: true,
orient: 'vertical',
left: 'right',
top: 'center',
feature: {
mark: {show: true},
magicType: {show: true, type: ['line', 'bar']},
restore: {show: true},
saveAsImage: {show: true}
}
};
}else if(catalog == 'bar'){
option.title = {
text: 'Bar条图',
subtext: 'Bar条图分类'
};
option.tooltip = {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
};
option.xAxis = {data:[]};
option.toolbox = {
show: true,
orient: 'vertical',
left: 'right',
top: 'center',
feature: {
mark: {show: true},
dataView: {show: true, readOnly: false},
magicType: {show: true, type: ['line', 'bar', 'stack', 'tiled']},
restore: {show: true},
saveAsImage: {show: true}
}
};
}else if(catalog == 'pie'){ // 饼状图
option.title = {text:'饼状图演示',subtext:'纯属虚构',x:'center'};
option.tooltip = {trigger:'item',formatter:"{a} <br/>{b} : {c} ({d}%)"};
option.toolbox = {
show: false,
orient: 'vertical',
left: 'right',
top: 'center',
feature: {
mark: {show: true},
dataView: {show: true, readOnly: false},
magicType: {show: true, type: ['line', 'bar', 'stack', 'tiled']},
restore: {show: true},
saveAsImage: {show: true}
}
};
delete option.grid;
delete option.xAxis;
delete option.yAxis;
}else if(catalog == 'radar'){
option.radar = [{indicator:[],name:{normal:{}}}];
delete option.grid;
delete option.xAxis;
delete option.yAxis;
option.toolbox = {
show: false,
orient: 'vertical',
left: 'right',
top: 'center',
feature: {
mark: {show: true},
dataView: {show: true, readOnly: false},
saveAsImage: {show: true}
}
};
}else if(catalog == 'sankey'){ /**2018-10-24 新增桑基图方法开始**/
option.title = {show:false,x:'center',y:'top'};
option.tooltip = {trigger:'item',triggerOn:'mousemove'};
option.toolbox = {
show:true,
orient: 'vertical',
left: 'right',
top: 'center',
feature: {
saveAsImage: {show: true}
}
};
delete option.grid;
delete option.xAxis;
delete option.yAxis;
}; /**2018-10-24 新增桑基图方法结束**/
EchartsOptionsInit.assign(catalog, type, children, option, dom, drilling);
},
assign:function(catalog, type, children, option, dom, drilling){ /*两个对象合并*/
if(!!children.params){ // 有自定义选项
var params = children.params;
for (var obj in params){
if(option.hasOwnProperty(obj) && params.hasOwnProperty(obj)){
option[obj] = Object.assign(option[obj],params[obj]);
}else if(params.hasOwnProperty(obj) && !option.hasOwnProperty(obj)){
option[obj] = params[obj];
}else if(!params.hasOwnProperty(obj) && option.hasOwnProperty(obj)){
option[obj] = option[obj];
}
}
if(!children.params.legend){
option.legend.show = false;
}else{
option.legend.show = true;
}
if(!children.params.toolbox){
option.toolbox.show = false;
}else{
option.toolbox.show = true;
}
if(!children.params.title){
option.title.show = false;
}else{
option.title.show = true;
}
if(!!children.params.legend){ // 重新定义legend参数
option.legend = Object.assign(option.legend,children.params.legend);
}
}
if(!!children.X){ // X轴数据
if(children.X.length){ // X轴回来的是数组
option.xAxis = children.X;
}else if(!children.X.length){
option.xAxis = Object.assign(option.xAxis,children.X);
}
}
if(!!children.Y){ // Y轴数据
if(children.Y.length){ // Y轴回来的是数组
option.yAxis = children.Y;
}else if(!children.Y.length){
option.yAxis = Object.assign(option.yAxis,children.Y);
}
}
if(!!children.data){ // 数据部分
var data = children.data
if(catalog == 'line'){ // 线图
if(!!children.params){
}
}else if(catalog == 'bar'){ // bar条图且带缩放
if(!!children.params){ // 定义Bar条的颜色
if(!!children.params.BarColors){
option.color = children.params.BarColors;
}
if(!!children.params.yAxis){
if(type == 'mixlinebar' || type == 'multipleyaxis'){ // 线图和Bar图混合图 或者多轴图
option.yAxis = []
for(var k=0;k<children.params.yAxis.length;k++){
var Y = children.params.yAxis[k];
option.yAxis[k] = {};
if(!!children.params.BarColors){
option.yAxis[k].axisLine = {lineStyle:{color:children.params.BarColors[k]}};
}
for(var obj in Y){
if(obj == 'formatter'){
option.yAxis[k] = Object.assign(option.yAxis[k],{axisLabel:{formatter:'{value}' +Y.formatter}});
}else if(obj == 'LineColor'){
option.yAxis[k] = Object.assign(option.yAxis[k],{axisLine:{lineStyle:{color:Y.LineColor}}});
}else{
option.yAxis[k][obj] = Y[obj];
}
}
option.yAxis[k] = Object.assign(option.yAxis[k],{type:'value',min:0});
}
}
}
if(type == 'mixzoomonvalue' && !children.params.dataZoom){ // 可区域滑动
option.dataZoom = [{show:true,start:94,end:100},{type:'inside',start:94,end:100},{show:true,yAxisIndex:0,filterMode:'empty',width:30,height:'80%',showDataShadow:false,left:'93%'}];
}
if(type == 'stack' && !!children.params.markLine){ // stack 定义最高点
option.stackArray = [];
}
if(type == 'mixlinebar'){ // 线图和Bar图混合图
delete option.tooltip;
if(!!children.params.tooltip){
option.tooltip = {trigger:'axis',axisPointer:{type:'cross',crossStyle:{color:'#999'}}};
}else{
option.tooltip = {};
}
if(!!children.params.toolbox){
option.toolbox = {feature:{dataView:{show:true,readOnly:false},magicType:{show:true,type:['line','bar']},restore:{show:true},saveAsImage:{show:true}}};
}else{
option.toolbox.show = false;
}
}
}
if(type == 'gradient'){ // 手势缩放
children.params.gradient = option.series;
option.xAxis = Object.assign({axisLabel:{inside:true,textStyle:{color:'#fff'}},axisTick:{show: false},axisLine:{show:false},z:10},option.xAxis);
option.yAxis = Object.assign({axisLine:{show:false},axisTick:{show:false},axisLabel:{textStyle: {color: '#999'}}},option.yAxis);
option.dataZoom = {type:'inside'}
}else if(type == 'labelrotation'){ // bar条文字缩放
// 定义位置参数
option.posList = ['left','right','top','bottom','inside','insideTop','insideLeft','insideRight','insideBottom','insideTopLeft','insideTopRight','insideBottomLeft', 'insideBottomRight'];
// 定义默认config
option.app = {};
option.app.configParameters={rotate:{min:-90,max:90},align:{options:{left:"left",center:"center",right:"right"}},verticalAlign:{options:{top:"top",middle:"middle",bottom:"bottom"}},position:{options:echarts.util.reduce(option.posList,function(map,pos){map[pos]=pos;return map},{})},distance:{min:0,max:100}};
option.app.config={rotate:90,align:"left",verticalAlign:"middle",position:"insideBottom",distance:15,onChange:function(){var labelOption={normal:{rotate:option.app.config.rotate,align:option.app.config.align,verticalAlign:option.app.config.verticalAlign,position:option.app.config.position,distance:option.app.config.distance}};myChart.setOption({series:[{label:labelOption},{label:labelOption},{label:labelOption},{label:labelOption}]})}};
option.labelOption={normal:{show:true,position:option.app.config.position,distance:option.app.config.distance,align:option.app.config.align,verticalAlign:option.app.config.verticalAlign,rotate:option.app.config.rotate,formatter:"{c} {name|{a}}",fontSize:16,rich:{name:{textBorderColor:"#fff"}}}};
option.calculable = true;
}else if(type == 'richtext'){ // 富文本横向条状图
option.xAxis={type:"value",axisLabel:{formatter:"{value}"}};
if(!!children.params.markPoint){
option.xAxis.name = children.params.markPoint.name;
}
option.yAxis={type:"category",inverse:true,data:[],axisLabel:{formatter:function(value){return"{"+value+"| }\n{value|"+value+"}"},margin:20,rich:{value:{lineHeight:30,align:"center"}}}};
option.seriesLabel={normal:{show:true,textBorderColor:"#333",textBorderWidth:2}};
for (var obj in children.params.Icons){
option.yAxis.data.push(obj);
option.yAxis.axisLabel.rich[obj] = {height:40,align:'center',backgroundColor:{image:children.params.Icons[obj]}};
}
}else if(type == 'ycategory'){ // ycategory Y轴展示数据
option.xAxis = {type:'value',boundaryGap:[0, 0.01]};
option.yAxis = Object.assign(option.yAxis,{type:'category',data:[]});
}else if(type == 'ycategorystack'){ // 堆叠条形图复合型
option.xAxis = {type:'value'};
option.yAxis = {type:'category',data:[]};
}else if(type == 'bar1'){ // 最低点和最高点
option.calculable = true;
option.xAxis = Object.assign(option.xAxis,{type:'category',data:[]});
}else if(type == 'mixlinebar'){ // 线图和Bar图混合图
option.xAxis = Object.assign(option.xAxis,{type:'category',axisPointer:{type:'shadow'},data:[]});
}else if(type == 'mixzoomonvalue'){ // 可区域滑动
option.tooltip = Object.assign(option.tooltip,{axisPointer:{type:'shadow',label:{show:true}}});
option.calculable = true;
option.grid = {top:'12%',left: '1%',right: '10%',containLabel:true};
option.legend = {data:['Growth'],itemGap: 5};
option.xAxis = Object.assign(option.xAxis,{type:'category'});
option.yAxis = Object.assign(option.yAxis,{type:'value',axisLabel:{formatter:function(a){a=+a;return isFinite(a)?echarts.format.addCommas(+a / 1000):'';}}});
}else if(type == 'multipleyaxis'){ // Y轴多参数
option.tooltip = Object.assign(option.tooltip,{axisPointer:{type:'cross'}});
option.grid = Object.assign(option.grid,{right:'10%'});
option.xAxis = Object.assign(option.xAxis,{type:'category',data:[],axisTick:{alignWithLabel:true}});
}
}else if(catalog == 'pie'){ // 饼状
if(type == 'doughnut'){ // 环形饼图
option.legend = Object.assign(option.legend,{orient:'vertical',left:'left'});
}else if(type == 'legend'){ // 饼状全型图
option.legend = Object.assign(option.legend,{type:'scroll',orient:'vertical',right:10,top:100,bottom:20});
}else if(type == 'nest'){ // 双类型饼图
option.legend = Object.assign(option.legend,{orient:'vertical',left:'left'});
}else if(type == 'richtext'){ // 带富文本类型饼图
option.legend = Object.assign(option.legend,{bottom:10,left:'center'});
}else if(type == 'roseType'){ // 南丁格尔玫瑰图
option.legend = Object.assign(option.legend,{x:'center',y :'bottom'});
option.toolbox.feature = {mark:{show:true},dataView:{show:true,readOnly:false},magicType:{show:true,type:['pie','funnel']},restore:{show:true},saveAsImage:{show: true}};
}
}else if(catalog == 'radar'){ // 雷达图
if(type == 'demo'){ // 默认雷达图
}
if(!!children.params){ // 重新定义legend参数
if(!!children.params.radar){
for(var y=0;y<children.params.radar.length;y++){
option.radar[y] = {name:{},splitArea:{}};
var Radar = children.params.radar[y];
if(!!Radar.Postion){ // 位置
option.radar[y].center = Radar.Postion;
}
if(!!Radar.Size){ // 大小
option.radar[y].radius = Radar.Size;
}
if(!!Radar.Rotate){ // 雷达旋转
option.radar[y].startAngle = Radar.Rotate;
}
if(!!Radar.CircleLineNo){ // 雷达环线的个数
option.radar[y].splitNumber = Radar.CircleLineNo;
}
if(!!Radar.Shape){ // 雷达图的形状
option.radar[y].shape = Radar.Shape;
}
if(!!Radar.NameFormatter){ // 节点表现形式
option.radar[y].name.formatter = Radar.NameFormatter;
}
if(!!Radar.NameStyle){ // 节点表现形式
option.radar[y].name.textStyle = Radar.NameStyle;
}
if(!!Radar.AreaColors){ // 环形图的背景颜色
option.radar[y].splitArea = {areaStyle:{color:Radar.AreaColors}};
}
if(!!Radar.AxisLineColor){ // 轴线的颜色
option.radar[y].axisLine = {lineStyle:{color:Radar.AxisLineColor}};
}
if(!!Radar.CircleLineColor){ // 轴线的颜色
option.radar[y].splitLine = {lineStyle:{color:Radar.CircleLineColor}};
}
}
}
}
}else if(catalog == 'sankey'){ /**2018-10-24 新增桑基图方法开始**/
option.series[0] = {};
option.series[0].links = data.links; // 节点连接
option.series[0].data = data.nodes; // 节点名称
option.series[0].type = catalog;
option.series[0].layout = 'none';
if(!!children.params && !!children.params.focusNodeAdjacency){
option.series[0].focusNodeAdjacency = children.params.focusNodeAdjacency;
}else{
option.series[0].focusNodeAdjacency = false;
}
option.series[0].itemStyle = {normal:{borderWidth:1,borderColor:'#aaa'}};
option.series[0].lineStyle = {normal:{curveness:0.5}};
if(type == 'simple'){ // 默认桑基图
}else if(type == 'vertical'){ // 竖向桑基图
option.series[0].orient = 'vertical';
option.series[0].label = {position:'top'};
option.series[0].lineStyle = {normal:{color:'source',curveness:0.5}};
}
}; /**2018-10-24 新增桑基图方法结束**/
for(var i=0;i<data.length;i++){
option.series[i] = {};
for (var obj in data[i]){
if(data[i][obj] instanceof Array){ // 内部数据要取值
if(typeof(data[i][obj][0]) == 'number' || typeof(data[i][obj][1]) == 'number'){ // 判断array的首个对象是数字
option.series[i].data = data[i][obj]
}else if(typeof(data[i][obj][0]) == 'object' || typeof(data[i][obj][1]) == 'object'){ // 判断array的首个对象是object
var newArray = []
for(var k=0;k<data[i][obj].length;k++){
for(var m in data[i][obj][k]){
if(/^[0-9]*$/i.test(data[i][obj][k][m].toString().replace(/\./g,'')) && typeof(parseInt(data[i][obj][k][m])) == 'number'){
newArray.push(parseFloat(data[i][obj][k][m]))
}else{
if(catalog == 'line'){ // 线图
option.xAxis.data.push(data[i][obj][k][m]);
if(i == data.length - 1){
option.xAxis.data = Array.from(new Set(option.xAxis.data))
}
}else if(catalog == 'bar'){ // 柱状图
if(type == 'ycategory'){ // ycategory Y轴展示数据,
option.yAxis.data.push(data[i][obj][k][m])
}else if(type == 'ycategorystack'){
option.yAxis.data.push(data[i][obj][k][m]);
if(i == data.length - 1){
option.yAxis.data = Array.from(new Set(option.yAxis.data))
}
}else if(type == 'bar1' || type == 'mixlinebar' || type == 'multipleyaxis' || type == 'gradient' || type == 'tickalign'){ // bar1带有高低值
option.xAxis.data.push(data[i][obj][k][m])
}else if(type == 'simple' || type == 'labelrotation' || type == 'stack'){
option.xAxis.data.push(data[i][obj][k][m]);
if(i == data.length - 1){
option.xAxis.data = Array.from(new Set(option.xAxis.data))
}
}
}
}
}
}
option.series[i].data = newArray
}
}else if(typeof(data[i][obj]) == 'string' || typeof(data[i][obj]) == 'number'){ //
option.series[i].name = data[i][obj];
option.legend.data.push(data[i][obj])
}
}
option.series[i].type = catalog
if(catalog == 'line'){ // 折线图
if(!!data[i].name){ // legend
option.legend.data.push(data[i].name)
option.series[i].name = data[i].name
}
if(type == 'smooth'){
option.series[i].smooth = true
}
if(type == 'areastack' || type == 'stack'){
option.series[i].stack = data[i].stack
if(!!children.params){
if(!!children.params.label){
option.series[i].label = children.params.label
}
}
}
if(!!children.params.AreaColors){
option.series[i].areaStyle = {color:[children.params.AreaColors[i]]} || {normal: {}}
}
if(!!children.params.lineStyle){
//option.series[i].lineStyle = children.params.lineStyle
}
}else if(catalog == 'bar'){ // bar条图
if(!!data[i].name){ // legend
option.legend.data.push(data[i].name);
option.series[i].name = data[i].name;
if(i == data.length - 1){
option.legend.data = Array.from(new Set(option.legend.data))
}
}
if(!!children.params){
if(!!children.params.BarWidth){ // 定义Bar条的宽度
if(typeof(children.params.BarWidth) == 'number' || typeof(children.params.BarWidth) == 'string'){
option.series[i].barWidth = children.params.BarWidth
}else if(typeof(children.params.BarWidth) == 'object'){
option.series[i].barWidth = children.params.BarWidth[i]
}
}
}
if(type == 'gradient' && i==0){ // 手势缩放
option.series[1] = JSON.parse(JSON.stringify(option.series[0]));
option.series[0] = {data:[],barGap:'-100%',barCategoryGap:'40%',animation:false,type:catalog};
var max = parseInt(Math.max(...option.series[1].data));
for(var n=0;n<option.series[1].data.length;n++){
option.series[0].data.push(max + Math.pow(10,parseInt(max).toString().length - 1))
}
}else if(type=='labelrotation'){// bar条文字旋转
option.series[i].label = option.labelOption;
if(i==0){
option.series[i].barGap = 0
}else if(i == data.length - 1){
option.legend.data = Array.from(new Set(option.legend.data))
}
}else if(type == 'richtext'){ // 富文本横向条状图
option.series[i].label = option.seriesLabel;
if(!!children.params.markPoint && children.params.markPoint.mark == i){
option.series[i].markPoint={symbolSize:1,symbolOffset:[0,"50%"],label:{normal:{formatter:"{a|{a}\n}{b|{b} }{c|{c}}",backgroundColor:"rgb(242,242,242)",borderColor:"#aaa",borderWidth:1,borderRadius:4,padding:[4,10],lineHeight:26,position:"right",distance:20,rich:{a:{align:"center",color:"#fff",fontSize:18,textShadowBlur:2,textShadowColor:"#000",textShadowOffsetX:0,textShadowOffsetY:1,textBorderColor:"#333",textBorderWidth:2},b:{color:"#333"},c:{color:"#ff8811",textBorderColor:"#000",textBorderWidth:1,fontSize:22}}}},data:[{type:"max",name:"max "+children.params.markPoint.name+": "},{type:"min",name:"min "+children.params.markPoint.name+": "}]};
}
}else if(type == 'stack' || type == 'ycategorystack'){ // 堆叠柱状图
if(!!data[i].stack){ // 分类
option.series[i].stack = data[i].stack
}
if(!!children.params){
if(!!children.params.label){ // ycategorystack
option.series[i].label = {normal:{show:true,position: 'insideRight'}}
}
if(!!children.params.markLine){ // stack 定义最高点
option.stackArray.push(option.series[i].data)
if(i == data.length - 1){
var NewArray = []
for(var k=0;k<option.stackArray.length;k++){
NewArray.push(Math.max(...option.stackArray[k]))
}
for(var m=0;m<NewArray.length;m++){
if(NewArray[m] == Math.max(...NewArray)){
option.series[m].markLine = {lineStyle:{normal:{type:'dashed'}},data:[[{type:'min'},{type:'max'}]]};
delete option.markLine;
delete option.stackArray
}
}
}
}
}
}else if(type == 'ycategory' || type == 'bar1' || type == 'mixlinebar' || type == 'multipleyaxis'){
// ycategory Y轴展示数据,bar1带有高低值, mixlinebar 线条混合图, multipleyaxis多轴图
if(type == 'bar1'){ // bar1带有高低值
if(!!children.params){
if(!!children.params.average){
option.series[i].markLine={data:[{type:'average',name:'平均值'}]}
}
if(!!children.params.min){
if(!option.series[i].markPoint){
option.series[i].markPoint = {data:[]}
}
option.series[i].markPoint.data.push({type:'min',name:'最小值'})
}
if(!!children.params.max){
if(!option.series[i].markPoint){
option.series[i].markPoint = {data:[]}
}
option.series[i].markPoint.data.push({type:'max',name:'最大值'})
}
}
if(i == data.length - 1){
option.xAxis.data = Array.from(new Set(option.xAxis.data))
}
}else if(type == 'ycategory'){ // ycategory Y轴展示数据,
if(i == data.length - 1){
option.yAxis.data = Array.from(new Set(option.yAxis.data))
}
}else if(type == 'mixlinebar'){ // mixlinebar 线条混合图
if(i == data.length - 1){
option.xAxis.data = Array.from(new Set(option.xAxis.data));
option.series[i].type = 'line';
option.series[i].yAxisIndex = 1
}
}else if(type == 'multipleyaxis'){ // 多轴图
option.yAxis[i].position = 'right';
if(i == data.length - 1){
option.yAxis[i].position = 'left';
option.xAxis.data = Array.from(new Set(option.xAxis.data));
option.series[i].type = 'line';
option.series[i].yAxisIndex = 2;
var MaxList = [];
for(var n=0;n<option.series.length;n++){
var max = parseInt(Math.max(...option.series[n].data));
option.yAxis[n].max = max + Math.pow(10,parseInt(max).toString().length - 1);
if(n < option.series.length - 1){
MaxList.push(option.yAxis[n].max)
}
}
for(var p=0;p<MaxList.length;p++){
option.yAxis[p].max = Math.max(...MaxList)
}
}
}
}
}else if(catalog == 'pie'){ // 饼状图
option.series[i] = data[i];
option.series[i].type = catalog;
option.series[i].itemStyle = {emphasis: {shadowBlur:10,shadowOffsetX:0,shadowColor: 'rgba(0, 0, 0, 0.5)'}};
var PieConfig = [];
if(type == 'doughnut'){ // 环形饼状图
PieConfig.push({radius: ['50%','70%'],avoidLabelOverlap:false,label:{normal:{show:false,position:'center',textStyle:{fontSize:'18',fontWeight:'normal'}},emphasis:{show:true,textStyle:{fontSize:'20',fontWeight:'bold'}}},labelLine:{normal:{show:false}}})
}else if(type == 'legend'){ // 饼状全型图
PieConfig.push({radius:'50%',center:['40%','60%'],itemStyle:{emphasis:{shadowBlur:10,shadowOffsetX:0,shadowColor: 'rgba(0, 0, 0, 0.5)'}}})
}else if(type == 'nest'){ // 双类型饼图
PieConfig = [{/*selectedMode:"single",*/radius:[0,"30%"],label:{normal:{position:"inner"}},labelLine:{normal:{show:false}}},{radius:["40%","55%"],label:{normal:{formatter:"{a|{a}}{abg|}\n{hr|}\n {b|{b}:}{c} {per|{d}%} ",backgroundColor:"#eee",borderColor:"#aaa",borderWidth:1,borderRadius:4,shadowBlur:3,shadowOffsetX:2,shadowOffsetY:2,shadowColor:"#999",rich:{a:{color:"#999",lineHeight:22,align:"center"},hr:{borderColor:"#aaa",width:"100%",borderWidth:0.5,height:0},b:{fontSize:16,lineHeight:33},per:{color:"#eee",backgroundColor:"#334455",padding:[2,4],borderRadius:2}}}}}];
if(i == data.length - 1){
for(var n=0;n<option.series[0].data.length;n++){
for(var l=0;l<option.series[1].data.length;l++){
if(pgyBase.ObjEqual(option.series[0].data[n], option.series[1].data[l])){
option.series[0].data[n].selected = true
}
}
}
}
}else if(type == 'roseType'){ // 南丁格尔玫瑰图
PieConfig[i] = {radius:[0,150],center:['50%','50%']}
}
option.series[i] = Object.assign(option.series[i],PieConfig[i]);
if(!children.params.label && children.params.label == false){ // 是否显示标签和线
option.series[i].label = {normal:{show:false},emphasis:{show:false}}
}
if(!!children.params.PieConfig){ // 自定义参数
option.series[i] = Object.assign(option.series[i],children.params.PieConfig[i]);
if(type == 'roseType' && children.params.PieConfig[i].roseType == 'radius' ){ // 南丁格尔玫瑰图-半径模式
option.series[i].label = {normal:{show:false},emphasis:{show:true}};
option.series[i].lableLine = {normal:{show:false},emphasis:{show: true}}
}
}
for(var m=0;m<option.series[i].data.length;m++){
if(!!option.series[i].data[m].name){ // legend
option.legend.data.push(option.series[i].data[m].name)
}
}
option.legend.data = Array.from(new Set(option.legend.data))
if(option.series.length == 1){
option.legend.data.splice(0,1)
}
}else if(catalog == 'radar'){ // 雷达图
if(!!data[i].name){ // 名称
option.series[i].name = data[i].name
}
if(i > 0){ // 多雷达图分开
option.series[i].radarIndex = i
}
if(!option.radar[i]){ // 定义雷达图的各个点阵名称
option.radar[i] = {indicator:[]}
}else if(!option.radar[i].indicator){
option.radar[i].indicator = []
}
var ValueArray = []
if(data[i][obj] instanceof Array){ // 判断array
var radar = data[i][obj];
option.series[i].data = [];
for(var k=0;k<radar.length;k++){
ValueArray[k] = [];
option.series[i].data[k] = {};
for(var key in radar[k]){
if(key == 'name'){
option.legend.data.push(radar[k].name);
option.series[i].data[k].name = radar[k].name
}
if(radar[k][key] instanceof Array){
option.series[i].data[k].value = [];
if(typeof(radar[k][key][0]) == 'number'){
for(var l=0;l<radar[k][key].length;l++){
if(!option.radar[i].indicator[l]){
option.radar[i].indicator[l] = {}
}
option.series[i].data[k].value.push(parseFloat(radar[k][key][l]));
ValueArray[k].push(parseFloat(radar[k][key][l]))
}
}else{
for(var l=0;l<radar[k][key].length;l++){
if(!option.radar[i].indicator[l]){
option.radar[i].indicator[l] = {}
}
for(var m in radar[k][key][l]){
if(typeof(radar[k][key][l][m]) == 'number'){
option.series[i].data[k].value.push(radar[k][key][l][m]);
ValueArray[k].push(radar[k][key][l][m])
}else if(/^[0-9]*$/i.test(radar[k][key][l][m].toString().replace(/\s+/g, '').replace(/-/g, '').replace(/\./g,''))){
option.series[i].data[k].value.push(parseFloat(radar[k][key][l][m]));
ValueArray[k].push(parseFloat(radar[k][key][l][m]))
}else if(m == 'name'){
option.radar[i].indicator[l].name = radar[k][key][l][m]
}
}
}
}
}
}
}
}
var t = ValueArray.length,NewArray = [];
if(t == 1){
NewArray = ValueArray[t-1]
}else{
var t1 = ValueArray[0].length,tempArray;
for(var p=0;p<t1;p++){
tempArray = [];
for(var q=0;q<t;q++){
tempArray.push(ValueArray[q][p]) // 数组的每一数列组成一个新的数组
}
NewArray.push(Math.max(...tempArray)) // 全部最大值组成的一个数组
}
}
for(var x=0;x<NewArray.length;x++){
var max = NewArray[x];
if(max > 0){
option.radar[i].indicator[x].max = max*1.25
}else if(max < 0){
option.radar[i].indicator[x].max = max*0.8
}else{
option.radar[i].indicator[x].max = max
}
}
}else if(catalog == 'sankey'){ /**2018-10-24 新增桑基图方法开始**/
console.log(option.series);
if(type == 'simple'){ /**默认桑基图**/
}else if(type == 'vertical'){ /**竖向桑基图**/
}
} /**2018-10-24 新增桑基图方法结束**/
}
}
console.log(option);
dom.setOption(option);
},
drillingParams:function(defaultData, drilling, myChart, isDrilling, DefaultDrilling, getDrilling){
myChart.clear();
if(defaultData.drilling.length > 1){
var NewParams = {
toolbox:{
feature:{
myBack:{
show: true,
title: '返回上一级',
icon: 'path://M432.45,595.444c0,2.177-4.661,6.82-11.305,6.82c-6.475,0-11.306-4.567-11.306-6.82s4.852-6.812,11.306-6.812C427.841,588.632,432.452,593.191,432.45,595.444L432.45,595.444z M421.155,589.876c-3.009,0-5.448,2.495-5.448,5.572s2.439,5.572,5.448,5.572c3.01,0,5.449-2.495,5.449-5.572C426.604,592.371,424.165,589.876,421.155,589.876L421.155,589.876z M421.146,591.891c-1.916,0-3.47,1.589-3.47,3.549c0,1.959,1.554,3.548,3.47,3.548s3.469-1.589,3.469-3.548C424.614,593.479,423.062,591.891,421.146,591.891L421.146,591.891zM421.146,591.891',
onclick:function (){
myChart.clear();
defaultData.data.splice(defaultData.steps,1);
defaultData.drilling.splice(defaultData.steps,1);
defaultData.steps --;
drilling.data = defaultData.drilling[defaultData.steps];
if(defaultData.steps == 0){
drilling.params = DefaultDrilling.params;
isDrilling = true;
}
EchartsOptionsInit.init(defaultData.catalog, defaultData.type, drilling, myChart, isDrilling);
EchartsOptionsInit.drillingDown(myChart, isDrilling, defaultData, getDrilling);
return false;
}
},
saveAsImage:{show:true}
}
},
legend:true
};
drilling.params = Object.assign(drilling.params,NewParams);
}
EchartsOptionsInit.init(defaultData.catalog, defaultData.type, drilling, myChart, isDrilling);
EchartsOptionsInit.drillingDown(myChart, isDrilling, defaultData, getDrilling);
},
drillingDown:function(myChart, isDrilling, defaultData, getDrilling) {
myChart.off('click');
myChart.on('click', function (params){
if(isDrilling){// 上钻和下钻
//myChart.clear();
defaultData.steps ++;
getDrilling(defaultData, params, '')
}else{
console.log('不钻');
}
})
},
drillingUp:function(defaultData, drilling, myChart, isDrilling, DefaultDrilling, getDrilling){
defaultData.data.splice(defaultData.steps,1);
defaultData.drilling.splice(defaultData.steps,1);
defaultData.steps --;
drilling.data = defaultData.drilling[defaultData.steps];
EchartsOptionsInit.drillingParams(defaultData, drilling, myChart, isDrilling, DefaultDrilling, getDrilling);
}
};
\ No newline at end of file
ng.$systemService.URL = function($state){
$state = $state || ng.$state;
let name = $state.current.name;
if(name.indexOf("my")>-1){
return "personal";
}else if(name.indexOf("team")>-1){
return "team";
}else{
return "all";
}
}
\ No newline at end of file
ng.$systemService.addDom = function(obj, node, position){
let dom = document.createElement(node || "div");
for (var p in obj) {
p === "style" ? (dom[p].cssText = obj[p]) : (dom[p] = obj[p])
}
return (position || document.body).insertBefore(dom, (position || document.body).firstChild)
}
\ No newline at end of file
ng.$systemService.callBackUrl = function($state){
if(JSON.stringify($state) === '{}'){
window.location.href = window.location.href;
}else{
if(sessionStorage.redirect_param){
$state.go(sessionStorage.redirect_url,JSON.parse(sessionStorage.redirect_param));
}else{
$state.go(sessionStorage.redirect_url);
}
sessionStorage.removeItem('redirect_url');
sessionStorage.removeItem('redirect_param');
}
}
\ No newline at end of file
ng.$systemService.convertFilter = function(list){
function getSearchConditionTime(list) {
list.sort();
return list.join(',')
}
let obj = {};
if(list.length>0){
obj.exp = {
field:list[0][0],
value:((typeof list[0][1]==='object')&&list[0][1].constructor===Array)?getSearchConditionTime(list[0][1]):list[0][1],
op:list[0][2]===undefined?"EQ":list[0][2]
}
}
if(list.length>1){
obj.subConds = [];
ng.angular.forEach(list,function (item,index) {
if(index>0){
obj.subConds.push({
cond:{
exp:{
field:item[0],
value:((typeof item[1]==='object')&&item[1].constructor===Array)?getSearchConditionTime(item[1]):item[1],
op:item[2]===undefined?"EQ":item[2]
}
},
lop:item[3]===undefined?"AND":item[3]
});
}
});
}
if(JSON.stringify(obj) === "{}"){
return '';
}else{
return encodeURIComponent(JSON.stringify(obj));
}
}
\ No newline at end of file
ng.$systemService.convertOrder = function(params, defaultSort, $filter){
$filter = $filter || ng.$filter;
let sortObj = {};
if(defaultSort){
ng.angular.copy(defaultSort,sortObj);
}
if(params.sortModel.length>0){
sortObj={
"field":params.sortModel[0].colId,
"direction":$filter('uppercase')(params.sortModel[0].sort)
};
return encodeURIComponent(JSON.stringify([sortObj]));
}else{
return defaultSort!==undefined?encodeURIComponent(JSON.stringify([sortObj])):undefined;
}
}
\ No newline at end of file
ng.$systemService.fillZero = function(number, digits){
number = String(number);
let length = number.length;
if (number.length < digits) {
for (let i = 0; i < digits - length; i++) {
number = "0" + number;
}
}
return number;
}
\ No newline at end of file
ng.$systemService.formatDay = function(day){
var map = {
1: '星期一',
2: '星期二',
3: '星期三',
4: '星期四',
5: '星期五',
6: '星期六',
0: '星期日',
};
return map[day]
}
\ No newline at end of file
ng.$systemService.getCurrentNode = function(url, options, $scope, sub, systemService){
systemService = systemService || ng.$systemService;
let data = [];
if(sub){
data = options;
}else{
data = options.my_data;
}
let flag = false;
for(let i=0;i<data.length;i++){
if(data[i].url===url){
$scope.__selectNode=data[i];
flag=true;
break;
}else {
if(data[i].children && data[i].children.length){
for(let j=0;j<data[i].children.length;j++){
if(data[i].children[j].url === url){
$scope.__selectNode = data[i].children[j];
flag = true;
break;
}
}
if(flag){
break;
}
}
}
}
setTimeout(function () {
systemService.loadMyCtrl(flag, options, $scope, systemService);
},200);
}
\ No newline at end of file
ng.$systemService.getCurrentUrl = function($state){
$state = $state || ng.$state;
let currentRounter;
if($state.current.name.split('.').length===2){
currentRounter=$state.current.name
}else {
let routerList=$state.current.name.split('.');
routerList.splice(2,1);
currentRounter=routerList.join('.')
}
return currentRounter;
}
\ No newline at end of file
ng.$systemService.getKeyByObj = function(key, obj){
var has;
obj = JSON.stringify(obj);
if(obj.indexOf(key) > -1){
obj = obj.substr(obj.indexOf(key), obj.length);
has = obj.split(',')[0].split(':')[1].replace(/\s+|\}|\{|\[|\]|\'|\"/g, '');
}else{
has = false
}
return has;
}
\ No newline at end of file
ng.$systemService.getLoginUser = function($state){
$state = $state || ng.$state;
if(!sessionStorage.login_user){
if(ng.$$.MY_SSO.enabled){
window.location.href = ng.$$.MY_SSO.casUrl + encodeURIComponent(ng.$$.MY_SSO.loginApi);
}else{
$state.go('page.login', {action: 'logout'});
}
return undefined;
}else{
return JSON.parse(sessionStorage.login_user);
}
}
\ No newline at end of file
ng.$systemService.getMenuRouter = function(config, $state, systemService){
$state = $state || ng.$state;
systemService = systemService || ng.$systemService;
let currentRouter = systemService.getParentRouter();
if(config.router[config.currentUrl]){
$state.go(currentRouter+"."+config.currentUrl, config.params);
}
}
\ No newline at end of file
ng.$systemService.getMonthDay = function(date){
let daysOfMonth = [];
let fullYear = date.getFullYear();
let month = date.getMonth() + 1;
let lastDayOfMonth = new Date(fullYear, month, 0).getDate();
for (let i = 1; i <= lastDayOfMonth; i++) {
daysOfMonth.push(dateParse(fullYear + '-' + month + '-' + i));
}
return daysOfMonth;
}
\ No newline at end of file
ng.$systemService.getNextMonthDay = function(date){
var fullYear = date.getFullYear();
var month = date.getMonth() + 1;
return ng.$systemService.getMonthDay(new Date(fullYear,month,1))
}
\ No newline at end of file
ng.$systemService.getParentRouter = function($state){
$state = $state || ng.$state;
let currentRouter;
if($state.current.name.split('.').length===2){
currentRouter= $state.current.name
}else {
let routerList=$state.current.name.split('.');
routerList.splice(2,1);
currentRouter=routerList.join('.')
}
return currentRouter;
}
\ No newline at end of file
ng.$systemService.getPreMonthDay = function(date){
var fullYear = date.getFullYear();
var month = date.getMonth() - 1;
return ng.$systemService.getMonthDay(new Date(fullYear,month,1));
}
\ No newline at end of file
ng.$systemService.getUserSession = function(systemService,$state){
systemService = systemService || ng.$systemService;
$state = $state || ng.$state;
if(!sessionStorage.login_user){
if(ng.$$.MY_SSO.enabled){
window.location.href = ng.$$.MY_SSO.casUrl+encodeURIComponent(ng.$$.MY_SSO.loginApi);
}else{
systemService.checkLogin().then(function (data) {
if (data.status === 'SUCCESS' && data.content) {
console.log('进来了');
systemService.setUserSession(data.content);
}
});
$state.go('page.login', {action: 'logout'});
}
return undefined;
}else{
if(sessionStorage.inDelegation === 'true'){
return JSON.parse(sessionStorage.proxy_user);
}else{
return JSON.parse(sessionStorage.login_user);
}
}
}
\ No newline at end of file
ng.$systemService.guid = function(){
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
let r = Math.random()*16|0, v = c === 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
}
\ No newline at end of file
ng.$systemService.loadCss = function(url){
let ele = document.createElement('link');
ele.href = url;
ele.rel = 'stylesheet';
if (ele.onload === null) {
ele.onload = function() {
};
}else {
ele.onreadystatechange = function() {};
}
ng.angular.element(ng.$$.$('body')).prepend(ele);
}
\ No newline at end of file
ng.$systemService.loadMyCtrl = function(flag, options, $scope, systemService){
systemService = systemService || ng.$systemService;
if(options.my_ctrl){
options.my_ctrl.expand_all();
if(flag){
options.my_ctrl.select_branch($scope.__selectNode);
}else{
options.my_ctrl.select_branch(options.my_data[0]);
}
}else{
setTimeout(function () {
systemService.loadMyCtrl(flag, options, $scope, systemService);
},100);
}
}
\ No newline at end of file
ng.$systemService.loadScript = function(url, callback){
let head = ng.$$.$('head');
let script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", url);
script.setAttribute("async", true);
script.setAttribute("defer", true);
head.appendChild(script);
if (document.all) { /**IE**/
script.onreadystatechange = function() {
let state = this.readyState;
if (state === 'loaded' || state === 'complete') {
callback && callback();
}
}
}else { /**firefox, chrome**/
script.onload = function() {
callback && callback();
}
}
}
\ No newline at end of file
ng.$systemService.regObj = function(name, value, disabled, $filter){
$filter = $filter || ng.$filter;
if(!disabled){
let obj;
switch (name) {
case 'mobile':
obj= {reg:/^1([0-9])\d{9}$/, msg:$filter('translate')('form.ERROR_PATTERN_MOBILE')};
break;
case 'phone':
obj= {reg:/^$|(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$/, msg:$filter('translate')('form.ERROR_PATTERN_PHONE')};
break;
case 'email':
obj= {reg:/^[a-zA-Z0-9_+.-]+\@([a-zA-Z0-9-]+\.)+[a-zA-Z0-9]{2,10}$/, msg:$filter('translate')('form.ERROR_PATTERN_EMAIL')};
break;
case 'money':
obj= {reg:/^\d+(\.\d{1,2})?$/, msg:$filter('translate')('form.ERROR_PATTERN_MONEY')};
break;
case 'moneyAllowNegative':
obj= {reg:/^(\-|\+)?\d+(\.\d{1,2})?$/, msg:$filter('translate')('form.ERROR_PATTERN_MONEY')};
break;
case 'integer':
obj= {reg:/^\d+?$/, msg:$filter('translate')('form.ERROR_PATTERN_INTEGER')};
break;
default:
return false;
}
let validity = obj.reg.test(value);
if(value&&!validity){
return {
error:true,
msg:obj.msg
}
}
}
}
\ No newline at end of file
ng.$systemService.search = function(originalData,filterList){
let original = [];
ng.angular.copy(originalData,original);
let list = [];
if(filterList.length>0){
ng.angular.forEach(filterList,function (field,ind) {
ng.angular.forEach(original,function (data,index) {
for(var p in data){
if(p===field.field){
if(data[p].toLowerCase().indexOf(field.value.toLowerCase())>-1){
list.push(data);
}
}
}
});
if(ind!==filterList.length-1){
ng.angular.copy(list,original);
list = [];
}
});
}else {
list = original;
}
return list;
}
\ No newline at end of file
ng.$systemService.setUserSession = function(user, $rootScope){
$rootScope = $rootScope || ng.$rootScope || {};
if(!user){
return false;
}else{
user = user[0] || user;
}
console.log('进入user',user);
$rootScope.user = {id:user.id,login_name: user.login_name, head_img: 'images/media-user.png',proxy:user.inDelegation};
if(user.inDelegation){ /**用户已代理**/
$rootScope.user.proxy_name = '代 '+user.name;
sessionStorage.proxy_user = JSON.stringify(user);
let login = JSON.parse(sessionStorage.login_user);
login.inDelegation = true;
localStorage.inDelegation = true;
$rootScope.user.login_name = login.name;
localStorage.login_user = JSON.stringify(login);
}else{ /**用户未代理**/
user.inDelegation=false;
sessionStorage.login_user = JSON.stringify(user);
localStorage.inDelegation = false;
$rootScope.user.proxy_name = '被代办人';
$rootScope.user.login_name = user.name;
localStorage.login_user = JSON.stringify(user);
}
}
\ No newline at end of file
ng.$systemService.translate = function(key, $filter){
$filter = $filter || ng.$filter;
return $filter('translate')(key);
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment