Admin Columns - Version 2.3.3

Version Description

  • [Added] Added user column: Visual Editor
  • [Added] Added post column: Estimated Reading Time
  • [Added] Added method CPAC_Column::get_sorting_value()
  • [Added] Added user column display name
  • [Fixed] Fixed media actions column
Download this release

Release Info

Developer codepress
Plugin Icon 128x128 Admin Columns
Version 2.3.3
Comparing to
See all releases

Code changes from version 2.3.2 to 2.3.3

assets/css/admin-column.css CHANGED
@@ -1 +1,1024 @@
1
- #cpac a:focus,#cpac a:active{outline:none}#icon-codepress-admin-columns{background:transparent url('../images/icon.png') no-repeat 0 0}.cpac-settings-link{float:right;margin:12px 14px 5px 0;background:transparent url('../images/settings.png') no-repeat 0 0;padding-left:20px;text-decoration:none;display:inline-block;line-height:16px}.cpac-settings-link.current{font-weight:bold}.rtl .cpac-settings-link{float:left;margin:12px 0 5px 14px;padding-right:20px;padding-left:0}a.help{background:transparent url('../images/help.png') no-repeat 0 0;display:inline-block;width:16px;height:16px}.button.loading{padding-right:25px;position:relative}.rtl .button.loading{padding-left:25px;padding-right:0}.button.loading span{position:absolute;top:2px;right:6px;background:transparent url('../images/loading.gif') no-repeat right 50%;width:16px;height:16px;display:inline-block}.rtl .button.loading span{left:6px;right:auto}.icon-yes{background:transparent url(../images/yes.png) no-repeat 0 0;width:16px;height:16px;display:inline-block;position:relative;top:2px}.icon-no{background:transparent url(../images/no.png) no-repeat 0 0;width:16px;height:16px;display:inline-block;position:relative;top:2px}h2.cpac-nav-tab-wrapper{margin-bottom:10px}.cpac-menu{clear:both;overflow:hidden;margin-bottom:10px}.cpac-menu .subsubsub{white-space:normal;margin-right:14px;width:100%;margin:0 14px 0 0}.cpac-menu .subsubsub li.first{font-weight:bold;min-width:90px}.columns-container{margin-right:300px;max-width:700px}.columns-container .columns-left{float:left;width:100%}.columns-container .columns-right{float:right;margin-right:-300px;width:280px}.columns-container .columns-right .columns-right-inside.fixed{position:fixed;top:40px;width:280px}.ui-sortable-helper{-webkit-box-shadow:1px 3px 6px 0 rgba(1,1,1,0.4);box-shadow:1px 3px 6px 0 rgba(1,1,1,0.4)}.ui-sortable-helper .column-meta{border-width:1px}.cpac-placeholder{visibility:visible !important;border-top:1px solid #dfdfdf;padding:5px 4px 7px 0}.cpac-placeholder .inner-placeholder{border:1px dashed #808080;background:#eee;width:100%;height:100%}.cpac-placeholder :first-child{border:none}.columns-left .cpac-boxes .cpac-columns form{box-shadow:0 1px 3px rgba(0,0,0,0.1)}.cpac-column .column-meta{border-style:solid;border-color:#dfdfdf;border-width:1px 1px 0;background:#fcfcfc}.cpac-column .column-meta:nth-child(2n) .column-meta{background:#f9f9f9}.cpac-column .column-meta img{margin-right:3px}.cpac-column .column-meta table{border:none;background:transparent;border-radius:0}.cpac-column .column-meta table tr td{vertical-align:top;height:18px;border:none;padding:11px 8px;border-width:1px 0 0;border-style:solid;border-color:transparent}.cpac-column .column-meta table tr td.column_sort{width:10px;background:transparent url('../images/drag.png') no-repeat 8px 8px;cursor:move}.cpac-column .column-meta table tr td.column_label{width:70%;font-weight:bold;vertical-align:middle;position:relative}.cpac-column .column-meta table tr td.column_label .inner{position:relative;overflow:hidden;height:18px}.cpac-column .column-meta table tr td.column_label .inner>a{color:#5a5a5a;padding:0 4px}.cpac-column .column-meta table tr td.column_label .inner>a:hover{color:#333}.cpac-column .column-meta table tr td.column_label .inner>a.edit-button,.cpac-column .column-meta table tr td.column_label .inner>a.remove-button{display:none;color:#a00;text-decoration:none;text-shadow:none;font-weight:normal;margin-left:5px;font-size:12px}.cpac-column .column-meta table tr td.column_label .inner>a.edit-button:hover,.cpac-column .column-meta table tr td.column_label .inner>a.remove-button:hover{color:#f00}.cpac-column .column-meta table tr td.column_label .inner>a.edit-button{color:#0074a2}.cpac-column .column-meta table tr td.column_label .inner>a.edit-button:hover{color:#2ea2cc}.cpac-column .column-meta table tr td.column_label .inner .meta{display:inline-block;float:right;font-weight:normal;color:#b2b2b2;font-size:12px}.cpac-column .column-meta table tr td.column_label .inner .meta span{cursor:pointer}.cpac-column .column-meta table tr td.column_label span.vers{float:left}.cpac-column .column-meta table tr td.column_type{width:auto;min-width:120px;text-align:right;vertical-align:middle;color:#999;padding-right:0}.cpac-column .column-meta table tr td.column_type .inner{height:18px;overflow:hidden}.cpac-column .column-meta table tr td.column_type .inner a{color:#999}.cpac-column .column-meta table tr td.column_edit{width:38px;min-width:38px;background:transparent url('../images/arrow.png') no-repeat 23px 18px;cursor:pointer}.cpac-column .column-meta:hover .column_label .inner>a.remove-button{display:inline-block}.cpac-column .column-meta:hover .column_label .inner>a.edit-button{display:inline-block}.cpac-column .column-meta span.vers{padding-top:2px}.cpac-column .column-meta span.vers .comment-grey-bubble{background:transparent url("../images/comment-grey-bubble.png") no-repeat 0 0;height:12px;width:12px;float:right}.cpac-column .column-form{display:none;border-width:1px 1px 0;border-style:solid;border-color:#dfdfdf;position:relative}.cpac-column .column-form table{border:none;background:#fcfcfc}.cpac-column .column-form table tr td{vertical-align:top;border:none;padding:8px;background:#fff;border-top:1px solid #f5f5f5}.cpac-column .column-form table tr td select,.cpac-column .column-form table tr td input[type=text]{width:99.95%}.cpac-column .column-form table tr td select optgroup:nth-child(2n){background:#f9f9f9}.cpac-column .column-form table tr td.label{position:relative;overflow:visible;background:#f9f9f9;background:#f5f5f5;border-right:1px solid #e1e1e1;vertical-align:top;width:34%;border-top:1px solid #f0f0f0}.cpac-column .column-form table tr td.label label{font-weight:bold;color:#333;display:block;position:relative}.cpac-column .column-form table tr td.label p{color:#666;display:block;font-size:12px;font-style:normal;line-height:16px;margin:0 !important}.cpac-column .column-form table tr td.label p.description{display:none;position:absolute;z-index:99;top:30px;left:0;background:#eaf2fa;border-radius:5px;border:1px solid #c7d7e2;padding:5px 8px !important;font-weight:normal}.cpac-column .column-form table tr td.label p.description em{display:block;color:#999}.cpac-column .column-form table tr td.input label{padding-left:10px;padding-right:0}.cpac-column .column-form table tr td.input div.msg{margin-top:5px;display:none;color:#333;padding:6px 8px;background-color:#ffebe8;border:1px solid #fff;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cpac-column .column-form table tr td.input .section{padding:12px}.cpac-column .column-form table tr.column_width div.description{font-size:11px;width:12%;float:left;text-align:middle}.cpac-column .column-form table tr.column_width div.input-width-range{float:left;position:relative;width:87%;margin-top:4px}.cpac-column .column-form table tr.column_width div.input-width-range .ui-slider-handle{cursor:ew-resize}.cpac-column .column-form table tr.column_image_size{border:10px solid #f00}.cpac-column .column-form table tr.column_image_size td.input label.custom-size{display:inline-block;margin-top:4px;margin-bottom:4px}.cpac-column .column-form table tr.column_image_size td.input label.custom-size input{margin-right:3px}.cpac-column .column-form table tr.column_image_size td.input .custom_image_size{display:inline-block}.cpac-column .column-form table tr.column_image_size td.input .custom_image_size .hidden{display:none}.cpac-column .column-form table tr.column_image_size td.input .custom_image_size .custom-size-w,.cpac-column .column-form table tr.column_image_size td.input .custom_image_size .custom-size-h{margin:0}.cpac-column .column-form table tr.column_image_size td.input .custom_image_size .custom-size-w.hidden,.cpac-column .column-form table tr.column_image_size td.input .custom_image_size .custom-size-h.hidden{display:none}.cpac-column .column-form table tr.column_image_size td.input .custom_image_size .custom-size-w input[type="text"],.cpac-column .column-form table tr.column_image_size td.input .custom_image_size .custom-size-h input[type="text"]{margin-right:3px;width:40px !important}.cpac-column .column-form table tr.column_action td{background:#f9f9f9}.cpac-column .column-form table tr.column_action td p{margin:0}.cpac-column .column-form table tr.column_action td p a.remove-button{color:#a00;text-decoration:none;text-shadow:none;font-weight:normal;margin-left:5px;font-size:12px;padding:0 5px}.cpac-column .column-form table tr.column_action td p a.remove-button:hover{color:#fff;background:#f00}.cpac-column .column-form table tr:first-child td{border-top:none}.cpac-column.loading .column-form>.spinner{position:absolute;left:50%;top:50%;z-index:200;margin-left:-10px;margin-top:-10px;display:block}.cpac-column.loading .column-form:before{content:'';position:absolute;width:100%;height:100%;background:#fff;z-index:100;opacity:.5}.cpac-column.opened .column-meta{background-color:#c7c7c7;background-image:-ms-linear-gradient(top, #e9e9e9, #c7c7c7);background-image:-moz-linear-gradient(top, #e9e9e9, #c7c7c7);background-image:-o-linear-gradient(top, #e9e9e9, #c7c7c7);background-image:-webkit-gradient(linear, left top, left bottom, from(#e9e9e9), to(#c7c7c7));background-image:-webkit-linear-gradient(top, #e9e9e9, #c7c7c7);background-image:linear-gradient(top, #e9e9e9, #c7c7c7);border-color:#aeaeae}.cpac-column.opened .column-meta table{background:transparent}.cpac-column.opened .column-meta table td{border-color:#f8f8f8;color:#333;text-shadow:0 1px 0 #fff}.cpac-column.opened .column-meta table td a{color:#333;text-shadow:0 1px 0 #fff}.cpac-column.opened .column-meta table td.column_sort{background-position:8px -39px}.cpac-column.opened .column-meta table td.column_label .inner .meta span{color:#808080;text-shadow:none}.cpac-column.opened .column-meta table td.column_type{color:#5c5c5c}.column-footer{background:#eaf2fa;border:1px solid #c7d7e2;min-height:26px;padding:8px;overflow:hidden}.column-footer .order-message{background:transparent url('../images/order_arrow.png') no-repeat 0 0;color:#7a9bbe;float:left;font-family:Comic Sans MS,sans-serif;font-size:11px;height:13px;line-height:1em;margin-left:4px;padding:7px 0 0 22px;text-shadow:0 1px 0 #fff;display:inline-block}.column-footer .button-container{float:right;display:inline-block;margin-top:-5px}.column-footer .button-container a{display:inline-block;margin-top:5px}.cpac-content-body hr{-moz-border-bottom-colors:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;background:none repeat scroll 0 0 transparent;border-color:#dfdfdf -moz-use-text-color -moz-use-text-color;border-image:none;border-right:0 none;border-style:solid none none;border-width:1px 0 0;clear:both;margin:30px 0;opacity:.2}#cpac-welcome.about-wrap div.error{display:block !important}.cpac-alert{display:inline-block;background:none repeat scroll 0 0 #fcf8e3;border:1px solid #fbeed5;border-radius:4px 4px 4px 4px;color:#c09853;margin:20px 0;padding:16px 14px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.cpac-alert p{margin:0}.cpac-alert.cpac-alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847}.cpac-alert.cpac-alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48}.cpac-alert a.button-primary{height:28px;line-height:28px;display:inline-block}#cpac-download-add-ons-table{max-width:600px}.wp-core-ui .button-large{height:40px;line-height:40px;font-size:16px;padding:0 15px;text-shadow:0 1px 0 rgba(0,0,0,0.5)}.cac-notification.updated{border-left-color:#0071aa}.cac-notification.updated .learnmore{float:right}.cac-notification.updated .learnmore:after{content:"\f139";font:normal 20px/1 'dashicons';float:right}.columns-right{margin-top:54px}.columns-right .sidebox{background:none repeat scroll 0 0 #fff;border:1px solid #e1e1e1;border-radius:0 0 0 0;box-shadow:0 1px 3px rgba(0,0,0,0.1);position:relative;margin-bottom:14px}.columns-right .sidebox h3{padding:10px;margin:0}.columns-right .sidebox h3.title{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:15px;font-weight:normal;line-height:1;margin:0;padding:7px 10px;background:#f1f1f1;background-image:-webkit-gradient(linear, left bottom, left top, from(#ececec), to(#f9f9f9));background-image:-webkit-linear-gradient(bottom, #ececec, #f9f9f9);background-image:-moz-linear-gradient(bottom, #ececec, #f9f9f9);background-image:-o-linear-gradient(bottom, #ececec, #f9f9f9);background-image:linear-gradient(to top, #ececec, #f9f9f9);border-bottom-color:#dfdfdf;text-shadow:#fff 0 1px 0;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff;border-bottom-style:solid;border-bottom-width:1px}.columns-right .sidebox .inside{padding:10px}.columns-right .sidebox .inside p{margin-top:0}.columns-right .sidebox#form-actions .form-reset{border-bottom:1px solid #f5f5f5;padding:8px}.columns-right .sidebox#form-actions .reset-column-type{text-decoration:none;color:#bc0b0b;line-height:25px;display:inline-block}.columns-right .sidebox#form-actions .form-update{padding:8px;overflow:hidden}.columns-right .sidebox#form-actions .submit-update{display:block;width:100%;height:28px;line-height:28px;text-align:center}.columns-right .sidebox#pro-version .cta{background:transparent url(../images/get_the_addon.png) no-repeat 0 0;background-size:cover}.columns-right .sidebox#pro-version .padding-box{padding:8px 15px 0}.columns-right .sidebox#pro-version h3 a{color:#fff;font-size:19px;text-decoration:none;font-weight:normal;margin-top:6px}.columns-right .sidebox#pro-version .inside ul{margin:0 0 10px 0}.columns-right .sidebox#pro-version .inside ul li{margin:0;padding:0}.columns-right .sidebox#pro-version .inside ul li a{display:inline-block;min-height:24px;font-size:19px;line-height:24px;margin-bottom:1px;padding:0 5px;background:#000;color:#fff;text-decoration:none}.columns-right .sidebox#pro-version .inside p{color:#fff;font-size:12px}.columns-right .sidebox#pro-version .inside p a{color:#fff;display:inline-block;background:#a4c518;padding:0 2px;font-size:15px;text-decoration:none}.columns-right .sidebox#direct-feedback #feedback-support,.columns-right .sidebox#direct-feedback #feedback-rate{display:none}.columns-right .sidebox#direct-feedback .inside>a{border-radius:4px;border:1px solid #ccc;width:48%;height:64px;text-align:center;line-height:64px;font-weight:bold;color:#222;display:inline-block;text-decoration:none}.columns-right .sidebox#direct-feedback .inside>a:hover{background:#fafafa}.columns-right .sidebox#direct-feedback .inside form textarea{width:100%;height:120px}.columns-right .sidebox#direct-feedback .inside form input[type="submit"]{float:right;border-radius:4px;border:1px solid #ccc;height:32px;text-align:center;line-height:32px;font-weight:bold;font-size:12px;padding:0 32px;color:#ccc;display:inline-block;background:none;text-decoration:none;cursor:pointer}.columns-right .sidebox#direct-feedback .inside form input[type="submit"]:hover{background:#fafafa}.columns-right .sidebox#direct-feedback .inside form p.description{float:left;font-size:10px}.columns-right .sidebox#direct-feedback .inside ul{margin:0}.columns-right .sidebox#direct-feedback .inside ul.share li{margin:0;display:block;float:left;margin-left:9px;width:30%}.columns-right .sidebox#direct-feedback .inside ul.share li a{text-decoration:none;vertical-align:middle;line-height:20px;padding:16px 0;width:100%;text-align:center;border:1px solid #ccc;border-radius:4px;display:block}.columns-right .sidebox#direct-feedback .inside ul.share li a:hover{background:#fafafa}.columns-right .sidebox#direct-feedback .inside ul.share li:first-child{margin-left:0}.columns-right .sidebox#direct-feedback #feedback-support .inside ul.share li{width:48%}table.cpac-form-table{max-width:1100px;margin-top:20px}table.cpac-form-table>tbody>tr>td,table.cpac-form-table>tbody>tr>th{vertical-align:top}table.cpac-form-table td.padding-22{padding-top:22px}table.cpac-form-table td .cpac_export .ms-container{background:transparent url('../images/switch_bw.png') no-repeat 50% 50%}table.cpac-form-table td .cpac_export .ms-container .ms-selectable{width:48%;margin-right:0}table.cpac-form-table td .cpac_export .ms-container .ms-selection{float:right;width:48%}table.cpac-form-table td .cpac_export .ms-container ul.ms-list{width:100%}table.cpac-form-table td .cpac_export .ms-container ul.ms-list li{margin:0;padding-top:5px;padding-bottom:5px}table.cpac-form-table.settings tr td{padding-top:74px}table.cpac-form-table.settings tr:first-child th{padding-top:0}table.cpac-form-table.settings tr:first-child td{padding-top:54px}.wp-pointer-content{overflow:hidden}.wp-pointer-content ol{margin-left:1.5em;padding:0 15px}.wp-pointer-right{margin-right:15px}body.rtl .wp-pointer-right{margin-left:15px;margin-right:0}body.rtl .wp-pointer-right ol{margin-right:1.5em;margin-left:0}body.rtl .cpac-menu .subsubsub{margin-left:14px;margin-right:0}body.rtl .columns-container{margin-left:300px;margin-right:0}body.rtl .columns-left{float:right}body.rtl .columns-left .cpac-columns .cpac-column .column-meta img{margin-left:3px;margin-right:0}body.rtl .columns-left .cpac-columns .cpac-column .column-meta .column_label .inner>a.remove-button{margin-right:12px;margin-left:0}body.rtl .columns-left .cpac-columns .cpac-column .column-meta .column_label .inner .meta{float:left}body.rtl .columns-left .cpac-columns .cpac-column .column-meta .column_label span.vers{float:right}body.rtl .columns-left .cpac-columns .cpac-column .column-meta .column_type{text-align:left;padding-left:0;padding-right:auto}body.rtl .columns-left .cpac-columns .cpac-column .column-meta span.vers .comment-grey-bubble{float:left}body.rtl .columns-left .cpac-columns .cpac-column .column-form table tr.column_image_size td.input label input{margin-left:3px;margin-right:0}body.rtl .columns-left .cpac-columns .cpac-column .column-form table tr td.label p.description{right:0;left:auto}body.rtl .columns-left .cpac-columns .cpac-column .column-form table tr td.label a.more-info{float:left}body.rtl .columns-left .cpac-columns .cpac-column .column-form div.description{float:right}body.rtl .columns-left .cpac-columns .cpac-column .column-form div.input-width-range{float:right}body.rtl .columns-left .cpac-columns .cpac-column .column-form tr td.input label{padding-left:10px;padding-right:0}body.rtl .columns-left .cpac-columns .cpac-column .column-form a.help{float:left}body.rtl .columns-left .column-footer .order-message{float:right;padding-right:22px;padding-left:0;background:transparent url('../images/order_arrow-rtl.png') no-repeat right top}body.rtl .columns-left .column-footer .button-container{float:left}body.rtl .columns-right{float:left;margin-left:-300px;margin-right:0}body.rtl .cpac-placeholder{padding:5px 0 7px 4px}body.rtl .cpac_export .ms-container .ms-selection{float:left}@media only screen and (max-width:900px){.columns-container{margin-right:0}.columns-container .columns-left{float:none}.columns-container .columns-right{float:none;margin-top:0;margin-right:0;width:100%}.columns-container .columns-right .columns-right-inside.fixed{position:relative;top:0;width:100%}}.cpac-addons li{width:200px;background:#fff;float:left;margin-right:16px;margin-bottom:16px;border:1px solid #ddd;-webkit-box-shadow:0 3px 10px 0 rgba(0,0,0,0.15);-moz-box-shadow:0 3px 10px 0 rgba(0,0,0,0.15);box-shadow:0 3px 10px 0 rgba(0,0,0,0.15)}.cpac-addons li:hover{-webkit-box-shadow:0 3px 10px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 3px 10px 0 rgba(0,0,0,0.25);box-shadow:0 3px 10px 0 rgba(0,0,0,0.25)}.cpac-addons li a{color:#444}.cpac-addons li .cpac-addon-content{display:table;width:100%;height:125px;text-align:center;vertical-align:middle;border-top:1px solid #ddd;background:#0069a4;background:-moz-radial-gradient(center, ellipse cover, #0069a4 0, #085079 100%);background:-webkit-gradient(radial, center center, 0, center center, 100%, color-stop(0, #0069a4), color-stop(100%, #085079));background:-webkit-radial-gradient(center, ellipse cover, #0069a4 0, #085079 100%);background:-o-radial-gradient(center, ellipse cover, #0069a4 0, #085079 100%);background:-ms-radial-gradient(center, ellipse cover, #0069a4 0, #085079 100%);background:radial-gradient(ellipse at center, #0069a4 0, #085079 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0069a4', endColorstr='#085079', GradientType=1)}.cpac-addons li .cpac-addon-content>*{display:table-cell;vertical-align:middle}.cpac-addons li .cpac-addon-content h3{padding:0 16px;color:#fff;line-height:150%}.cpac-addons li .cpac-addon-content img{width:100%}.cpac-addons li .cpac-addon-header{width:100%;padding:25px 15px;-moz-box-sizing:border-box;box-sizing:border-box}.cpac-addons li .cpac-addon-header>*:first-child{margin-top:0}.cpac-addons li .cpac-addon-header>*:last-child{margin-bottom:0}.cpac-addons li .cpac-addon-actions{background:#eee;border-top:1px solid #ddd;padding:8px}.cpac-addons li .cpac-addon-actions .cpac-installed:before{content:"\f147";font-family:'dashicons';vertical-align:middle;margin-left:-5px;margin-right:3px}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #cpac a:focus,
2
+ #cpac a:active {
3
+ outline: none;
4
+ }
5
+ /**
6
+ * General
7
+ * ----------------------------------------------------------------------------
8
+ */
9
+ #icon-codepress-admin-columns {
10
+ background: transparent url('../images/icon.png') no-repeat 0 0;
11
+ }
12
+ .cpac-settings-link {
13
+ float: right;
14
+ margin: 12px 14px 5px 0;
15
+ background: transparent url('../images/settings.png') no-repeat 0 0;
16
+ padding-left: 20px;
17
+ text-decoration: none;
18
+ display: inline-block;
19
+ line-height: 16px;
20
+ }
21
+ .cpac-settings-link.current {
22
+ font-weight: bold;
23
+ }
24
+ .rtl .cpac-settings-link {
25
+ float: left;
26
+ margin: 12px 0 5px 14px;
27
+ padding-right: 20px;
28
+ padding-left: 0;
29
+ }
30
+ a.help {
31
+ background: transparent url('../images/help.png') no-repeat 0 0;
32
+ display: inline-block;
33
+ width: 16px;
34
+ height: 16px;
35
+ }
36
+ .button.loading {
37
+ padding-right: 25px;
38
+ position: relative;
39
+ }
40
+ .rtl .button.loading {
41
+ padding-left: 25px;
42
+ padding-right: 0;
43
+ }
44
+ .button.loading span {
45
+ position: absolute;
46
+ top: 2px;
47
+ right: 6px;
48
+ background: transparent url('../images/loading.gif') no-repeat right 50%;
49
+ width: 16px;
50
+ height: 16px;
51
+ display: inline-block;
52
+ }
53
+ .rtl .button.loading span {
54
+ left: 6px;
55
+ right: auto;
56
+ }
57
+ /**
58
+ * Icons
59
+ * ----------------------------------------------------------------------------
60
+ */
61
+ .icon-yes {
62
+ background: transparent url(../images/yes.png) no-repeat 0 0;
63
+ width: 16px;
64
+ height: 16px;
65
+ display: inline-block;
66
+ position: relative;
67
+ top: 2px;
68
+ }
69
+ .icon-no {
70
+ background: transparent url(../images/no.png) no-repeat 0 0;
71
+ width: 16px;
72
+ height: 16px;
73
+ display: inline-block;
74
+ position: relative;
75
+ top: 2px;
76
+ }
77
+ /**
78
+ * Header
79
+ * ----------------------------------------------------------------------------
80
+ */
81
+ h2.cpac-nav-tab-wrapper {
82
+ margin-bottom: 10px;
83
+ }
84
+ /**
85
+ * Menu
86
+ * ----------------------------------------------------------------------------
87
+ */
88
+ .cpac-menu {
89
+ clear: both;
90
+ overflow: hidden;
91
+ margin-bottom: 10px;
92
+ }
93
+ .cpac-menu .subsubsub {
94
+ white-space: normal;
95
+ margin-right: 14px;
96
+ width: 100%;
97
+ margin: 0 14px 0 0;
98
+ }
99
+ .cpac-menu .subsubsub li.first {
100
+ font-weight: bold;
101
+ min-width: 90px;
102
+ }
103
+ /**
104
+ * Structure
105
+ * ----------------------------------------------------------------------------
106
+ */
107
+ .columns-container {
108
+ margin-right: 300px;
109
+ max-width: 700px;
110
+ }
111
+ .columns-container .columns-left {
112
+ float: left;
113
+ width: 100%;
114
+ }
115
+ .columns-container .columns-right {
116
+ float: right;
117
+ margin-right: -300px;
118
+ width: 280px;
119
+ }
120
+ .columns-container .columns-right .columns-right-inside.fixed {
121
+ position: fixed;
122
+ top: 40px;
123
+ width: 280px;
124
+ }
125
+ /**
126
+ * UI Sortable Plugin
127
+ * ----------------------------------------------------------------------------
128
+ */
129
+ .ui-sortable-helper {
130
+ -webkit-box-shadow: 1px 3px 6px 0px rgba(1, 1, 1, 0.4);
131
+ box-shadow: 1px 3px 6px 0px rgba(1, 1, 1, 0.4);
132
+ }
133
+ .ui-sortable-helper .column-meta {
134
+ border-width: 1px;
135
+ }
136
+ .cpac-placeholder {
137
+ visibility: visible !important;
138
+ border-top: 1px solid #dfdfdf;
139
+ padding: 5px 4px 7px 0;
140
+ }
141
+ .cpac-placeholder .inner-placeholder {
142
+ border: 1px dashed #808080;
143
+ background: #eee;
144
+ width: 100%;
145
+ height: 100%;
146
+ }
147
+ .cpac-placeholder :first-child {
148
+ border: none;
149
+ }
150
+ /**
151
+ * Columns
152
+ * ----------------------------------------------------------------------------
153
+ */
154
+ .columns-left .cpac-boxes .cpac-columns form {
155
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
156
+ }
157
+ /**
158
+ * Column
159
+ * ----------------------------------------------------------------------------
160
+ */
161
+ .cpac-column .column-meta {
162
+ border-style: solid;
163
+ border-color: #dfdfdf;
164
+ border-width: 1px 1px 0;
165
+ background: #fcfcfc;
166
+ }
167
+ .cpac-column .column-meta:nth-child(2n) .column-meta {
168
+ background: #f9f9f9;
169
+ }
170
+ .cpac-column .column-meta img {
171
+ margin-right: 3px;
172
+ }
173
+ .cpac-column .column-meta table {
174
+ border: none;
175
+ background: transparent;
176
+ border-radius: 0;
177
+ }
178
+ .cpac-column .column-meta table tr td {
179
+ vertical-align: top;
180
+ height: 18px;
181
+ border: none;
182
+ padding: 11px 8px;
183
+ border-width: 1px 0 0;
184
+ border-style: solid;
185
+ border-color: transparent;
186
+ }
187
+ .cpac-column .column-meta table tr td.column_sort {
188
+ width: 10px;
189
+ background: transparent url('../images/drag.png') no-repeat 8px 8px;
190
+ cursor: move;
191
+ }
192
+ .cpac-column .column-meta table tr td.column_label {
193
+ width: 70%;
194
+ font-weight: bold;
195
+ vertical-align: middle;
196
+ position: relative;
197
+ }
198
+ .cpac-column .column-meta table tr td.column_label .inner {
199
+ position: relative;
200
+ overflow: hidden;
201
+ height: 18px;
202
+ }
203
+ .cpac-column .column-meta table tr td.column_label .inner > a {
204
+ color: #5a5a5a;
205
+ padding: 0 4px;
206
+ }
207
+ .cpac-column .column-meta table tr td.column_label .inner > a:hover {
208
+ color: #333333;
209
+ }
210
+ .cpac-column .column-meta table tr td.column_label .inner > a.edit-button,
211
+ .cpac-column .column-meta table tr td.column_label .inner > a.remove-button,
212
+ .cpac-column .column-meta table tr td.column_label .inner > a.clone-button {
213
+ display: none;
214
+ color: #a00;
215
+ text-decoration: none;
216
+ text-shadow: none;
217
+ font-weight: normal;
218
+ margin-left: 5px;
219
+ font-size: 12px;
220
+ }
221
+ .cpac-column .column-meta table tr td.column_label .inner > a.edit-button:hover,
222
+ .cpac-column .column-meta table tr td.column_label .inner > a.remove-button:hover,
223
+ .cpac-column .column-meta table tr td.column_label .inner > a.clone-button:hover {
224
+ color: #f00;
225
+ }
226
+ .cpac-column .column-meta table tr td.column_label .inner > a.edit-button,
227
+ .cpac-column .column-meta table tr td.column_label .inner > a.clone-button {
228
+ color: #0074a2;
229
+ }
230
+ .cpac-column .column-meta table tr td.column_label .inner > a.edit-button:hover,
231
+ .cpac-column .column-meta table tr td.column_label .inner > a.clone-button:hover {
232
+ color: #2ea2cc;
233
+ }
234
+ .cpac-column .column-meta table tr td.column_label .inner .meta {
235
+ display: inline-block;
236
+ float: right;
237
+ font-weight: normal;
238
+ color: #b2b2b2;
239
+ font-size: 12px;
240
+ }
241
+ .cpac-column .column-meta table tr td.column_label .inner .meta span {
242
+ cursor: pointer;
243
+ /*background: #ccc;
244
+ border-radius: 2px;
245
+ padding: 0 4px;
246
+ color: #fff;
247
+ display: inline-block;
248
+ height: 15px;
249
+ line-height: 15px;
250
+
251
+ &.on {
252
+ background: #1e8cbe;
253
+ }*/
254
+ }
255
+ .cpac-column .column-meta table tr td.column_label span.vers {
256
+ float: left;
257
+ }
258
+ .cpac-column .column-meta table tr td.column_type {
259
+ width: auto;
260
+ min-width: 120px;
261
+ text-align: right;
262
+ vertical-align: middle;
263
+ color: #999999;
264
+ padding-right: 0;
265
+ }
266
+ .cpac-column .column-meta table tr td.column_type .inner {
267
+ height: 18px;
268
+ overflow: hidden;
269
+ }
270
+ .cpac-column .column-meta table tr td.column_type .inner a {
271
+ color: #999999;
272
+ }
273
+ .cpac-column .column-meta table tr td.column_edit {
274
+ width: 38px;
275
+ min-width: 38px;
276
+ background: transparent url('../images/arrow.png') no-repeat 23px 18px;
277
+ cursor: pointer;
278
+ }
279
+ .cpac-column .column-meta:hover .column_label .inner > a.remove-button,
280
+ .cpac-column .column-meta:hover .column_label .inner > a.edit-button,
281
+ .cpac-column .column-meta:hover .column_label .inner > a.clone-button {
282
+ display: inline-block;
283
+ }
284
+ .cpac-column .column-meta span.vers {
285
+ padding-top: 2px;
286
+ }
287
+ .cpac-column .column-meta span.vers .comment-grey-bubble {
288
+ background: transparent url("../images/comment-grey-bubble.png") no-repeat 0 0;
289
+ height: 12px;
290
+ width: 12px;
291
+ float: right;
292
+ }
293
+ .cpac-column .column-form {
294
+ display: none;
295
+ border-width: 1px 1px 0;
296
+ border-style: solid;
297
+ border-color: #dfdfdf;
298
+ position: relative;
299
+ }
300
+ .cpac-column .column-form table {
301
+ border: none;
302
+ background: #fcfcfc;
303
+ }
304
+ .cpac-column .column-form table tr td {
305
+ vertical-align: top;
306
+ border: none;
307
+ padding: 8px;
308
+ background: #ffffff;
309
+ border-top: 1px solid #F5F5F5;
310
+ }
311
+ .cpac-column .column-form table tr td select,
312
+ .cpac-column .column-form table tr td input[type=text] {
313
+ width: 99.95%;
314
+ }
315
+ .cpac-column .column-form table tr td select optgroup:nth-child(2n) {
316
+ background: #F9F9F9;
317
+ }
318
+ .cpac-column .column-form table tr td.label {
319
+ position: relative;
320
+ overflow: visible;
321
+ background: #F9F9F9;
322
+ background: #f5f5f5;
323
+ border-right: 1px solid #E1E1E1;
324
+ vertical-align: top;
325
+ width: 34%;
326
+ border-top: 1px solid #F0F0F0;
327
+ }
328
+ .cpac-column .column-form table tr td.label label {
329
+ font-weight: bold;
330
+ color: #333333;
331
+ display: block;
332
+ position: relative;
333
+ }
334
+ .cpac-column .column-form table tr td.label p {
335
+ color: #666666;
336
+ display: block;
337
+ font-size: 12px;
338
+ font-style: normal;
339
+ line-height: 16px;
340
+ margin: 0 !important;
341
+ }
342
+ .cpac-column .column-form table tr td.label p.description {
343
+ display: none;
344
+ position: absolute;
345
+ z-index: 99;
346
+ top: 30px;
347
+ left: 0;
348
+ background: #eaf2fa;
349
+ border-radius: 5px;
350
+ border: 1px solid #c7d7e2;
351
+ padding: 5px 8px !important;
352
+ font-weight: normal;
353
+ }
354
+ .cpac-column .column-form table tr td.label p.description em {
355
+ display: block;
356
+ color: #999;
357
+ }
358
+ .cpac-column .column-form table tr td.input label {
359
+ padding-left: 10px;
360
+ padding-right: 0;
361
+ }
362
+ .cpac-column .column-form table tr td.input div.msg {
363
+ margin-top: 5px;
364
+ display: none;
365
+ color: #333;
366
+ padding: 6px 8px;
367
+ background-color: #ffebe8;
368
+ border: 1px solid #fff;
369
+ -moz-border-radius: 3px;
370
+ -webkit-border-radius: 3px;
371
+ border-radius: 3px;
372
+ }
373
+ .cpac-column .column-form table tr td.input .section {
374
+ padding: 12px;
375
+ }
376
+ .cpac-column .column-form table tr.column_width div.description {
377
+ font-size: 11px;
378
+ width: 12%;
379
+ float: left;
380
+ text-align: middle;
381
+ }
382
+ .cpac-column .column-form table tr.column_width div.input-width-range {
383
+ float: left;
384
+ position: relative;
385
+ width: 87%;
386
+ margin-top: 4px;
387
+ }
388
+ .cpac-column .column-form table tr.column_width div.input-width-range .ui-slider-handle {
389
+ cursor: ew-resize;
390
+ }
391
+ .cpac-column .column-form table tr.column_image_size {
392
+ border: 10px solid red;
393
+ }
394
+ .cpac-column .column-form table tr.column_image_size td.input label.custom-size {
395
+ display: inline-block;
396
+ margin-top: 4px;
397
+ margin-bottom: 4px;
398
+ }
399
+ .cpac-column .column-form table tr.column_image_size td.input label.custom-size input {
400
+ margin-right: 3px;
401
+ }
402
+ .cpac-column .column-form table tr.column_image_size td.input .custom_image_size {
403
+ display: inline-block;
404
+ }
405
+ .cpac-column .column-form table tr.column_image_size td.input .custom_image_size .hidden {
406
+ display: none;
407
+ }
408
+ .cpac-column .column-form table tr.column_image_size td.input .custom_image_size .custom-size-w,
409
+ .cpac-column .column-form table tr.column_image_size td.input .custom_image_size .custom-size-h {
410
+ margin: 0;
411
+ }
412
+ .cpac-column .column-form table tr.column_image_size td.input .custom_image_size .custom-size-w.hidden,
413
+ .cpac-column .column-form table tr.column_image_size td.input .custom_image_size .custom-size-h.hidden {
414
+ display: none;
415
+ }
416
+ .cpac-column .column-form table tr.column_image_size td.input .custom_image_size .custom-size-w input[type="text"],
417
+ .cpac-column .column-form table tr.column_image_size td.input .custom_image_size .custom-size-h input[type="text"] {
418
+ margin-right: 3px;
419
+ width: 40px !important;
420
+ }
421
+ .cpac-column .column-form table tr.column_action td {
422
+ background: #f9f9f9;
423
+ }
424
+ .cpac-column .column-form table tr.column_action td p {
425
+ margin: 0;
426
+ }
427
+ .cpac-column .column-form table tr.column_action td p a.remove-button {
428
+ color: #a00;
429
+ text-decoration: none;
430
+ text-shadow: none;
431
+ font-weight: normal;
432
+ margin-left: 5px;
433
+ font-size: 12px;
434
+ padding: 0 5px;
435
+ }
436
+ .cpac-column .column-form table tr.column_action td p a.remove-button:hover {
437
+ color: #fff;
438
+ background: #f00;
439
+ }
440
+ .cpac-column .column-form table tr:first-child td {
441
+ border-top: none;
442
+ }
443
+ .cpac-column.loading .column-form > .spinner {
444
+ position: absolute;
445
+ left: 50%;
446
+ top: 50%;
447
+ z-index: 200;
448
+ margin-left: -10px;
449
+ margin-top: -10px;
450
+ display: block;
451
+ }
452
+ .cpac-column.loading .column-form:before {
453
+ content: '';
454
+ position: absolute;
455
+ width: 100%;
456
+ height: 100%;
457
+ background: #FFF;
458
+ z-index: 100;
459
+ opacity: 0.5;
460
+ }
461
+ .cpac-column.opened .column-meta {
462
+ background-color: #c7c7c7;
463
+ background-image: -ms-linear-gradient(top, #e9e9e9, #c7c7c7);
464
+ background-image: -moz-linear-gradient(top, #e9e9e9, #c7c7c7);
465
+ background-image: -o-linear-gradient(top, #e9e9e9, #c7c7c7);
466
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#e9e9e9), to(#c7c7c7));
467
+ background-image: -webkit-linear-gradient(top, #e9e9e9, #c7c7c7);
468
+ background-image: linear-gradient(top, #e9e9e9, #c7c7c7);
469
+ border-color: #aeaeae;
470
+ }
471
+ .cpac-column.opened .column-meta table {
472
+ background: transparent;
473
+ }
474
+ .cpac-column.opened .column-meta table td {
475
+ border-color: #f8f8f8;
476
+ color: #333;
477
+ text-shadow: 0 1px 0 #FFFFFF;
478
+ }
479
+ .cpac-column.opened .column-meta table td a {
480
+ color: #333;
481
+ text-shadow: 0 1px 0 #FFFFFF;
482
+ }
483
+ .cpac-column.opened .column-meta table td.column_sort {
484
+ background-position: 8px -39px;
485
+ }
486
+ .cpac-column.opened .column-meta table td.column_label .inner .meta span {
487
+ color: #808080;
488
+ text-shadow: none;
489
+ }
490
+ .cpac-column.opened .column-meta table td.column_type {
491
+ color: #5C5C5C;
492
+ }
493
+ /**
494
+ * Column: Footer
495
+ * ----------------------------------------------------------------------------
496
+ */
497
+ .column-footer {
498
+ background: #EAF2FA;
499
+ border: 1px solid #c7d7e2;
500
+ min-height: 26px;
501
+ padding: 8px;
502
+ overflow: hidden;
503
+ }
504
+ .column-footer .order-message {
505
+ background: transparent url('../images/order_arrow.png') no-repeat 0 0;
506
+ color: #7A9BBE;
507
+ float: left;
508
+ font-family: Comic Sans MS, sans-serif;
509
+ font-size: 11px;
510
+ height: 13px;
511
+ line-height: 1em;
512
+ margin-left: 4px;
513
+ padding: 7px 0 0 22px;
514
+ text-shadow: 0 1px 0 #FFFFFF;
515
+ display: inline-block;
516
+ }
517
+ .column-footer .button-container {
518
+ float: right;
519
+ display: inline-block;
520
+ margin-top: -5px;
521
+ }
522
+ .column-footer .button-container a {
523
+ display: inline-block;
524
+ margin-top: 5px;
525
+ }
526
+ /**
527
+ * Welcome Screen
528
+ * ----------------------------------------------------------------------------
529
+ */
530
+ .cpac-content-body hr {
531
+ -moz-border-bottom-colors: none;
532
+ -moz-border-left-colors: none;
533
+ -moz-border-right-colors: none;
534
+ -moz-border-top-colors: none;
535
+ background: none repeat scroll 0 0 transparent;
536
+ border-color: #dfdfdf -moz-use-text-color -moz-use-text-color;
537
+ border-image: none;
538
+ border-right: 0 none;
539
+ border-style: solid none none;
540
+ border-width: 1px 0 0;
541
+ clear: both;
542
+ margin: 30px 0;
543
+ opacity: 0.2;
544
+ }
545
+ #cpac-welcome.about-wrap div.error {
546
+ display: block !important;
547
+ }
548
+ .cpac-alert {
549
+ display: inline-block;
550
+ background: none repeat scroll 0 0 #FCF8E3;
551
+ border: 1px solid #FBEED5;
552
+ border-radius: 4px 4px 4px 4px;
553
+ color: #C09853;
554
+ margin: 20px 0;
555
+ padding: 16px 14px;
556
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
557
+ }
558
+ .cpac-alert p {
559
+ margin: 0;
560
+ }
561
+ .cpac-alert.cpac-alert-success {
562
+ background-color: #DFF0D8;
563
+ border-color: #D6E9C6;
564
+ color: #468847;
565
+ }
566
+ .cpac-alert.cpac-alert-error {
567
+ background-color: #F2DEDE;
568
+ border-color: #EED3D7;
569
+ color: #B94A48;
570
+ }
571
+ .cpac-alert a.button-primary {
572
+ height: 28px;
573
+ line-height: 28px;
574
+ display: inline-block;
575
+ }
576
+ #cpac-download-add-ons-table {
577
+ max-width: 600px;
578
+ }
579
+ .wp-core-ui .button-large {
580
+ height: 40px;
581
+ line-height: 40px;
582
+ font-size: 16px;
583
+ padding: 0 15px;
584
+ text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);
585
+ }
586
+ /**
587
+ * Notifications
588
+ * ----------------------------------------------------------------------------
589
+ */
590
+ .cac-notification.updated {
591
+ border-left-color: #0071aa;
592
+ }
593
+ .cac-notification.updated .learnmore {
594
+ float: right;
595
+ }
596
+ .cac-notification.updated .learnmore:after {
597
+ content: "\f139";
598
+ font: normal 20px/1 'dashicons';
599
+ float: right;
600
+ }
601
+ /**
602
+ * Sidebar
603
+ * ----------------------------------------------------------------------------
604
+ */
605
+ .columns-right {
606
+ margin-top: 54px;
607
+ }
608
+ .columns-right .sidebox {
609
+ background: none repeat scroll 0 0 #FFFFFF;
610
+ border: 1px solid #E1E1E1;
611
+ border-radius: 0 0 0 0;
612
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
613
+ position: relative;
614
+ margin-bottom: 14px;
615
+ }
616
+ .columns-right .sidebox h3 {
617
+ padding: 10px;
618
+ margin: 0;
619
+ }
620
+ .columns-right .sidebox h3.title {
621
+ font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
622
+ font-size: 15px;
623
+ font-weight: normal;
624
+ line-height: 1;
625
+ margin: 0;
626
+ padding: 7px 10px;
627
+ background: #f1f1f1;
628
+ background-image: -webkit-gradient(linear, left bottom, left top, from(#ececec), to(#f9f9f9));
629
+ background-image: -webkit-linear-gradient(bottom, #ececec, #f9f9f9);
630
+ background-image: -moz-linear-gradient(bottom, #ececec, #f9f9f9);
631
+ background-image: -o-linear-gradient(bottom, #ececec, #f9f9f9);
632
+ background-image: linear-gradient(to top, #ececec, #f9f9f9);
633
+ border-bottom-color: #dfdfdf;
634
+ text-shadow: #fff 0 1px 0;
635
+ -webkit-box-shadow: 0 1px 0 #fff;
636
+ box-shadow: 0 1px 0 #fff;
637
+ border-bottom-style: solid;
638
+ border-bottom-width: 1px;
639
+ }
640
+ .columns-right .sidebox .inside {
641
+ padding: 10px;
642
+ }
643
+ .columns-right .sidebox .inside p {
644
+ margin-top: 0;
645
+ }
646
+ .columns-right .sidebox#form-actions .form-reset {
647
+ border-bottom: 1px solid #F5F5F5;
648
+ padding: 8px;
649
+ }
650
+ .columns-right .sidebox#form-actions .reset-column-type {
651
+ text-decoration: none;
652
+ color: #BC0B0B;
653
+ line-height: 25px;
654
+ display: inline-block;
655
+ }
656
+ .columns-right .sidebox#form-actions .form-update {
657
+ padding: 8px;
658
+ overflow: hidden;
659
+ }
660
+ .columns-right .sidebox#form-actions .submit-update {
661
+ display: block;
662
+ width: 100%;
663
+ height: 28px;
664
+ line-height: 28px;
665
+ text-align: center;
666
+ }
667
+ .columns-right .sidebox#pro-version .cta {
668
+ background: transparent url(../images/get_the_addon.png) no-repeat 0 0;
669
+ background-size: cover;
670
+ }
671
+ .columns-right .sidebox#pro-version .padding-box {
672
+ padding: 8px 15px 0;
673
+ }
674
+ .columns-right .sidebox#pro-version h3 a {
675
+ color: #fff;
676
+ font-size: 19px;
677
+ text-decoration: none;
678
+ font-weight: normal;
679
+ margin-top: 6px;
680
+ }
681
+ .columns-right .sidebox#pro-version .inside ul {
682
+ margin: 0 0 10px 0;
683
+ }
684
+ .columns-right .sidebox#pro-version .inside ul li {
685
+ margin: 0;
686
+ padding: 0;
687
+ }
688
+ .columns-right .sidebox#pro-version .inside ul li a {
689
+ display: inline-block;
690
+ min-height: 24px;
691
+ font-size: 19px;
692
+ line-height: 24px;
693
+ margin-bottom: 1px;
694
+ padding: 0 5px;
695
+ background: #000;
696
+ color: #fff;
697
+ text-decoration: none;
698
+ }
699
+ .columns-right .sidebox#pro-version .inside p {
700
+ color: #fff;
701
+ font-size: 12px;
702
+ }
703
+ .columns-right .sidebox#pro-version .inside p a {
704
+ color: #fff;
705
+ display: inline-block;
706
+ background: #a4c518;
707
+ padding: 0 2px;
708
+ font-size: 15px;
709
+ text-decoration: none;
710
+ }
711
+ .columns-right .sidebox#direct-feedback #feedback-support,
712
+ .columns-right .sidebox#direct-feedback #feedback-rate {
713
+ display: none;
714
+ }
715
+ .columns-right .sidebox#direct-feedback .inside > a {
716
+ border-radius: 4px;
717
+ border: 1px solid #CCC;
718
+ width: 48%;
719
+ height: 64px;
720
+ text-align: center;
721
+ line-height: 64px;
722
+ font-weight: bold;
723
+ color: #222;
724
+ display: inline-block;
725
+ text-decoration: none;
726
+ }
727
+ .columns-right .sidebox#direct-feedback .inside > a:hover {
728
+ background: #FAFAFA;
729
+ }
730
+ .columns-right .sidebox#direct-feedback .inside form textarea {
731
+ width: 100%;
732
+ height: 120px;
733
+ }
734
+ .columns-right .sidebox#direct-feedback .inside form input[type="submit"] {
735
+ float: right;
736
+ border-radius: 4px;
737
+ border: 1px solid #CCC;
738
+ height: 32px;
739
+ text-align: center;
740
+ line-height: 32px;
741
+ font-weight: bold;
742
+ font-size: 12px;
743
+ padding: 0 32px;
744
+ color: #CCC;
745
+ display: inline-block;
746
+ background: none;
747
+ text-decoration: none;
748
+ cursor: pointer;
749
+ }
750
+ .columns-right .sidebox#direct-feedback .inside form input[type="submit"]:hover {
751
+ background: #FAFAFA;
752
+ }
753
+ .columns-right .sidebox#direct-feedback .inside form p.description {
754
+ float: left;
755
+ font-size: 10px;
756
+ }
757
+ .columns-right .sidebox#direct-feedback .inside ul {
758
+ margin: 0;
759
+ }
760
+ .columns-right .sidebox#direct-feedback .inside ul.share li {
761
+ margin: 0;
762
+ display: block;
763
+ float: left;
764
+ margin-left: 9px;
765
+ width: 30%;
766
+ }
767
+ .columns-right .sidebox#direct-feedback .inside ul.share li a {
768
+ text-decoration: none;
769
+ vertical-align: middle;
770
+ line-height: 20px;
771
+ padding: 16px 0;
772
+ width: 100%;
773
+ text-align: center;
774
+ border: 1px solid #CCC;
775
+ border-radius: 4px;
776
+ display: block;
777
+ }
778
+ .columns-right .sidebox#direct-feedback .inside ul.share li a:hover {
779
+ background: #FAFAFA;
780
+ }
781
+ .columns-right .sidebox#direct-feedback .inside ul.share li:first-child {
782
+ margin-left: 0;
783
+ }
784
+ .columns-right .sidebox#direct-feedback #feedback-support .inside ul.share li {
785
+ width: 48%;
786
+ }
787
+ /**
788
+ * Setting Tab
789
+ * ----------------------------------------------------------------------------
790
+ */
791
+ table.cpac-form-table {
792
+ max-width: 1100px;
793
+ margin-top: 20px;
794
+ }
795
+ table.cpac-form-table > tbody > tr > td,
796
+ table.cpac-form-table > tbody > tr > th {
797
+ vertical-align: top;
798
+ }
799
+ table.cpac-form-table td.padding-22 {
800
+ padding-top: 22px;
801
+ }
802
+ table.cpac-form-table td .cpac_export .ms-container {
803
+ background: transparent url('../images/switch_bw.png') no-repeat 50% 50%;
804
+ }
805
+ table.cpac-form-table td .cpac_export .ms-container .ms-selectable {
806
+ width: 48%;
807
+ margin-right: 0;
808
+ }
809
+ table.cpac-form-table td .cpac_export .ms-container .ms-selection {
810
+ float: right;
811
+ width: 48%;
812
+ }
813
+ table.cpac-form-table td .cpac_export .ms-container ul.ms-list {
814
+ width: 100%;
815
+ }
816
+ table.cpac-form-table td .cpac_export .ms-container ul.ms-list li {
817
+ margin: 0;
818
+ padding-top: 5px;
819
+ padding-bottom: 5px;
820
+ }
821
+ table.cpac-form-table.settings tr td {
822
+ padding-top: 74px;
823
+ }
824
+ table.cpac-form-table.settings tr:first-child th {
825
+ padding-top: 0;
826
+ }
827
+ table.cpac-form-table.settings tr:first-child td {
828
+ padding-top: 54px;
829
+ }
830
+ /**
831
+ * WP Pointer
832
+ * ----------------------------------------------------------------------------
833
+ */
834
+ .wp-pointer-content {
835
+ overflow: hidden;
836
+ }
837
+ .wp-pointer-content ol {
838
+ margin-left: 1.5em;
839
+ padding: 0 15px;
840
+ }
841
+ .wp-pointer-right {
842
+ margin-right: 15px;
843
+ }
844
+ /* =RTL language
845
+ -------------------------------------------------------------- */
846
+ body.rtl .wp-pointer-right {
847
+ margin-left: 15px;
848
+ margin-right: 0;
849
+ }
850
+ body.rtl .wp-pointer-right ol {
851
+ margin-right: 1.5em;
852
+ margin-left: 0;
853
+ }
854
+ body.rtl .cpac-menu .subsubsub {
855
+ margin-left: 14px;
856
+ margin-right: 0;
857
+ }
858
+ body.rtl .columns-container {
859
+ margin-left: 300px;
860
+ margin-right: 0;
861
+ }
862
+ body.rtl .columns-left {
863
+ float: right;
864
+ }
865
+ body.rtl .columns-left .cpac-columns .cpac-column .column-meta img {
866
+ margin-left: 3px;
867
+ margin-right: 0;
868
+ }
869
+ body.rtl .columns-left .cpac-columns .cpac-column .column-meta .column_label .inner > a.remove-button {
870
+ margin-right: 12px;
871
+ margin-left: 0;
872
+ }
873
+ body.rtl .columns-left .cpac-columns .cpac-column .column-meta .column_label .inner .meta {
874
+ float: left;
875
+ }
876
+ body.rtl .columns-left .cpac-columns .cpac-column .column-meta .column_label span.vers {
877
+ float: right;
878
+ }
879
+ body.rtl .columns-left .cpac-columns .cpac-column .column-meta .column_type {
880
+ text-align: left;
881
+ padding-left: 0;
882
+ padding-right: auto;
883
+ }
884
+ body.rtl .columns-left .cpac-columns .cpac-column .column-meta span.vers .comment-grey-bubble {
885
+ float: left;
886
+ }
887
+ body.rtl .columns-left .cpac-columns .cpac-column .column-form table tr.column_image_size td.input label input {
888
+ margin-left: 3px;
889
+ margin-right: 0;
890
+ }
891
+ body.rtl .columns-left .cpac-columns .cpac-column .column-form table tr td.label p.description {
892
+ right: 0;
893
+ left: auto;
894
+ }
895
+ body.rtl .columns-left .cpac-columns .cpac-column .column-form table tr td.label a.more-info {
896
+ float: left;
897
+ }
898
+ body.rtl .columns-left .cpac-columns .cpac-column .column-form div.description {
899
+ float: right;
900
+ }
901
+ body.rtl .columns-left .cpac-columns .cpac-column .column-form div.input-width-range {
902
+ float: right;
903
+ }
904
+ body.rtl .columns-left .cpac-columns .cpac-column .column-form tr td.input label {
905
+ padding-left: 10px;
906
+ padding-right: 0;
907
+ }
908
+ body.rtl .columns-left .cpac-columns .cpac-column .column-form a.help {
909
+ float: left;
910
+ }
911
+ body.rtl .columns-left .column-footer .order-message {
912
+ float: right;
913
+ padding-right: 22px;
914
+ padding-left: 0;
915
+ background: transparent url('../images/order_arrow-rtl.png') no-repeat right top;
916
+ }
917
+ body.rtl .columns-left .column-footer .button-container {
918
+ float: left;
919
+ }
920
+ body.rtl .columns-right {
921
+ float: left;
922
+ margin-left: -300px;
923
+ margin-right: 0;
924
+ }
925
+ body.rtl .cpac-placeholder {
926
+ padding: 5px 0 7px 4px;
927
+ }
928
+ body.rtl .cpac_export .ms-container .ms-selection {
929
+ float: left;
930
+ }
931
+ /* =Responsive
932
+ -------------------------------------------------------------- */
933
+ @media only screen and (max-width: 900px) {
934
+ .columns-container {
935
+ margin-right: 0;
936
+ }
937
+ .columns-container .columns-left {
938
+ float: none;
939
+ }
940
+ .columns-container .columns-right {
941
+ float: none;
942
+ margin-top: 0;
943
+ margin-right: 0;
944
+ width: 100%;
945
+ }
946
+ .columns-container .columns-right .columns-right-inside.fixed {
947
+ position: relative;
948
+ top: 0;
949
+ width: 100%;
950
+ }
951
+ }
952
+ /* =Addons
953
+ -------------------------------------------------------------- */
954
+ .cpac-addons li {
955
+ width: 200px;
956
+ background: #FFF;
957
+ float: left;
958
+ margin-right: 16px;
959
+ margin-bottom: 16px;
960
+ border: 1px solid #DDD;
961
+ -webkit-box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.15);
962
+ -moz-box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.15);
963
+ box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.15);
964
+ }
965
+ .cpac-addons li:hover {
966
+ -webkit-box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.25);
967
+ -moz-box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.25);
968
+ box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.25);
969
+ }
970
+ .cpac-addons li a {
971
+ color: #444;
972
+ }
973
+ .cpac-addons li .cpac-addon-content {
974
+ display: table;
975
+ width: 100%;
976
+ height: 125px;
977
+ text-align: center;
978
+ vertical-align: middle;
979
+ border-top: 1px solid #DDD;
980
+ background: #0069a4;
981
+ background: -moz-radial-gradient(center, ellipse cover, #0069a4 0%, #085079 100%);
982
+ background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #0069a4), color-stop(100%, #085079));
983
+ background: -webkit-radial-gradient(center, ellipse cover, #0069a4 0%, #085079 100%);
984
+ background: -o-radial-gradient(center, ellipse cover, #0069a4 0%, #085079 100%);
985
+ background: -ms-radial-gradient(center, ellipse cover, #0069a4 0%, #085079 100%);
986
+ background: radial-gradient(ellipse at center, #0069a4 0%, #085079 100%);
987
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0069a4', endColorstr='#085079', GradientType=1);
988
+ }
989
+ .cpac-addons li .cpac-addon-content > * {
990
+ display: table-cell;
991
+ vertical-align: middle;
992
+ }
993
+ .cpac-addons li .cpac-addon-content h3 {
994
+ padding: 0 16px;
995
+ color: #FFF;
996
+ line-height: 150%;
997
+ }
998
+ .cpac-addons li .cpac-addon-content img {
999
+ width: 100%;
1000
+ }
1001
+ .cpac-addons li .cpac-addon-header {
1002
+ width: 100%;
1003
+ padding: 25px 15px;
1004
+ -moz-box-sizing: border-box;
1005
+ box-sizing: border-box;
1006
+ }
1007
+ .cpac-addons li .cpac-addon-header > *:first-child {
1008
+ margin-top: 0;
1009
+ }
1010
+ .cpac-addons li .cpac-addon-header > *:last-child {
1011
+ margin-bottom: 0;
1012
+ }
1013
+ .cpac-addons li .cpac-addon-actions {
1014
+ background: #EEE;
1015
+ border-top: 1px solid #DDD;
1016
+ padding: 8px;
1017
+ }
1018
+ .cpac-addons li .cpac-addon-actions .cpac-installed:before {
1019
+ content: "\f147";
1020
+ font-family: 'dashicons';
1021
+ vertical-align: middle;
1022
+ margin-left: -5px;
1023
+ margin-right: 3px;
1024
+ }
assets/js/admin-settings.js CHANGED
@@ -4,8 +4,9 @@
4
  */
5
  jQuery(document).ready(function() {
6
 
7
- if ( jQuery('#cpac').length === 0 )
8
  return false;
 
9
 
10
  // General
11
  cpac_pointer();
@@ -27,6 +28,7 @@ jQuery(document).ready(function() {
27
  jQuery('.cpac-column').each( function( i, col ) {
28
  jQuery( col ).column_bind_toggle();
29
  jQuery( col ).column_bind_remove();
 
30
  jQuery( col ).cpac_bind_container_addon_events();
31
  });
32
  });
@@ -91,6 +93,28 @@ jQuery.fn.column_bind_remove = function() {
91
  });
92
  };
93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  jQuery.fn.cpac_column_refresh = function() {
95
  var el = jQuery( this );
96
 
@@ -114,6 +138,7 @@ jQuery.fn.cpac_column_refresh = function() {
114
  // Bind events
115
  el.column_bind_toggle();
116
  el.column_bind_remove();
 
117
  el.column_bind_events();
118
 
119
  // Remove "loading" marking from column
@@ -259,6 +284,57 @@ jQuery.fn.column_remove = function() {
259
  });
260
  };
261
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
262
  /*
263
  * Update clone ID
264
  *
@@ -322,48 +398,55 @@ jQuery.fn.cpac_update_clone_id = function( storage_model ) {
322
  });
323
  };
324
 
325
- /*
326
- * Add Column
327
- *
328
- * @since 2.0
329
- */
330
- function cpac_add_column() {
331
 
332
- jQuery('#cpac .add_column').click( function(e){
 
333
 
334
- var container = jQuery(this).closest('.columns-container');
 
 
335
 
336
- var clone = jQuery('.for-cloning-only .cpac-column', container ).first().clone();
 
337
 
338
- var storage_model = container.attr('data-type');
 
339
 
340
- if ( clone.length > 0 ) {
 
341
 
342
- // increment clone id ( before adding to DOM, otherwise radio buttons will reset )
343
- clone.cpac_update_clone_id( storage_model );
344
 
345
- // add to DOM
346
- jQuery('.cpac-columns form', container).append( clone );
347
 
348
- // rebind toggle events
349
- clone.column_bind_toggle();
350
 
351
- // rebind remove events
352
- clone.column_bind_remove();
 
353
 
354
- // rebind all other events
355
- clone.column_bind_events();
356
 
357
- // open settings
358
- clone.addClass('opened').find('.column-form').slideDown(150, function(){
359
- jQuery('html, body').animate({ scrollTop: clone.offset().top - 58 }, 300);
360
- });
 
 
361
 
362
- cpac_sortable();
 
 
363
 
364
- // hook for addons
365
- jQuery(document).trigger( 'column_add', clone );
366
- }
 
367
 
368
  e.preventDefault();
369
  });
@@ -539,7 +622,7 @@ function cpac_sortable() {
539
  }
540
  else {
541
  jQuery( this ).sortable( {
542
- items : '.cpac-column'
543
  } );
544
  }
545
  } );
4
  */
5
  jQuery(document).ready(function() {
6
 
7
+ if ( jQuery('#cpac').length === 0 ) {
8
  return false;
9
+ }
10
 
11
  // General
12
  cpac_pointer();
28
  jQuery('.cpac-column').each( function( i, col ) {
29
  jQuery( col ).column_bind_toggle();
30
  jQuery( col ).column_bind_remove();
31
+ jQuery( col ).column_bind_clone();
32
  jQuery( col ).cpac_bind_container_addon_events();
33
  });
34
  });
93
  });
94
  };
95
 
96
+ /**
97
+ * Column: bind clone events
98
+ *
99
+ * @since NEWVERSION
100
+ */
101
+ jQuery.fn.column_bind_clone = function() {
102
+
103
+ jQuery( this ).find( '.clone-button' ).click( function( e ) {
104
+ var column, clone;
105
+
106
+ e.preventDefault();
107
+
108
+ column = jQuery( this ).closest( '.cpac-column' );
109
+
110
+ clone = column.column_clone();
111
+
112
+ if ( typeof clone !== 'undefined' ) {
113
+ clone.removeClass( 'loading' ).hide().slideDown();
114
+ }
115
+ } );
116
+ };
117
+
118
  jQuery.fn.cpac_column_refresh = function() {
119
  var el = jQuery( this );
120
 
138
  // Bind events
139
  el.column_bind_toggle();
140
  el.column_bind_remove();
141
+ el.column_bind_clone();
142
  el.column_bind_events();
143
 
144
  // Remove "loading" marking from column
284
  });
285
  };
286
 
287
+ /*
288
+ * Column: clone
289
+ *
290
+ * @since NEWVERSION
291
+ */
292
+ jQuery.fn.column_clone = function() {
293
+
294
+ var container = jQuery( this ).closest( '.columns-container' );
295
+ var column = jQuery( this );
296
+
297
+ if ( typeof column.attr( 'data-clone' ) === 'undefined' ) {
298
+ var message = cpac_i18n.clone.replace( '%s', '<strong>' + column.find( '.column_label .toggle' ).text() + '</strong>' );
299
+ /*var el_message = jQuery( '<div class="cpac_message error"><p>' + message + '</p></div>' );
300
+
301
+ container.find( '.cpac-boxes' ).before( el_message );
302
+ el_message.hide().slideDown().delay( 2500 ).slideUp( function() {
303
+ jQuery( this ).remove();
304
+ } );*/
305
+
306
+ column.addClass( 'opened' ).find( '.column-form' ).slideDown( 150 );
307
+ column.find( '.msg' ).html( message ).show();
308
+
309
+ return;
310
+ }
311
+
312
+ var clone = jQuery( this ).clone();
313
+
314
+ clone.cpac_update_clone_id( container.attr( 'data-type' ) );
315
+ jQuery( this ).after( clone );
316
+
317
+ // rebind toggle events
318
+ clone.column_bind_toggle();
319
+
320
+ // rebind remove events
321
+ clone.column_bind_remove();
322
+
323
+ // rebind clone events
324
+ clone.column_bind_clone();
325
+
326
+ // rebind all other events
327
+ clone.column_bind_events();
328
+
329
+ // reinitialize sortability
330
+ cpac_sortable();
331
+
332
+ // hook for addons
333
+ jQuery( document ).trigger( 'column_add', clone );
334
+
335
+ return clone;
336
+ };
337
+
338
  /*
339
  * Update clone ID
340
  *
398
  });
399
  };
400
 
401
+ function cpac_create_column( container ) {
 
 
 
 
 
402
 
403
+ var clone = jQuery( '.for-cloning-only .cpac-column', container ).first().clone();
404
+ var storage_model = container.attr( 'data-type' );
405
 
406
+ if ( clone.length > 0 ) {
407
+ // increment clone id ( before adding to DOM, otherwise radio buttons will reset )
408
+ clone.cpac_update_clone_id( storage_model );
409
 
410
+ // add to DOM
411
+ jQuery( '.cpac-columns form', container ).append( clone );
412
 
413
+ // rebind toggle events
414
+ clone.column_bind_toggle();
415
 
416
+ // rebind remove events
417
+ clone.column_bind_remove();
418
 
419
+ // rebind clone events
420
+ clone.column_bind_clone();
421
 
422
+ // rebind all other events
423
+ clone.column_bind_events();
424
 
425
+ // reinitialize sortability
426
+ cpac_sortable();
427
 
428
+ // hook for addons
429
+ jQuery( document ).trigger( 'column_add', clone );
430
+ }
431
 
432
+ return clone;
433
+ }
434
 
435
+ /*
436
+ * Add Column
437
+ *
438
+ * @since 2.0
439
+ */
440
+ function cpac_add_column() {
441
 
442
+ jQuery( '#cpac .add_column' ).click( function( e ) {
443
+ var container = jQuery( this ).closest( '.columns-container' );
444
+ var clone = cpac_create_column( container );
445
 
446
+ // open settings
447
+ clone.addClass('opened').find('.column-form').slideDown(150, function(){
448
+ jQuery('html, body').animate({ scrollTop: clone.offset().top - 58 }, 300);
449
+ });
450
 
451
  e.preventDefault();
452
  });
622
  }
623
  else {
624
  jQuery( this ).sortable( {
625
+ items : '.cpac-column'
626
  } );
627
  }
628
  } );
assets/js/admin-settings.min.js CHANGED
@@ -1,4 +1,4 @@
1
  /*
2
  * Fires when the dom is ready
3
  *
4
- */function cpac_importexport(){jQuery("#php-export-results textarea").on("focus, mouseup",function(){jQuery(this).select()}).select().focus()}function cpac_addons(){}function cpac_submit_form(){jQuery(".form-update a.submit-update").click(function(e){e.preventDefault();jQuery(this).closest(".columns-container").find(".cpac-columns form").submit()})}function cpac_add_column(){jQuery("#cpac .add_column").click(function(e){var t=jQuery(this).closest(".columns-container"),n=jQuery(".for-cloning-only .cpac-column",t).first().clone(),r=t.attr("data-type");if(n.length>0){n.cpac_update_clone_id(r);jQuery(".cpac-columns form",t).append(n);n.column_bind_toggle();n.column_bind_remove();n.column_bind_events();n.addClass("opened").find(".column-form").slideDown(150,function(){jQuery("html, body").animate({scrollTop:n.offset().top-58},300)});cpac_sortable();jQuery(document).trigger("column_add",n)}e.preventDefault()})}function cpac_sidebar_feedback(){jQuery(function(e){var t=e(".sidebox#direct-feedback");t.find("#feedback-choice a.no").click(function(e){e.preventDefault();t.find("#feedback-choice").slideUp();t.find("#feedback-support").slideDown()});t.find("#feedback-choice a.yes").click(function(e){e.preventDefault();t.find("#feedback-choice").slideUp();t.find("#feedback-rate").slideDown()})})}function cpac_clear_input_defaults(){jQuery.fn.cleardefault=function(){return this.focus(function(){this.value==this.defaultValue&&(this.value="")}).blur(function(){this.value.length||(this.value=this.defaultValue)})};jQuery("#cpac-box-plugin_settings .addons input").cleardefault()}function cpac_help(){jQuery("#cpac a.help").click(function(e){e.preventDefault();var t=jQuery("#contextual-help-wrap");t.parent().show();jQuery('a[href="#tab-panel-cpac-'+jQuery(this).attr("data-help")+'"]',t).trigger("click");t.slideDown("fast",function(){t.focus()})})}function cpac_pointer(){jQuery(".cpac-pointer").each(function(){var e=jQuery(this),t=e.attr("rel"),n=e.attr("data-pos"),r={at:"left top",my:"right top",edge:"right",offset:"0 0"};"right"==n&&(r={at:"right middle",my:"left middle",edge:"left"});e.pointer({content:jQuery("#"+t).html(),position:r,pointerWidth:250,close:function(){e.removeClass("open")},pointerClass:"wp-pointer wp-pointer-"+r.edge});e.click(function(){e.hasClass("open")?e.removeClass("open"):e.addClass("open")});e.hover(function(){jQuery(this).pointer("open")},function(){e.hasClass("open")||jQuery(this).pointer("close")})})}function cpac_sortable(){jQuery("div.cpac-columns").each(function(){jQuery(this).hasClass("ui-sortable")?jQuery(this).sortable("refresh"):jQuery(this).sortable({items:".cpac-column"})})}function cpac_menu(){var e=jQuery("#cpac div.cpac-menu");e.find("a").click(function(e,t){var n=jQuery(this).attr("href");if(n){var r=n.replace("#cpac-box-","");jQuery(".cpac-menu a").removeClass("current");jQuery(".columns-container").hide();jQuery(this).addClass("current");var i=jQuery('.columns-container[data-type="'+r+'"]').show(),s=i.find(".cpac-columns");jQuery(document).trigger("cac_menu_change",s)}e.preventDefault()});e.find("a.current").trigger("click")}jQuery(document).ready(function(){if(jQuery("#cpac").length===0)return!1;cpac_pointer();cpac_submit_form();cpac_clear_input_defaults();cpac_sortable();cpac_menu();cpac_help();cpac_add_column();cpac_addons();cpac_importexport();cpac_sidebar_feedback();jQuery(".cpac-column").each(function(e,t){jQuery(t).column_bind_toggle();jQuery(t).column_bind_remove();jQuery(t).cpac_bind_container_addon_events()})});jQuery.fn.column_bind_toggle=function(){var e=jQuery(this);e.find("td.column_type a, td.column_edit, td.column_label a.toggle, td.column_label .edit-button").click(function(t){t.preventDefault();e.toggleClass("opened").find(".column-form").slideToggle(150);e.hasClass("events-binded")||e.column_bind_events();e.addClass("events-binded");jQuery(document).trigger("column_init",e)})};jQuery.fn.column_bind_remove=function(){jQuery(this).find(".remove-button").click(function(e){jQuery(this).closest(".cpac-column").column_remove();e.preventDefault()})};jQuery.fn.cpac_column_refresh=function(){var e=jQuery(this);e.addClass("loading");e.find(".column-form").prepend('<span class="spinner" />');jQuery.post(ajaxurl,{plugin_id:"cpac",action:"cpac_column_refresh",column:jQuery(this).find("input.column-name").val(),formdata:jQuery(this).parents("form").serialize()},function(t){var n=jQuery("<div>"+t+"</div>").children();e.replaceWith(n);e=n;e.column_bind_toggle();e.column_bind_remove();e.column_bind_events();e.removeClass("loading").addClass("opened").find(".column-form").show();jQuery(document).trigger("column_change",e)})};jQuery.fn.column_bind_events=function(){var e=jQuery(this),t=e.closest(".columns-container "),n=t.attr("data-type"),r=e.find(".column_type select option:selected").val();e.find(".column_type select").change(function(){var i=jQuery("optgroup",this).children(":selected"),s=i.val(),o=i.text(),u=jQuery(this).next(".msg").hide(),a=t.find('.for-cloning-only .cpac-column[data-type="'+s+'"]');if(a.length)if(a.find(".is-disabled").length){u.html(a.find(".is-disabled").html()).show();jQuery(this).find("option").removeAttr("selected");jQuery(this).find('option[value="'+r+'"]').attr("selected","selected")}else{if(typeof a.attr("data-clone")=="undefined"&&jQuery(".cpac-columns",t).find('[data-type="'+s+'"]').length){u.html(cpac_i18n.clone.replace("%s","<strong>"+o+"</strong>")).show();jQuery(this).find("option").removeAttr("selected");jQuery(this).find('option[value="'+r+'"]').attr("selected","selected");return}var f=a.clone();f.addClass("opened").find(".column-form").show();f.find(".column-meta").replaceWith(e.find(".column-meta"));f.find(".column-form").replaceWith(e.find(".column-form"));f.cpac_update_clone_id(n);e.replaceWith(f);f.cpac_column_refresh()}});e.find(".column_label .input input").bind("keyup change",function(){var e=jQuery(this).val();jQuery(this).closest(".cpac-column").find("td.column_label .inner > a.toggle").text(e)});e.find(".input-width-range").each(function(){var e=jQuery(this).closest("td").find(".input-width"),t=jQuery(this).closest("td").find(".width-decription"),n=jQuery(e)[0].defaultValue,r=t.attr("title");jQuery(this).slider({range:"min",min:0,max:100,value:n,slide:function(n,i){var s=i.value>0?i.value+"%":r;jQuery(e).val(i.value);jQuery(t).text(s)}})});e.find(".column_image_size label.custom-size").click(function(){var e=jQuery(this).closest(".input");if(jQuery(this).hasClass("image-size-custom")){jQuery(".custom-size-w",e).removeClass("hidden");jQuery(".custom-size-h",e).removeClass("hidden")}else{jQuery(".custom-size-w",e).addClass("hidden");jQuery(".custom-size-h",e).addClass("hidden")}});e.find(".column-form .label label").hover(function(){jQuery(this).find("p.description").show()},function(){jQuery(this).find("p.description").hide()});e.find(".column_type select").val()=="column-meta"&&e.find(".column_field_type select").change(function(){e.cpac_column_refresh()})};jQuery.fn.column_remove=function(){jQuery(this).addClass("deleting").animate({opacity:0,height:0},350,function(e){jQuery(this).remove()})};jQuery.fn.cpac_update_clone_id=function(e){var t=jQuery(this),n=t.attr("data-type"),r=jQuery('.columns-container[data-type="'+e+'"]').find(".cpac-columns"),i=jQuery(r).find('*[data-type="'+n+'"]').not(t),s=jQuery.map(i,function(e,t){return jQuery(e).attr("data-clone")?parseInt(jQuery(e).attr("data-clone"),10):0});s.sort();var o=Math.max.apply(null,s)+1;for(var u=0;u<=o;u++)if(-1===jQuery.inArray(u,s))break;if(0===u)return;t.attr("data-clone",u);t.find("input.clone").val(u);t.find("input.column-name").val(n+"-"+u);var a=t.find("input, select, label");jQuery(a).each(function(e,t){var r=n+"-"+u;jQuery(t).attr("name")&&jQuery(t).attr("name",jQuery(t).attr("name").replace(n,r));jQuery(t).attr("for")&&jQuery(t).attr("for",jQuery(t).attr("for").replace(n,r));jQuery(t).attr("id")&&jQuery(t).attr("id",jQuery(t).attr("id").replace(n,r))})};jQuery(document).bind("column_init column_change column_add",function(e,t){jQuery(t).cpac_bind_column_addon_events();jQuery(t).cpac_bind_container_addon_events()});jQuery.fn.cpac_bind_column_addon_events=function(){var e=jQuery(this),t=e.find("[data-toggle-id] label");t.click(function(){var t=jQuery(this).closest("td.input").data("toggle-id"),n=e.find('[data-indicator-id="'+t+'"]').removeClass("on"),r=jQuery("input",this).val();"on"==r&&n.addClass("on")})};jQuery.fn.cpac_bind_container_addon_events=function(){var e=jQuery(this),t=e.find("[data-indicator-id]");t.unbind("click").click(function(){var t=jQuery(this).data("indicator-id"),n=e.find('[data-toggle-id="'+t+'"] input');if(jQuery(this).hasClass("on")){jQuery(this).removeClass("on").addClass("off");n.filter("[value=off]").prop("checked",!0)}else{jQuery(this).removeClass("off").addClass("on");n.filter("[value=on]").prop("checked",!0)}})};
1
  /*
2
  * Fires when the dom is ready
3
  *
4
+ */function cpac_importexport(){jQuery("#php-export-results textarea").on("focus, mouseup",function(){jQuery(this).select()}).select().focus()}function cpac_submit_form(){jQuery(".form-update a.submit-update").click(function(e){e.preventDefault();jQuery(this).closest(".columns-container").find(".cpac-columns form").submit()})}function cpac_create_column(e){var t=jQuery(".for-cloning-only .cpac-column",e).first().clone(),n=e.attr("data-type");if(t.length>0){t.cpac_update_clone_id(n);jQuery(".cpac-columns form",e).append(t);t.column_bind_toggle();t.column_bind_remove();t.column_bind_clone();t.column_bind_events();cpac_sortable();jQuery(document).trigger("column_add",t)}return t}function cpac_add_column(){jQuery("#cpac .add_column").click(function(e){var t=jQuery(this).closest(".columns-container"),n=cpac_create_column(t);n.addClass("opened").find(".column-form").slideDown(150,function(){jQuery("html, body").animate({scrollTop:n.offset().top-58},300)});e.preventDefault()})}function cpac_sidebar_feedback(){jQuery(function(e){var t=e(".sidebox#direct-feedback");t.find("#feedback-choice a.no").click(function(e){e.preventDefault();t.find("#feedback-choice").slideUp();t.find("#feedback-support").slideDown()});t.find("#feedback-choice a.yes").click(function(e){e.preventDefault();t.find("#feedback-choice").slideUp();t.find("#feedback-rate").slideDown()})})}function cpac_clear_input_defaults(){jQuery.fn.cleardefault=function(){return this.focus(function(){this.value==this.defaultValue&&(this.value="")}).blur(function(){this.value.length||(this.value=this.defaultValue)})};jQuery("#cpac-box-plugin_settings .addons input").cleardefault()}function cpac_help(){jQuery("#cpac a.help").click(function(e){e.preventDefault();var t=jQuery("#contextual-help-wrap");t.parent().show();jQuery('a[href="#tab-panel-cpac-'+jQuery(this).attr("data-help")+'"]',t).trigger("click");t.slideDown("fast",function(){t.focus()})})}function cpac_pointer(){jQuery(".cpac-pointer").each(function(){var e=jQuery(this),t=e.attr("rel"),n=e.attr("data-pos"),r={at:"left top",my:"right top",edge:"right",offset:"0 0"};"right"==n&&(r={at:"right middle",my:"left middle",edge:"left"});e.pointer({content:jQuery("#"+t).html(),position:r,pointerWidth:250,close:function(){e.removeClass("open")},pointerClass:"wp-pointer wp-pointer-"+r.edge});e.click(function(){e.hasClass("open")?e.removeClass("open"):e.addClass("open")});e.hover(function(){jQuery(this).pointer("open")},function(){e.hasClass("open")||jQuery(this).pointer("close")})})}function cpac_sortable(){jQuery("div.cpac-columns").each(function(){jQuery(this).hasClass("ui-sortable")?jQuery(this).sortable("refresh"):jQuery(this).sortable({items:".cpac-column"})})}function cpac_menu(){var e=jQuery("#cpac div.cpac-menu");e.find("a").click(function(e,t){var n=jQuery(this).attr("href");if(n){var r=n.replace("#cpac-box-","");jQuery(".cpac-menu a").removeClass("current");jQuery(".columns-container").hide();jQuery(this).addClass("current");var i=jQuery('.columns-container[data-type="'+r+'"]').show(),s=i.find(".cpac-columns");jQuery(document).trigger("cac_menu_change",s)}e.preventDefault()});e.find("a.current").trigger("click")}jQuery(document).ready(function(){if(jQuery("#cpac").length===0)return!1;cpac_pointer();cpac_submit_form();cpac_clear_input_defaults();cpac_sortable();cpac_menu();cpac_help();cpac_add_column();cpac_importexport();cpac_sidebar_feedback();jQuery(".cpac-column").each(function(e,t){jQuery(t).column_bind_toggle();jQuery(t).column_bind_remove();jQuery(t).column_bind_clone();jQuery(t).cpac_bind_container_addon_events()})});jQuery.fn.column_bind_toggle=function(){var e=jQuery(this);e.find("td.column_type a, td.column_edit, td.column_label a.toggle, td.column_label .edit-button").click(function(t){t.preventDefault();e.toggleClass("opened").find(".column-form").slideToggle(150);e.hasClass("events-binded")||e.column_bind_events();e.addClass("events-binded");jQuery(document).trigger("column_init",e)})};jQuery.fn.column_bind_remove=function(){jQuery(this).find(".remove-button").click(function(e){jQuery(this).closest(".cpac-column").column_remove();e.preventDefault()})};jQuery.fn.column_bind_clone=function(){jQuery(this).find(".clone-button").click(function(e){var t,n;e.preventDefault();t=jQuery(this).closest(".cpac-column");n=t.column_clone();typeof n!="undefined"&&n.removeClass("loading").hide().slideDown()})};jQuery.fn.cpac_column_refresh=function(){var e=jQuery(this);e.addClass("loading");e.find(".column-form").prepend('<span class="spinner" />');jQuery.post(ajaxurl,{plugin_id:"cpac",action:"cpac_column_refresh",column:jQuery(this).find("input.column-name").val(),formdata:jQuery(this).parents("form").serialize()},function(t){var n=jQuery("<div>"+t+"</div>").children();e.replaceWith(n);e=n;e.column_bind_toggle();e.column_bind_remove();e.column_bind_clone();e.column_bind_events();e.removeClass("loading").addClass("opened").find(".column-form").show();jQuery(document).trigger("column_change",e)})};jQuery.fn.column_bind_events=function(){var e=jQuery(this),t=e.closest(".columns-container "),n=t.attr("data-type"),r=e.find(".column_type select option:selected").val();e.find(".column_type select").change(function(){var i=jQuery("optgroup",this).children(":selected"),s=i.val(),o=i.text(),u=jQuery(this).next(".msg").hide(),a=t.find('.for-cloning-only .cpac-column[data-type="'+s+'"]');if(a.length)if(a.find(".is-disabled").length){u.html(a.find(".is-disabled").html()).show();jQuery(this).find("option").removeAttr("selected");jQuery(this).find('option[value="'+r+'"]').attr("selected","selected")}else{if(typeof a.attr("data-clone")=="undefined"&&jQuery(".cpac-columns",t).find('[data-type="'+s+'"]').length){u.html(cpac_i18n.clone.replace("%s","<strong>"+o+"</strong>")).show();jQuery(this).find("option").removeAttr("selected");jQuery(this).find('option[value="'+r+'"]').attr("selected","selected");return}var f=a.clone();f.addClass("opened").find(".column-form").show();f.find(".column-meta").replaceWith(e.find(".column-meta"));f.find(".column-form").replaceWith(e.find(".column-form"));f.cpac_update_clone_id(n);e.replaceWith(f);f.cpac_column_refresh()}});e.find(".column_label .input input").bind("keyup change",function(){var e=jQuery(this).val();jQuery(this).closest(".cpac-column").find("td.column_label .inner > a.toggle").text(e)});e.find(".input-width-range").each(function(){var e=jQuery(this).closest("td").find(".input-width"),t=jQuery(this).closest("td").find(".width-decription"),n=jQuery(e)[0].defaultValue,r=t.attr("title");jQuery(this).slider({range:"min",min:0,max:100,value:n,slide:function(n,i){var s=i.value>0?i.value+"%":r;jQuery(e).val(i.value);jQuery(t).text(s)}})});e.find(".column_image_size label.custom-size").click(function(){var e=jQuery(this).closest(".input");if(jQuery(this).hasClass("image-size-custom")){jQuery(".custom-size-w",e).removeClass("hidden");jQuery(".custom-size-h",e).removeClass("hidden")}else{jQuery(".custom-size-w",e).addClass("hidden");jQuery(".custom-size-h",e).addClass("hidden")}});e.find(".column-form .label label").hover(function(){jQuery(this).find("p.description").show()},function(){jQuery(this).find("p.description").hide()});e.find(".column_type select").val()=="column-meta"&&e.find(".column_field_type select").change(function(){e.cpac_column_refresh()})};jQuery.fn.column_remove=function(){jQuery(this).addClass("deleting").animate({opacity:0,height:0},350,function(e){jQuery(this).remove()})};jQuery.fn.column_clone=function(){var e=jQuery(this).closest(".columns-container"),t=jQuery(this);if(typeof t.attr("data-clone")=="undefined"){var n=cpac_i18n.clone.replace("%s","<strong>"+t.find(".column_label .toggle").text()+"</strong>");t.addClass("opened").find(".column-form").slideDown(150);t.find(".msg").html(n).show();return}var r=jQuery(this).clone();r.cpac_update_clone_id(e.attr("data-type"));jQuery(this).after(r);r.column_bind_toggle();r.column_bind_remove();r.column_bind_clone();r.column_bind_events();cpac_sortable();jQuery(document).trigger("column_add",r);return r};jQuery.fn.cpac_update_clone_id=function(e){var t=jQuery(this),n=t.attr("data-type"),r=jQuery('.columns-container[data-type="'+e+'"]').find(".cpac-columns"),i=jQuery(r).find('*[data-type="'+n+'"]').not(t),s=jQuery.map(i,function(e,t){return jQuery(e).attr("data-clone")?parseInt(jQuery(e).attr("data-clone"),10):0});s.sort();var o=Math.max.apply(null,s)+1;for(var u=0;u<=o;u++)if(-1===jQuery.inArray(u,s))break;if(0===u)return;t.attr("data-clone",u);t.find("input.clone").val(u);t.find("input.column-name").val(n+"-"+u);var a=t.find("input, select, label");jQuery(a).each(function(e,t){var r=n+"-"+u;jQuery(t).attr("name")&&jQuery(t).attr("name",jQuery(t).attr("name").replace(n,r));jQuery(t).attr("for")&&jQuery(t).attr("for",jQuery(t).attr("for").replace(n,r));jQuery(t).attr("id")&&jQuery(t).attr("id",jQuery(t).attr("id").replace(n,r))})};jQuery(document).bind("column_init column_change column_add",function(e,t){jQuery(t).cpac_bind_column_addon_events();jQuery(t).cpac_bind_container_addon_events()});jQuery.fn.cpac_bind_column_addon_events=function(){var e=jQuery(this),t=e.find("[data-toggle-id] label");t.click(function(){var t=jQuery(this).closest("td.input").data("toggle-id"),n=e.find('[data-indicator-id="'+t+'"]').removeClass("on"),r=jQuery("input",this).val();"on"==r&&n.addClass("on")})};jQuery.fn.cpac_bind_container_addon_events=function(){var e=jQuery(this),t=e.find("[data-indicator-id]");t.unbind("click").click(function(){var t=jQuery(this).data("indicator-id"),n=e.find('[data-toggle-id="'+t+'"] input');if(jQuery(this).hasClass("on")){jQuery(this).removeClass("on").addClass("off");n.filter("[value=off]").prop("checked",!0)}else{jQuery(this).removeClass("off").addClass("on");n.filter("[value=on]").prop("checked",!0)}})};
assets/less/admin-column.less CHANGED
@@ -245,7 +245,8 @@ h2.cpac-nav-tab-wrapper {
245
  }
246
 
247
  &.edit-button,
248
- &.remove-button {
 
249
  display: none;
250
  color: #a00;
251
  text-decoration: none;
@@ -259,7 +260,8 @@ h2.cpac-nav-tab-wrapper {
259
  }
260
  }
261
 
262
- &.edit-button {
 
263
  color: #0074a2;
264
 
265
  &:hover {
@@ -330,10 +332,9 @@ h2.cpac-nav-tab-wrapper {
330
 
331
  &:hover {
332
  .column_label .inner > a {
333
- &.remove-button {
334
- display: inline-block;
335
- }
336
- &.edit-button {
337
  display: inline-block;
338
  }
339
  }
245
  }
246
 
247
  &.edit-button,
248
+ &.remove-button,
249
+ &.clone-button {
250
  display: none;
251
  color: #a00;
252
  text-decoration: none;
260
  }
261
  }
262
 
263
+ &.edit-button,
264
+ &.clone-button {
265
  color: #0074a2;
266
 
267
  &:hover {
332
 
333
  &:hover {
334
  .column_label .inner > a {
335
+ &.remove-button,
336
+ &.edit-button,
337
+ &.clone-button {
 
338
  display: inline-block;
339
  }
340
  }
classes/column.php CHANGED
@@ -58,6 +58,15 @@ class CPAC_Column {
58
  */
59
  protected function display_settings() {}
60
 
 
 
 
 
 
 
 
 
 
61
  /**
62
  * Overwrite this function in child class to sanitize
63
  * user submitted values.
@@ -640,6 +649,36 @@ class CPAC_Column {
640
  return $rgb;
641
  }
642
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
643
  /**
644
  * @since 1.0
645
  * @param mixed $meta Image files or Image ID's
@@ -1075,7 +1114,7 @@ class CPAC_Column {
1075
  }
1076
 
1077
  // clone attribute
1078
- $data_clone = $this->properties->is_cloneable ? " data-clone='{$this->properties->clone}'" : '';
1079
 
1080
  ?>
1081
  <div class="cpac-column <?php echo $classes; ?>" data-type="<?php echo $this->properties->type; ?>"<?php echo $data_clone; ?>>
@@ -1110,6 +1149,9 @@ class CPAC_Column {
1110
  </div>
1111
  <a class="toggle" href="javascript:;"><?php echo stripslashes( $this->get_label() ); ?></a>
1112
  <a class="edit-button" href="javascript:;"><?php _e( 'Edit', 'cpac' ); ?></a>
 
 
 
1113
  <a class="remove-button" href="javascript:;"><?php _e( 'Remove', 'cpac' ); ?></a>
1114
  </div>
1115
  </td>
@@ -1188,6 +1230,9 @@ class CPAC_Column {
1188
  <tr class="column_action">
1189
  <td colspan="2">
1190
  <p>
 
 
 
1191
  <a href="javascript:;" class="remove-button"><?php _e( 'Remove' );?></a>
1192
  </p>
1193
  </td>
58
  */
59
  protected function display_settings() {}
60
 
61
+ /**
62
+ * Get the sorting value. This value will be used to sort the column.
63
+ *
64
+ * @since 2.3.2
65
+ * @param int $id Object ID
66
+ * @return string Value for sorting
67
+ */
68
+ public function get_sorting_value( $id ) {}
69
+
70
  /**
71
  * Overwrite this function in child class to sanitize
72
  * user submitted values.
649
  return $rgb;
650
  }
651
 
652
+ /**
653
+ * Count the number of words in a string (multibyte-compatible)
654
+ *
655
+ * @since 2.3
656
+ *
657
+ * @param string $input Input string
658
+ * @return int Number of words
659
+ */
660
+ public function str_count_words( $input ) {
661
+
662
+ $patterns = array(
663
+ 'strip' => '/<[a-zA-Z\/][^<>]*>/',
664
+ 'clean' => '/[0-9.(),;:!?%#$¿\'"_+=\\/-]+/',
665
+ 'w' => '/\S\s+/',
666
+ 'c' => '/\S/'
667
+ );
668
+
669
+ $type = 'w';
670
+
671
+ $input = preg_replace( $patterns['strip'], ' ', $input );
672
+ $input = preg_replace( '/&nbsp;|&#160;/i', ' ', $input );
673
+ $input = preg_replace( $patterns['clean'], '', $input );
674
+
675
+ if ( ! strlen( preg_replace( '/\s/', '', $input ) ) ) {
676
+ return 0;
677
+ }
678
+
679
+ return preg_match_all( $patterns[ $type ], $input, $matches ) + 1;
680
+ }
681
+
682
  /**
683
  * @since 1.0
684
  * @param mixed $meta Image files or Image ID's
1114
  }
1115
 
1116
  // clone attribute
1117
+ $data_clone = $this->properties->is_cloneable ? " data-clone='{$this->properties->clone}'" : '';
1118
 
1119
  ?>
1120
  <div class="cpac-column <?php echo $classes; ?>" data-type="<?php echo $this->properties->type; ?>"<?php echo $data_clone; ?>>
1149
  </div>
1150
  <a class="toggle" href="javascript:;"><?php echo stripslashes( $this->get_label() ); ?></a>
1151
  <a class="edit-button" href="javascript:;"><?php _e( 'Edit', 'cpac' ); ?></a>
1152
+ <?php if ( $this->properties->is_cloneable ) : ?>
1153
+ <a class="clone-button" href="#"><?php _e( 'Clone', 'cpac' ); ?></a>
1154
+ <?php endif; ?>
1155
  <a class="remove-button" href="javascript:;"><?php _e( 'Remove', 'cpac' ); ?></a>
1156
  </div>
1157
  </td>
1230
  <tr class="column_action">
1231
  <td colspan="2">
1232
  <p>
1233
+ <?php if ( $this->properties->is_cloneable ) : ?>
1234
+ <a class="clone-button" href="#"><?php _e( 'Clone', 'cpac' ); ?></a>
1235
+ <?php endif; ?>
1236
  <a href="javascript:;" class="remove-button"><?php _e( 'Remove' );?></a>
1237
  </p>
1238
  </td>
classes/column/actions.php CHANGED
@@ -44,7 +44,15 @@ abstract class CPAC_Column_Actions extends CPAC_Column {
44
  return implode( '', $this->convert_actions_to_icons( $actions ) );
45
  }
46
 
47
- return implode( ' | ', $actions );
 
 
 
 
 
 
 
 
48
  }
49
 
50
  /**
44
  return implode( '', $this->convert_actions_to_icons( $actions ) );
45
  }
46
 
47
+ $i = 0;
48
+ $num_actions = count( $actions );
49
+
50
+ foreach ( $actions as $class => $action ) {
51
+ $actions[ $class ] = '<span class="' . esc_attr( $class ) . '">' . $action . ( $i < $num_actions - 1 ? ' | ' : '' ) . '</span>';
52
+ $i++;
53
+ }
54
+
55
+ return implode( '', $actions );
56
  }
57
 
58
  /**
classes/column/custom-field.php CHANGED
@@ -381,7 +381,7 @@ class CPAC_Column_Custom_Field extends CPAC_Column {
381
  <?php if ( $meta_keys = $this->storage_model->get_meta_keys( $show_hidden_meta ) ) : ?>
382
  <select name="<?php $this->attr_name( 'field' ); ?>" id="<?php $this->attr_id( 'field' ); ?>">
383
  <?php foreach ( $meta_keys as $field ) : ?>
384
- <option value="<?php echo $field ?>"<?php selected( $field, $this->options->field ) ?>><?php echo substr( $field, 0, 10 ) == "cpachidden" ? str_replace( 'cpachidden','', $field ) : $field; ?></option>
385
  <?php endforeach; ?>
386
  </select>
387
  <?php else : ?>
381
  <?php if ( $meta_keys = $this->storage_model->get_meta_keys( $show_hidden_meta ) ) : ?>
382
  <select name="<?php $this->attr_name( 'field' ); ?>" id="<?php $this->attr_id( 'field' ); ?>">
383
  <?php foreach ( $meta_keys as $field ) : ?>
384
+ <option value="<?php echo $field ?>"<?php selected( $field, $this->options->field ) ?>><?php echo substr( $field, 0, 10 ) == "cpachidden" ? str_replace( 'cpachidden', '', $field ) : $field; ?></option>
385
  <?php endforeach; ?>
386
  </select>
387
  <?php else : ?>
classes/column/media/ID.php CHANGED
@@ -15,15 +15,15 @@ class CPAC_Column_Media_ID extends CPAC_Column {
15
  parent::init();
16
 
17
  // Properties
18
- $this->properties['type'] = 'column-mediaid';
19
- $this->properties['label'] = __( 'ID', 'cpac' );
20
  }
21
 
22
  /**
23
  * @see CPAC_Column::get_value()
24
  * @since 2.0
25
  */
26
- function get_value( $media_id ) {
27
 
28
  return $media_id;
29
  }
15
  parent::init();
16
 
17
  // Properties
18
+ $this->properties['type'] = 'column-mediaid';
19
+ $this->properties['label'] = __( 'ID', 'cpac' );
20
  }
21
 
22
  /**
23
  * @see CPAC_Column::get_value()
24
  * @since 2.0
25
  */
26
+ public function get_value( $media_id ) {
27
 
28
  return $media_id;
29
  }
classes/column/media/actions.php CHANGED
@@ -5,57 +5,67 @@
5
  *
6
  * @since 2.0
7
  */
8
- class CPAC_Column_Media_Actions extends CPAC_Column {
9
 
10
  /**
11
- * @see CPAC_Column::init()
12
- * @since 2.2.1
13
  */
14
- public function init() {
15
 
16
- parent::init();
17
 
18
- // Properties
19
- $this->properties['type'] = 'column-actions';
20
- $this->properties['label'] = __( 'Actions', 'cpac' );
21
- }
22
-
23
- /**
24
- * @see CPAC_Column::get_value()
25
- * @since 2.0
26
- */
27
- function get_value( $id ) {
28
-
29
- return $this->get_column_value_actions( $id );
30
- }
31
-
32
- /**
33
- * Get column value of media actions
34
- *
35
- * This part is copied from the Media List Table class
36
- *
37
- * @since 1.4.2
38
- *
39
- * @param int $id
40
- * @return string Actions
41
- */
42
- private function get_column_value_actions( $id ) {
43
-
44
- if ( file_exists(ABSPATH . 'wp-admin/includes/class-wp-list-table.php') )
45
- require_once(ABSPATH . 'wp-admin/includes/class-wp-list-table.php');
46
- if ( file_exists(ABSPATH . 'wp-admin/includes/class-wp-media-list-table.php') )
47
- require_once(ABSPATH . 'wp-admin/includes/class-wp-media-list-table.php');
48
-
49
- // we need class to get the object actions
50
- $m = new WP_Media_List_Table;
51
 
52
- // prevent php notice
53
- $m->is_trash = isset( $_REQUEST['status'] ) && 'trash' == $_REQUEST['status'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
 
55
- // get media actions
56
- $media = get_post($id);
57
- $actions = $m->_get_row_actions( $media, _draft_or_post_title($id) );
 
 
 
 
 
 
 
 
 
58
 
59
- return implode(' | ', $actions);
60
  }
61
- }
5
  *
6
  * @since 2.0
7
  */
8
+ class CPAC_Column_Media_Actions extends CPAC_Column_Actions {
9
 
10
  /**
11
+ * @see CPAC_Column_Actions::get_actions()
12
+ * @since NEWVERSION
13
  */
14
+ public function get_actions( $item_id ) {
15
 
16
+ global $wp_list_table;
17
 
18
+ $post = get_post( $item_id );
19
+ $att_title = _draft_or_post_title( $item_id );
20
+
21
+ $actions = array();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
 
23
+ if ( $wp_list_table->detached ) {
24
+ if ( current_user_can( 'edit_post', $post->ID ) )
25
+ $actions['edit'] = '<a href="' . get_edit_post_link( $post->ID, true ) . '">' . __( 'Edit' ) . '</a>';
26
+ if ( current_user_can( 'delete_post', $post->ID ) )
27
+ if ( EMPTY_TRASH_DAYS && MEDIA_TRASH ) {
28
+ $actions['trash'] = "<a class='submitdelete' href='" . wp_nonce_url( "post.php?action=trash&amp;post=$post->ID", 'trash-post_' . $post->ID ) . "'>" . __( 'Trash' ) . "</a>";
29
+ } else {
30
+ $delete_ays = !MEDIA_TRASH ? " onclick='return showNotice.warn();'" : '';
31
+ $actions['delete'] = "<a class='submitdelete'$delete_ays href='" . wp_nonce_url( "post.php?action=delete&amp;post=$post->ID", 'delete-post_' . $post->ID ) . "'>" . __( 'Delete Permanently' ) . "</a>";
32
+ }
33
+ $actions['view'] = '<a href="' . get_permalink( $post->ID ) . '" title="' . esc_attr( sprintf( __( 'View &#8220;%s&#8221;' ), $att_title ) ) . '" rel="permalink">' . __( 'View' ) . '</a>';
34
+ if ( current_user_can( 'edit_post', $post->ID ) )
35
+ $actions['attach'] = '<a href="#the-list" onclick="findPosts.open( \'media[]\',\''.$post->ID.'\' );return false;" class="hide-if-no-js">'.__( 'Attach' ).'</a>';
36
+ }
37
+ else {
38
+ if ( current_user_can( 'edit_post', $post->ID ) && !$wp_list_table->is_trash )
39
+ $actions['edit'] = '<a href="' . get_edit_post_link( $post->ID, true ) . '">' . __( 'Edit' ) . '</a>';
40
+ if ( current_user_can( 'delete_post', $post->ID ) ) {
41
+ if ( $wp_list_table->is_trash )
42
+ $actions['untrash'] = "<a class='submitdelete' href='" . wp_nonce_url( "post.php?action=untrash&amp;post=$post->ID", 'untrash-post_' . $post->ID ) . "'>" . __( 'Restore' ) . "</a>";
43
+ elseif ( EMPTY_TRASH_DAYS && MEDIA_TRASH )
44
+ $actions['trash'] = "<a class='submitdelete' href='" . wp_nonce_url( "post.php?action=trash&amp;post=$post->ID", 'trash-post_' . $post->ID ) . "'>" . __( 'Trash' ) . "</a>";
45
+ if ( $wp_list_table->is_trash || !EMPTY_TRASH_DAYS || !MEDIA_TRASH ) {
46
+ $delete_ays = ( !$wp_list_table->is_trash && !MEDIA_TRASH ) ? " onclick='return showNotice.warn();'" : '';
47
+ $actions['delete'] = "<a class='submitdelete'$delete_ays href='" . wp_nonce_url( "post.php?action=delete&amp;post=$post->ID", 'delete-post_' . $post->ID ) . "'>" . __( 'Delete Permanently' ) . "</a>";
48
+ }
49
+ }
50
+ if ( !$wp_list_table->is_trash ) {
51
+ $title =_draft_or_post_title( $post->post_parent );
52
+ $actions['view'] = '<a href="' . get_permalink( $post->ID ) . '" title="' . esc_attr( sprintf( __( 'View &#8220;%s&#8221;' ), $title ) ) . '" rel="permalink">' . __( 'View' ) . '</a>';
53
+ }
54
+ }
55
 
56
+ /**
57
+ * Filter the action links for each attachment in the Media list table.
58
+ *
59
+ * @since 2.8.0
60
+ *
61
+ * @param array $actions An array of action links for each attachment.
62
+ * Default 'Edit', 'Delete Permanently', 'View'.
63
+ * @param WP_Post $post WP_Post object for the current attachment.
64
+ * @param bool $detached Whether the list table contains media not attached
65
+ * to any posts. Default true.
66
+ */
67
+ $actions = apply_filters( 'media_row_actions', $actions, $post, $wp_list_table->detached );
68
 
69
+ return $actions;
70
  }
71
+ }
classes/column/media/alternate-text.php CHANGED
@@ -23,8 +23,17 @@ class CPAC_Column_Media_Alternate_Text extends CPAC_Column {
23
  * @see CPAC_Column::get_value()
24
  * @since 2.0
25
  */
26
- function get_value( $id ) {
27
 
28
- return $this->strip_trim( get_post_meta( $id, '_wp_attachment_image_alt', true ) );
 
 
 
 
 
 
 
 
 
29
  }
30
  }
23
  * @see CPAC_Column::get_value()
24
  * @since 2.0
25
  */
26
+ public function get_value( $id ) {
27
 
28
+ return $this->strip_trim( $this->get_raw_value( $id ) );
29
+ }
30
+
31
+ /**
32
+ * @see CPAC_Column::get_raw_value()
33
+ * @since 2.3.2
34
+ */
35
+ public function get_raw_value( $id ) {
36
+
37
+ return get_post_meta( $id, '_wp_attachment_image_alt', true );
38
  }
39
  }
classes/column/media/caption.php CHANGED
@@ -23,7 +23,16 @@ class CPAC_Column_Media_Caption extends CPAC_Column {
23
  * @see CPAC_Column::get_value()
24
  * @since 2.0
25
  */
26
- function get_value( $id ) {
 
 
 
 
 
 
 
 
 
27
 
28
  return get_post_field( 'post_excerpt', $id );
29
  }
23
  * @see CPAC_Column::get_value()
24
  * @since 2.0
25
  */
26
+ public function get_value( $id ) {
27
+
28
+ return $this->get_raw_value( $id );
29
+ }
30
+
31
+ /**
32
+ * @see CPAC_Column::get_raw_value()
33
+ * @since 2.3.2
34
+ */
35
+ public function get_raw_value( $id ) {
36
 
37
  return get_post_field( 'post_excerpt', $id );
38
  }
classes/column/media/description.php CHANGED
@@ -23,7 +23,16 @@ class CPAC_Column_Media_Description extends CPAC_Column {
23
  * @see CPAC_Column::get_value()
24
  * @since 2.0
25
  */
26
- function get_value( $id ) {
 
 
 
 
 
 
 
 
 
27
 
28
  return get_post_field( 'post_content', $id );
29
  }
23
  * @see CPAC_Column::get_value()
24
  * @since 2.0
25
  */
26
+ public function get_value( $id ) {
27
+
28
+ return $this->get_raw_value( $id );
29
+ }
30
+
31
+ /**
32
+ * @see CPAC_Column::get_raw_value()
33
+ * @since 2.3.2
34
+ */
35
+ public function get_raw_value( $id ) {
36
 
37
  return get_post_field( 'post_content', $id );
38
  }
classes/column/media/dimensions.php CHANGED
@@ -23,15 +23,25 @@ class CPAC_Column_Media_Dimensions extends CPAC_Column {
23
  * @see CPAC_Column::get_value()
24
  * @since 2.0
25
  */
26
- function get_value( $id ) {
27
 
28
  $value = '';
29
 
30
- $meta = get_post_meta( $id, '_wp_attachment_metadata', true );
31
 
32
- if ( ! empty( $meta['width'] ) && ! empty( $meta['height'] ) )
33
  $value = "{$meta['width']} x {$meta['height']}";
 
34
 
35
  return $value;
36
  }
 
 
 
 
 
 
 
 
 
37
  }
23
  * @see CPAC_Column::get_value()
24
  * @since 2.0
25
  */
26
+ public function get_value( $id ) {
27
 
28
  $value = '';
29
 
30
+ $meta = $this->get_raw_value( $id );
31
 
32
+ if ( ! empty( $meta['width'] ) && ! empty( $meta['height'] ) ) {
33
  $value = "{$meta['width']} x {$meta['height']}";
34
+ }
35
 
36
  return $value;
37
  }
38
+
39
+ /**
40
+ * @see CPAC_Column::get_raw_value()
41
+ * @since 2.3.2
42
+ */
43
+ public function get_raw_value( $id ) {
44
+
45
+ return get_post_meta( $id, '_wp_attachment_metadata', true );
46
+ }
47
  }
classes/column/media/exif-data.php CHANGED
@@ -55,12 +55,12 @@ class CPAC_Column_Media_Exif_Data extends CPAC_Column {
55
  * @see CPAC_Column::get_value()
56
  * @since 2.0
57
  */
58
- function get_value( $id ) {
59
 
60
  $value = '';
61
 
62
  $data = $this->options->exif_datatype;
63
- $meta = get_post_meta( $id, '_wp_attachment_metadata', true );
64
 
65
  if ( isset( $meta['image_meta'][ $data ] ) ) {
66
  $value = $meta['image_meta'][ $data ];
@@ -74,15 +74,21 @@ class CPAC_Column_Media_Exif_Data extends CPAC_Column {
74
  }
75
 
76
  /**
77
- * @see CPAC_Column::apply_conditional()
78
  * @since 2.0
79
  */
80
- function apply_conditional() {
 
 
 
81
 
82
- if ( function_exists( 'exif_read_data' ) )
83
- return true;
 
 
 
84
 
85
- return false;
86
  }
87
 
88
  /**
@@ -91,7 +97,7 @@ class CPAC_Column_Media_Exif_Data extends CPAC_Column {
91
  * @see CPAC_Column::display_settings()
92
  * @since 2.0
93
  */
94
- function display_settings() {
95
 
96
  ?>
97
 
55
  * @see CPAC_Column::get_value()
56
  * @since 2.0
57
  */
58
+ public function get_value( $id ) {
59
 
60
  $value = '';
61
 
62
  $data = $this->options->exif_datatype;
63
+ $meta = $this->get_raw_value( $id );
64
 
65
  if ( isset( $meta['image_meta'][ $data ] ) ) {
66
  $value = $meta['image_meta'][ $data ];
74
  }
75
 
76
  /**
77
+ * @see CPAC_Column::get_raw_value()
78
  * @since 2.0
79
  */
80
+ public function get_raw_value( $id ) {
81
+
82
+ return get_post_meta( $id, '_wp_attachment_metadata', true );
83
+ }
84
 
85
+ /**
86
+ * @see CPAC_Column::apply_conditional()
87
+ * @since 2.0
88
+ */
89
+ public function apply_conditional() {
90
 
91
+ return function_exists( 'exif_read_data' );
92
  }
93
 
94
  /**
97
  * @see CPAC_Column::display_settings()
98
  * @since 2.0
99
  */
100
+ public function display_settings() {
101
 
102
  ?>
103
 
classes/column/media/mime-type.php CHANGED
@@ -15,15 +15,24 @@ class CPAC_Column_Media_Mime_Type extends CPAC_Column {
15
  parent::init();
16
 
17
  // Properties
18
- $this->properties['type'] = 'column-mime_type';
19
- $this->properties['label'] = __( 'Mime type', 'cpac' );
20
  }
21
 
22
  /**
23
  * @see CPAC_Column::get_value()
24
  * @since 2.0
25
  */
26
- function get_value( $id ) {
 
 
 
 
 
 
 
 
 
27
 
28
  return get_post_field( 'post_mime_type', $id );
29
  }
15
  parent::init();
16
 
17
  // Properties
18
+ $this->properties['type'] = 'column-mime_type';
19
+ $this->properties['label'] = __( 'Mime type', 'cpac' );
20
  }
21
 
22
  /**
23
  * @see CPAC_Column::get_value()
24
  * @since 2.0
25
  */
26
+ public function get_value( $id ) {
27
+
28
+ return $this->get_raw_value( $id );
29
+ }
30
+
31
+ /**
32
+ * @see CPAC_Column::get_raw_value()
33
+ * @since 2.3.2
34
+ */
35
+ public function get_raw_value( $id ) {
36
 
37
  return get_post_field( 'post_mime_type', $id );
38
  }
classes/column/post/actions.php CHANGED
@@ -11,6 +11,7 @@ class CPAC_Column_Post_Actions extends CPAC_Column_Actions {
11
  * @since 2.2.6
12
  */
13
  public function get_actions( $item_id ) {
 
14
  $actions = array();
15
 
16
  $post = get_post( $item_id );
11
  * @since 2.2.6
12
  */
13
  public function get_actions( $item_id ) {
14
+
15
  $actions = array();
16
 
17
  $post = get_post( $item_id );
classes/column/post/depth.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Depth of the current page (number of ancestors + 1)
4
+ *
5
+ * @since NEWVERSION
6
+ */
7
+ class CPAC_Column_Post_Depth extends CPAC_Column {
8
+
9
+ /**
10
+ * @see CPAC_Column::init()
11
+ * @since NEWVERSION
12
+ */
13
+ public function init() {
14
+
15
+ parent::init();
16
+
17
+ // Properties
18
+ $this->properties['type'] = 'column-depth';
19
+ $this->properties['label'] = __( 'Depth', 'cpac' );
20
+ }
21
+
22
+ /**
23
+ * @see CPAC_Column::get_value()
24
+ * @since NEWVERSION
25
+ */
26
+ function get_value( $post_id ) {
27
+
28
+ return $this->get_raw_value( $post_id );
29
+ }
30
+
31
+ /**
32
+ * @see CPAC_Column::get_raw_value()
33
+ * @since NEWVERSION
34
+ */
35
+ function get_raw_value( $post_id ) {
36
+
37
+ return count( get_post_ancestors( $post_id ) ) + 1;
38
+ }
39
+ }
classes/column/post/estimated-reading-time.php ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * CPAC_Column_Post_Estimated_Reading_Time
4
+ *
5
+ * @since 2.3.3
6
+ */
7
+ class CPAC_Column_Post_Estimated_Reading_Time extends CPAC_Column {
8
+
9
+ /**
10
+ * @see CPAC_Column::init()
11
+ * @since 2.3.3
12
+ */
13
+ public function init() {
14
+
15
+ parent::init();
16
+
17
+ // Properties
18
+ $this->properties['type'] = 'column-estimated_reading_time';
19
+ $this->properties['label'] = __( 'Estimated Reading Time', 'cpac' );
20
+
21
+ // Options
22
+ $this->options['words_per_minute'] = 200;
23
+ }
24
+
25
+ /**
26
+ * Estimate read time in readable format
27
+ *
28
+ * @see CPAC_Column::get_value()
29
+ * @since 2.3.3
30
+ */
31
+ public function get_value( $post_id ) {
32
+
33
+ return $this->convert_seconds_to_readable_time( $this->get_raw_value( $post_id ) );
34
+ }
35
+
36
+ /**
37
+ * Estimate read time in seconds
38
+ *
39
+ * @see CPAC_Column::get_raw_value()
40
+ * @since 2.3.3
41
+ */
42
+ public function get_raw_value( $post_id ) {
43
+
44
+ return $seconds = $this->get_estimated_reading_time_in_seconds( get_post_field( 'post_content', $post_id ) );
45
+ }
46
+
47
+ /**
48
+ * @since 2.3.3
49
+ */
50
+ public function convert_seconds_to_readable_time( $seconds ) {
51
+
52
+ $minutes = floor( $seconds / 60 );
53
+ $seconds = floor( $seconds % 60 );
54
+
55
+ $time = $minutes;
56
+ if ( $seconds < 10 ) {
57
+ $seconds = '0' . $seconds;
58
+ }
59
+ if ( '00' != $seconds ) {
60
+ $time .= ':' . $seconds;
61
+ }
62
+ if ( $minutes < 1 ) {
63
+ $time = $seconds . ' ' . _n( 'second', 'seconds', $seconds, 'cpac' );
64
+ }
65
+ else {
66
+ $time .= ' ' . _n( 'minute', 'minutes', $minutes, 'cpac' );
67
+ }
68
+
69
+ return $time;
70
+ }
71
+
72
+ /**
73
+ * @since 2.3.3
74
+ */
75
+ public function get_estimated_reading_time_in_seconds( $content ) {
76
+
77
+ $word_count = $this->str_count_words( $this->strip_trim( $content ) );
78
+ if ( ! $word_count ) {
79
+ return 0;
80
+ }
81
+ return (int) floor( ( $word_count / $this->options->words_per_minute ) * 60 );
82
+ }
83
+
84
+ /**
85
+ * @see CPAC_Column::apply_conditional()
86
+ * @since 2.3.3
87
+ */
88
+ public function apply_conditional() {
89
+
90
+ if ( post_type_supports( $this->storage_model->key, 'editor' ) ) {
91
+ return true;
92
+ }
93
+
94
+ return false;
95
+ }
96
+
97
+ /**
98
+ * @since 2.3.3
99
+ */
100
+ public function display_settings() {
101
+
102
+ $field_key = 'words_per_minute';
103
+ $label = __( 'Words per minute', 'cpac' );
104
+ $description = __( 'Estimated reading time in words per minute', 'cpac' );
105
+
106
+ ?>
107
+ <tr class="column_<?php echo $field_key; ?>">
108
+ <?php $this->label_view( $label, $description, $field_key ); ?>
109
+ <td class="input">
110
+ <input type="text" name="<?php $this->attr_name( $field_key ); ?>" id="<?php $this->attr_id( $field_key ); ?>" value="<?php echo $this->options->words_per_minute; ?>"/>
111
+ </td>
112
+ </tr>
113
+ <?php
114
+ }
115
+ }
classes/column/post/featured-image.php CHANGED
@@ -28,7 +28,7 @@ class CPAC_Column_Post_Featured_Image extends CPAC_Column {
28
  * @see CPAC_Column::apply_conditional()
29
  * @since 2.2
30
  */
31
- function apply_conditional() {
32
 
33
  return post_type_supports( $this->storage_model->key, 'thumbnail' );
34
  }
@@ -37,11 +37,11 @@ class CPAC_Column_Post_Featured_Image extends CPAC_Column {
37
  * @see CPAC_Column::get_value()
38
  * @since 2.0
39
  */
40
- function get_value( $post_id ) {
41
 
42
  $thumbnail_id = $this->get_raw_value( $post_id );
43
 
44
- if ( !$thumbnail_id ) {
45
  return false;
46
  }
47
 
@@ -55,10 +55,11 @@ class CPAC_Column_Post_Featured_Image extends CPAC_Column {
55
  * @see CPAC_Column::get_raw_value()
56
  * @since 2.0.3
57
  */
58
- function get_raw_value( $post_id ) {
59
 
60
- if ( ! has_post_thumbnail( $post_id ) )
61
  return false;
 
62
 
63
  return get_post_thumbnail_id( $post_id );
64
  }
@@ -67,7 +68,7 @@ class CPAC_Column_Post_Featured_Image extends CPAC_Column {
67
  * @see CPAC_Column::display_settings()
68
  * @since 2.0
69
  */
70
- function display_settings() {
71
 
72
  $this->display_field_preview_size();
73
  }
28
  * @see CPAC_Column::apply_conditional()
29
  * @since 2.2
30
  */
31
+ public function apply_conditional() {
32
 
33
  return post_type_supports( $this->storage_model->key, 'thumbnail' );
34
  }
37
  * @see CPAC_Column::get_value()
38
  * @since 2.0
39
  */
40
+ public function get_value( $post_id ) {
41
 
42
  $thumbnail_id = $this->get_raw_value( $post_id );
43
 
44
+ if ( ! $thumbnail_id ) {
45
  return false;
46
  }
47
 
55
  * @see CPAC_Column::get_raw_value()
56
  * @since 2.0.3
57
  */
58
+ public function get_raw_value( $post_id ) {
59
 
60
+ if ( ! has_post_thumbnail( $post_id ) ) {
61
  return false;
62
+ }
63
 
64
  return get_post_thumbnail_id( $post_id );
65
  }
68
  * @see CPAC_Column::display_settings()
69
  * @since 2.0
70
  */
71
+ public function display_settings() {
72
 
73
  $this->display_field_preview_size();
74
  }
classes/column/post/sticky.php CHANGED
@@ -39,8 +39,9 @@ class CPAC_Column_Post_Sticky extends CPAC_Column {
39
 
40
  $value = $this->get_asset_image( 'no.png' );
41
 
42
- if ( $this->get_raw_value( $post_id ) )
43
  $value = $this->get_asset_image( 'checkmark.png' );
 
44
 
45
  return $value;
46
  }
39
 
40
  $value = $this->get_asset_image( 'no.png' );
41
 
42
+ if ( $this->get_raw_value( $post_id ) ) {
43
  $value = $this->get_asset_image( 'checkmark.png' );
44
+ }
45
 
46
  return $value;
47
  }
classes/column/post/word-count.php CHANGED
@@ -37,36 +37,6 @@ class CPAC_Column_Post_Word_Count extends CPAC_Column {
37
  return $this->str_count_words( $this->strip_trim( get_post_field( 'post_content', $post_id ) ) );
38
  }
39
 
40
- /**
41
- * Count the number of words in a string (multibyte-compatible)
42
- *
43
- * @since 2.3
44
- *
45
- * @param string $input Input string
46
- * @return int Number of words
47
- */
48
- public function str_count_words( $input ) {
49
-
50
- $patterns = array(
51
- 'strip' => '/<[a-zA-Z\/][^<>]*>/',
52
- 'clean' => '/[0-9.(),;:!?%#$¿\'"_+=\\/-]+/',
53
- 'w' => '/\S\s+/',
54
- 'c' => '/\S/'
55
- );
56
-
57
- $type = 'w';
58
-
59
- $input = preg_replace( $patterns['strip'], ' ', $input );
60
- $input = preg_replace( '/&nbsp;|&#160;/i', ' ', $input );
61
- $input = preg_replace( $patterns['clean'], '', $input );
62
-
63
- if ( ! strlen( preg_replace( '/\s/', '', $input ) ) ) {
64
- return 0;
65
- }
66
-
67
- return preg_match_all( $patterns[ $type ], $input ) + 1;
68
- }
69
-
70
  /**
71
  * @see CPAC_Column::apply_conditional()
72
  * @since 2.0
37
  return $this->str_count_words( $this->strip_trim( get_post_field( 'post_content', $post_id ) ) );
38
  }
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  /**
41
  * @see CPAC_Column::apply_conditional()
42
  * @since 2.0
classes/column/user/display-name.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * CPAC_Column_User_Display_Name
4
+ *
5
+ * @since 2.0
6
+ */
7
+ class CPAC_Column_User_Display_Name extends CPAC_Column {
8
+
9
+ /**
10
+ * @see CPAC_Column::init()
11
+ * @since 2.2.1
12
+ */
13
+ public function init() {
14
+
15
+ parent::init();
16
+
17
+ // Properties
18
+ $this->properties['type'] = 'column-display_name';
19
+ $this->properties['label'] = __( 'Display name', 'cpac' );
20
+ }
21
+
22
+ /**
23
+ * @see CPAC_Column::get_value()
24
+ * @since 2.0
25
+ */
26
+ function get_value( $user_id ) {
27
+
28
+ return $this->get_raw_value( $user_id );
29
+ }
30
+
31
+ /**
32
+ * @see CPAC_Column::get_raw_value()
33
+ * @since 2.0.3
34
+ */
35
+ function get_raw_value( $user_id ) {
36
+
37
+ $userdata = get_userdata( $user_id );
38
+
39
+ return $userdata->display_name;
40
+ }
41
+ }
classes/column/user/rich-editing.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * CPAC_Column_User_Rich_Editing
4
+ *
5
+ * @since 2.0
6
+ */
7
+ class CPAC_Column_User_Rich_Editing extends CPAC_Column {
8
+
9
+ /**
10
+ * @see CPAC_Column::init()
11
+ * @since 2.2.1
12
+ */
13
+ public function init() {
14
+
15
+ parent::init();
16
+
17
+ // Properties
18
+ $this->properties['type'] = 'column-rich_editing';
19
+ $this->properties['label'] = __( 'Visual Editor', 'cpac' );
20
+ }
21
+
22
+ /**
23
+ * @see CPAC_Column::get_value()
24
+ * @since 2.0
25
+ */
26
+ function get_value( $user_id ) {
27
+
28
+ $value = $this->get_asset_image( 'no.png' );
29
+ if ( 'true' === $this->get_raw_value( $user_id ) ) {
30
+ $value = $this->get_asset_image( 'checkmark.png' );
31
+ }
32
+
33
+ return $value;
34
+ }
35
+
36
+ /**
37
+ * @see CPAC_Column::get_raw_value()
38
+ * @since 2.0.3
39
+ */
40
+ function get_raw_value( $user_id ) {
41
+
42
+ $userdata = get_userdata( $user_id );
43
+
44
+ return $userdata->rich_editing;
45
+ }
46
+ }
classes/storage_model/comment.php CHANGED
@@ -65,6 +65,7 @@ class CPAC_Storage_Model_Comment extends CPAC_Storage_Model {
65
  $result = $wpdb->get_results( "SELECT DISTINCT meta_key FROM {$wpdb->commentmeta} ORDER BY 1", ARRAY_N );
66
  wp_cache_add( $this->key, $result, 'cac_columns', 10 ); // 10 sec.
67
  }
 
68
  }
69
 
70
  /**
65
  $result = $wpdb->get_results( "SELECT DISTINCT meta_key FROM {$wpdb->commentmeta} ORDER BY 1", ARRAY_N );
66
  wp_cache_add( $this->key, $result, 'cac_columns', 10 ); // 10 sec.
67
  }
68
+ return $result;
69
  }
70
 
71
  /**
codepress-admin-columns.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /*
3
  Plugin Name: Admin Columns
4
- Version: 2.3.2
5
  Description: Customize columns on the administration screens for post(types), pages, media, comments, links and users with an easy to use drag-and-drop interface.
6
  Author: AdminColumns.com
7
  Author URI: http://www.admincolumns.com
@@ -26,10 +26,13 @@ along with this program; if not, write to the Free Software
26
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
27
  */
28
 
29
- if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
 
 
 
30
 
31
  // Plugin information
32
- define( 'CPAC_VERSION', '2.3.2' ); // Current plugin version
33
  define( 'CPAC_UPGRADE_VERSION', '2.0.0' ); // Latest version which requires an upgrade
34
  define( 'CPAC_URL', plugin_dir_url( __FILE__ ) );
35
  define( 'CPAC_DIR', plugin_dir_path( __FILE__ ) );
1
  <?php
2
  /*
3
  Plugin Name: Admin Columns
4
+ Version: 2.3.3
5
  Description: Customize columns on the administration screens for post(types), pages, media, comments, links and users with an easy to use drag-and-drop interface.
6
  Author: AdminColumns.com
7
  Author URI: http://www.admincolumns.com
26
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
27
  */
28
 
29
+ // Exit if accessed directly
30
+ if ( ! defined( 'ABSPATH' ) ) {
31
+ exit;
32
+ }
33
 
34
  // Plugin information
35
+ define( 'CPAC_VERSION', '2.3.3' ); // Current plugin version
36
  define( 'CPAC_UPGRADE_VERSION', '2.0.0' ); // Latest version which requires an upgrade
37
  define( 'CPAC_URL', plugin_dir_url( __FILE__ ) );
38
  define( 'CPAC_DIR', plugin_dir_path( __FILE__ ) );
external/qtip2/jquery.qtip.css CHANGED
@@ -1,14 +1,14 @@
1
  /*
2
- * qTip2 - Pretty powerful tooltips - v2.2.0
3
  * http://qtip2.com
4
  *
5
- * Copyright (c) 2014 Craig Michael Thompson
6
- * Released under the MIT, GPL licenses
7
  * http://jquery.org/license
8
  *
9
- * Date: Sun Mar 16 2014 05:53 EDT-0400
10
- * Plugins: tips viewport
11
- * Styles: css3
12
  */
13
  .qtip{
14
  position: absolute;
@@ -52,13 +52,12 @@
52
  .qtip-close{
53
  position: absolute;
54
  right: -9px; top: -9px;
 
55
 
56
  cursor: pointer;
57
  outline: medium none;
58
 
59
- border-width: 1px;
60
- border-style: solid;
61
- border-color: transparent;
62
  }
63
 
64
  .qtip-titlebar .qtip-close{
@@ -103,9 +102,7 @@
103
 
104
  /* Default tooltip style */
105
  .qtip-default{
106
- border-width: 1px;
107
- border-style: solid;
108
- border-color: #F1D031;
109
 
110
  background-color: #FFFFA3;
111
  color: #555;
@@ -127,7 +124,6 @@
127
  }
128
 
129
 
130
-
131
  .qtip-shadow{
132
  -webkit-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
133
  -moz-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
@@ -160,7 +156,7 @@
160
  box-shadow: 0 0 3px #333;
161
 
162
  color: white;
163
- border-width: 0;
164
 
165
  background: #4A4A4A;
166
  background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,black));
@@ -455,36 +451,3 @@
455
  filter: none;
456
  -ms-filter: none;
457
  }
458
-
459
-
460
-
461
- .qtip .qtip-tip{
462
- margin: 0 auto;
463
- overflow: hidden;
464
- z-index: 10;
465
-
466
- }
467
-
468
- /* Opera bug #357 - Incorrect tip position
469
- https://github.com/Craga89/qTip2/issues/367 */
470
- x:-o-prefocus, .qtip .qtip-tip{
471
- visibility: hidden;
472
- }
473
-
474
- .qtip .qtip-tip,
475
- .qtip .qtip-tip .qtip-vml,
476
- .qtip .qtip-tip canvas{
477
- position: absolute;
478
-
479
- color: #123456;
480
- background: transparent;
481
- border: 0 dashed transparent;
482
- }
483
-
484
- .qtip .qtip-tip canvas{ top: 0; left: 0; }
485
-
486
- .qtip .qtip-tip .qtip-vml{
487
- behavior: url(#default#VML);
488
- display: inline-block;
489
- visibility: visible;
490
- }
1
  /*
2
+ * qTip2 - Pretty powerful tooltips - v2.2.1
3
  * http://qtip2.com
4
  *
5
+ * Copyright (c) 2014
6
+ * Released under the MIT licenses
7
  * http://jquery.org/license
8
  *
9
+ * Date: Sun Sep 7 2014 10:41 EDT-0400
10
+ * Plugins: viewport
11
+ * Styles: core css3
12
  */
13
  .qtip{
14
  position: absolute;
52
  .qtip-close{
53
  position: absolute;
54
  right: -9px; top: -9px;
55
+ z-index: 11; /* Overlap .qtip-tip */
56
 
57
  cursor: pointer;
58
  outline: medium none;
59
 
60
+ border: 1px solid transparent;
 
 
61
  }
62
 
63
  .qtip-titlebar .qtip-close{
102
 
103
  /* Default tooltip style */
104
  .qtip-default{
105
+ border: 1px solid #F1D031;
 
 
106
 
107
  background-color: #FFFFA3;
108
  color: #555;
124
  }
125
 
126
 
 
127
  .qtip-shadow{
128
  -webkit-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
129
  -moz-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
156
  box-shadow: 0 0 3px #333;
157
 
158
  color: white;
159
+ border: 0 solid transparent;
160
 
161
  background: #4A4A4A;
162
  background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,black));
451
  filter: none;
452
  -ms-filter: none;
453
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
external/qtip2/jquery.qtip.js CHANGED
@@ -1,14 +1,14 @@
1
  /*
2
- * qTip2 - Pretty powerful tooltips - v2.2.0
3
  * http://qtip2.com
4
  *
5
- * Copyright (c) 2014 Craig Michael Thompson
6
- * Released under the MIT, GPL licenses
7
  * http://jquery.org/license
8
  *
9
- * Date: Sun Mar 16 2014 05:53 EDT-0400
10
- * Plugins: tips viewport
11
- * Styles: css3
12
  */
13
  /*global window: false, jQuery: false, console: false, define: false */
14
 
@@ -27,7 +27,6 @@
27
  }
28
  (function($) {
29
  "use strict"; // Enable ECMAScript "strict" operation for this function. See more: http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/
30
-
31
  ;// Munge the primitives - Paul Irish tip
32
  var TRUE = true,
33
  FALSE = false,
@@ -79,10 +78,11 @@ BROWSER = {
79
  * Credit to James Padolsey for the original implemntation!
80
  */
81
  ie: (function(){
82
- var v = 3, div = document.createElement('div');
83
- while ((div.innerHTML = '<!--[if gt IE '+(++v)+']><i></i><![endif]-->')) {
84
- if(!div.getElementsByTagName('i')[0]) { break; }
85
- }
 
86
  return v > 4 ? v : NaN;
87
  }()),
88
 
@@ -94,207 +94,211 @@ BROWSER = {
94
  .replace('undefined', '3_2').replace('_', '.').replace('_', '')
95
  ) || FALSE
96
  };
97
-
98
- ;function QTip(target, options, id, attr) {
99
- // Elements and ID
100
- this.id = id;
101
- this.target = target;
102
- this.tooltip = NULL;
103
- this.elements = { target: target };
104
-
105
- // Internal constructs
106
- this._id = NAMESPACE + '-' + id;
107
- this.timers = { img: {} };
108
- this.options = options;
109
- this.plugins = {};
110
-
111
- // Cache object
112
- this.cache = {
113
- event: {},
114
- target: $(),
115
- disabled: FALSE,
116
- attr: attr,
117
- onTooltip: FALSE,
118
- lastClass: ''
119
- };
120
-
121
- // Set the initial flags
122
- this.rendered = this.destroyed = this.disabled = this.waiting =
123
- this.hiddenDuringWait = this.positioning = this.triggering = FALSE;
124
- }
125
- PROTOTYPE = QTip.prototype;
126
-
127
- PROTOTYPE._when = function(deferreds) {
128
- return $.when.apply($, deferreds);
129
- };
130
-
131
- PROTOTYPE.render = function(show) {
132
- if(this.rendered || this.destroyed) { return this; } // If tooltip has already been rendered, exit
133
-
134
- var self = this,
135
- options = this.options,
136
- cache = this.cache,
137
- elements = this.elements,
138
- text = options.content.text,
139
- title = options.content.title,
140
- button = options.content.button,
141
- posOptions = options.position,
142
- namespace = '.'+this._id+' ',
143
- deferreds = [],
144
- tooltip;
145
-
146
- // Add ARIA attributes to target
147
- $.attr(this.target[0], 'aria-describedby', this._id);
148
-
149
- // Create tooltip element
150
- this.tooltip = elements.tooltip = tooltip = $('<div/>', {
151
- 'id': this._id,
152
- 'class': [ NAMESPACE, CLASS_DEFAULT, options.style.classes, NAMESPACE + '-pos-' + options.position.my.abbrev() ].join(' '),
153
- 'width': options.style.width || '',
154
- 'height': options.style.height || '',
155
- 'tracking': posOptions.target === 'mouse' && posOptions.adjust.mouse,
156
-
157
- /* ARIA specific attributes */
158
- 'role': 'alert',
159
- 'aria-live': 'polite',
160
- 'aria-atomic': FALSE,
161
- 'aria-describedby': this._id + '-content',
162
- 'aria-hidden': TRUE
163
- })
164
- .toggleClass(CLASS_DISABLED, this.disabled)
165
- .attr(ATTR_ID, this.id)
166
- .data(NAMESPACE, this)
167
- .appendTo(posOptions.container)
168
- .append(
169
- // Create content element
170
- elements.content = $('<div />', {
171
- 'class': NAMESPACE + '-content',
172
- 'id': this._id + '-content',
173
- 'aria-atomic': TRUE
174
- })
175
- );
176
-
177
- // Set rendered flag and prevent redundant reposition calls for now
178
- this.rendered = -1;
179
- this.positioning = TRUE;
180
-
181
- // Create title...
182
- if(title) {
183
- this._createTitle();
184
-
185
- // Update title only if its not a callback (called in toggle if so)
186
- if(!$.isFunction(title)) {
187
- deferreds.push( this._updateTitle(title, FALSE) );
188
- }
189
- }
190
-
191
- // Create button
192
- if(button) { this._createButton(); }
193
-
194
- // Set proper rendered flag and update content if not a callback function (called in toggle)
195
- if(!$.isFunction(text)) {
196
- deferreds.push( this._updateContent(text, FALSE) );
197
- }
198
- this.rendered = TRUE;
199
-
200
- // Setup widget classes
201
- this._setWidget();
202
-
203
- // Initialize 'render' plugins
204
- $.each(PLUGINS, function(name) {
205
- var instance;
206
- if(this.initialize === 'render' && (instance = this(self))) {
207
- self.plugins[name] = instance;
208
- }
209
- });
210
-
211
- // Unassign initial events and assign proper events
212
- this._unassignEvents();
213
- this._assignEvents();
214
-
215
- // When deferreds have completed
216
- this._when(deferreds).then(function() {
217
- // tooltiprender event
218
- self._trigger('render');
219
-
220
- // Reset flags
221
- self.positioning = FALSE;
222
-
223
- // Show tooltip if not hidden during wait period
224
- if(!self.hiddenDuringWait && (options.show.ready || show)) {
225
- self.toggle(TRUE, cache.event, FALSE);
226
- }
227
- self.hiddenDuringWait = FALSE;
228
- });
229
-
230
- // Expose API
231
- QTIP.api[this.id] = this;
232
-
233
- return this;
234
- };
235
-
236
- PROTOTYPE.destroy = function(immediate) {
237
- // Set flag the signify destroy is taking place to plugins
238
- // and ensure it only gets destroyed once!
239
- if(this.destroyed) { return this.target; }
240
-
241
- function process() {
242
- if(this.destroyed) { return; }
243
- this.destroyed = TRUE;
244
-
245
- var target = this.target,
246
- title = target.attr(oldtitle);
247
-
248
- // Destroy tooltip if rendered
249
- if(this.rendered) {
250
- this.tooltip.stop(1,0).find('*').remove().end().remove();
251
- }
252
-
253
- // Destroy all plugins
254
- $.each(this.plugins, function(name) {
255
- this.destroy && this.destroy();
256
- });
257
-
258
- // Clear timers and remove bound events
259
- clearTimeout(this.timers.show);
260
- clearTimeout(this.timers.hide);
261
- this._unassignEvents();
262
-
263
- // Remove api object and ARIA attributes
264
- target.removeData(NAMESPACE)
265
- .removeAttr(ATTR_ID)
266
- .removeAttr(ATTR_HAS)
267
- .removeAttr('aria-describedby');
268
-
269
- // Reset old title attribute if removed
270
- if(this.options.suppress && title) {
271
- target.attr('title', title).removeAttr(oldtitle);
272
- }
273
-
274
- // Remove qTip events associated with this API
275
- this._unbind(target);
276
-
277
- // Remove ID from used id objects, and delete object references
278
- // for better garbage collection and leak protection
279
- this.options = this.elements = this.cache = this.timers =
280
- this.plugins = this.mouse = NULL;
281
-
282
- // Delete epoxsed API object
283
- delete QTIP.api[this.id];
284
- }
285
-
286
- // If an immediate destory is needed
287
- if((immediate !== TRUE || this.triggering === 'hide') && this.rendered) {
288
- this.tooltip.one('tooltiphidden', $.proxy(process, this));
289
- !this.triggering && this.hide();
290
- }
291
-
292
- // If we're not in the process of hiding... process
293
- else { process.call(this); }
294
-
295
- return this.target;
296
- };
297
-
 
 
 
 
298
  ;function invalidOpt(a) {
299
  return a === NULL || $.type(a) !== 'object';
300
  }
@@ -351,7 +355,7 @@ function sanitizeOptions(opts) {
351
  }
352
 
353
  if('title' in content) {
354
- if(!invalidOpt(content.title)) {
355
  content.button = content.title.button;
356
  content.title = content.title.text;
357
  }
@@ -436,7 +440,7 @@ CHECKS = PROTOTYPE.checks = {
436
 
437
  // Position checks
438
  '^position.(my|at)$': function(obj, o, v){
439
- 'string' === typeof v && (obj[o] = new CORNER(v, o === 'at'));
440
  },
441
  '^position.container$': function(obj, o, v){
442
  this.rendered && this.tooltip.appendTo(v);
@@ -577,7 +581,6 @@ PROTOTYPE.set = function(option, value) {
577
 
578
  return this;
579
  };
580
-
581
  ;PROTOTYPE._update = function(content, element, reposition) {
582
  var self = this,
583
  cache = this.cache;
@@ -616,7 +619,7 @@ PROTOTYPE.set = function(option, value) {
616
 
617
  // Wait for content to be loaded, and reposition
618
  return this._waitForContent(element).then(function(images) {
619
- if(images.images && images.images.length && self.rendered && self.tooltip[0].offsetWidth > 0) {
620
  self.reposition(cache.event, !images.length);
621
  }
622
  });
@@ -689,8 +692,11 @@ PROTOTYPE._removeTitle = function(reposition)
689
  if(reposition !== FALSE) { this.reposition(); }
690
  }
691
  };
 
 
 
692
 
693
- ;PROTOTYPE.reposition = function(event, effect) {
694
  if(!this.rendered || this.positioning || this.destroyed) { return this; }
695
 
696
  // Set positioning flag
@@ -717,7 +723,7 @@ PROTOTYPE._removeTitle = function(reposition)
717
  win = $(window),
718
  doc = container[0].ownerDocument,
719
  mouse = this.mouse,
720
- pluginCalculations, offset;
721
 
722
  // Check if absolute position was passed
723
  if($.isArray(target) && target.length === 2) {
@@ -731,22 +737,19 @@ PROTOTYPE._removeTitle = function(reposition)
731
  // Force left top to allow flipping
732
  at = { x: LEFT, y: TOP };
733
 
734
- // Use the cached mouse coordinates if available, or passed event has no coordinates
735
- if(mouse && mouse.pageX && (adjust.mouse || !event || !event.pageX) ) {
736
- event = mouse;
737
  }
738
 
739
- // If the passed event has no coordinates (such as a scroll event)
740
- else if(!event || !event.pageX) {
741
- // Use the mouse origin that caused the show event, if distance hiding is enabled
742
- if((!adjust.mouse || this.options.show.distance) && cache.origin && cache.origin.pageX) {
743
- event = cache.origin;
744
- }
745
 
746
- // Use cached event for resize/scroll events
747
- else if(!event || (event && (event.type === 'resize' || event.type === 'scroll'))) {
748
- event = cache.event;
749
- }
750
  }
751
 
752
  // Calculate body and container offset and take them into account below
@@ -851,18 +854,26 @@ PROTOTYPE._removeTitle = function(reposition)
851
 
852
  // Use viewport adjustment plugin if enabled
853
  if(PLUGINS.viewport) {
854
- position.adjusted = PLUGINS.viewport(
855
  this, position, posOptions, targetWidth, targetHeight, tooltipWidth, tooltipHeight
856
  );
857
 
858
  // Apply offsets supplied by positioning plugin (if used)
859
- if(offset && position.adjusted.left) { position.left += offset.left; }
860
- if(offset && position.adjusted.top) { position.top += offset.top; }
 
 
 
861
  }
862
 
863
  // Viewport adjustment is disabled, set values to zero
864
  else { position.adjusted = { left: 0, top: 0 }; }
865
 
 
 
 
 
 
866
  // tooltipmove event
867
  if(!this._trigger('move', [position, viewport.elem || viewport], event)) { return this; }
868
  delete position.adjusted;
@@ -949,19 +960,28 @@ C.invert = function(z, center) {
949
  this[z] = this[z] === LEFT ? RIGHT : this[z] === RIGHT ? LEFT : center || this[z];
950
  };
951
 
952
- C.string = function() {
953
  var x = this.x, y = this.y;
954
- return x === y ? x : this.precedance === Y || (this.forceY && y !== 'center') ? y+' '+x : x+' '+y;
 
 
 
 
 
 
 
955
  };
956
 
957
  C.abbrev = function() {
958
- var result = this.string().split(' ');
959
  return result[0].charAt(0) + (result[1] && result[1].charAt(0) || '');
960
  };
961
 
962
  C.clone = function() {
963
  return new CORNER( this.string(), this.forceY );
964
- };;
 
 
965
  PROTOTYPE.toggle = function(state, event) {
966
  var cache = this.cache,
967
  options = this.options,
@@ -969,14 +989,14 @@ PROTOTYPE.toggle = function(state, event) {
969
 
970
  // Try to prevent flickering when tooltip overlaps show element
971
  if(event) {
972
- if((/over|enter/).test(event.type) && (/out|leave/).test(cache.event.type) &&
973
  options.show.target.add(event.target).length === options.show.target.length &&
974
  tooltip.has(event.relatedTarget).length) {
975
  return this;
976
  }
977
 
978
  // Cache event
979
- cache.event = cloneEvent(event);
980
  }
981
 
982
  // If we're currently waiting and we've just hidden... stop it
@@ -1021,7 +1041,7 @@ PROTOTYPE.toggle = function(state, event) {
1021
  // Execute state specific properties
1022
  if(state) {
1023
  // Store show origin coordinates
1024
- cache.origin = cloneEvent(this.mouse);
1025
 
1026
  // Update tooltip content & title if it's a dynamic function
1027
  if($.isFunction(contentOptions.text)) { this._updateContent(contentOptions.text, FALSE); }
@@ -1120,7 +1140,6 @@ PROTOTYPE.toggle = function(state, event) {
1120
  PROTOTYPE.show = function(event) { return this.toggle(TRUE, event); };
1121
 
1122
  PROTOTYPE.hide = function(event) { return this.toggle(FALSE, event); };
1123
-
1124
  ;PROTOTYPE.focus = function(event) {
1125
  if(!this.rendered || this.destroyed) { return this; }
1126
 
@@ -1166,7 +1185,6 @@ PROTOTYPE.blur = function(event) {
1166
 
1167
  return this;
1168
  };
1169
-
1170
  ;PROTOTYPE.disable = function(state) {
1171
  if(this.destroyed) { return this; }
1172
 
@@ -1191,7 +1209,6 @@ PROTOTYPE.blur = function(event) {
1191
  };
1192
 
1193
  PROTOTYPE.enable = function() { return this.disable(FALSE); };
1194
-
1195
  ;PROTOTYPE._createButton = function()
1196
  {
1197
  var self = this,
@@ -1239,7 +1256,6 @@ PROTOTYPE._updateButton = function(button)
1239
  if(button) { this._createButton(); }
1240
  else { elem.remove(); }
1241
  };
1242
-
1243
  ;// Widget class creator
1244
  function createWidgetClass(cls) {
1245
  return WIDGET.concat('').join(cls ? '-'+cls+' ' : ' ');
@@ -1268,19 +1284,8 @@ PROTOTYPE._setWidget = function()
1268
  if(elements.button) {
1269
  elements.button.toggleClass(NAMESPACE+'-icon', !on);
1270
  }
1271
- };;function cloneEvent(event) {
1272
- return event && {
1273
- type: event.type,
1274
- pageX: event.pageX,
1275
- pageY: event.pageY,
1276
- target: event.target,
1277
- relatedTarget: event.relatedTarget,
1278
- scrollX: event.scrollX || window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft,
1279
- scrollY: event.scrollY || window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop
1280
- } || {};
1281
- }
1282
-
1283
- function delay(callback, duration) {
1284
  // If tooltip has displayed, start hide timer
1285
  if(duration > 0) {
1286
  return setTimeout(
@@ -1291,7 +1296,7 @@ function delay(callback, duration) {
1291
  }
1292
 
1293
  function showMethod(event) {
1294
- if(this.tooltip.hasClass(CLASS_DISABLED)) { return FALSE; }
1295
 
1296
  // Clear hide timers
1297
  clearTimeout(this.timers.show);
@@ -1305,7 +1310,7 @@ function showMethod(event) {
1305
  }
1306
 
1307
  function hideMethod(event) {
1308
- if(this.tooltip.hasClass(CLASS_DISABLED)) { return FALSE; }
1309
 
1310
  // Check if new target was actually the tooltip element
1311
  var relatedTarget = $(event.relatedTarget),
@@ -1341,7 +1346,7 @@ function hideMethod(event) {
1341
  }
1342
 
1343
  function inactiveMethod(event) {
1344
- if(this.tooltip.hasClass(CLASS_DISABLED) || !this.options.hide.inactive) { return FALSE; }
1345
 
1346
  // Clear timer
1347
  clearTimeout(this.timers.inactive);
@@ -1358,66 +1363,35 @@ function repositionMethod(event) {
1358
 
1359
  // Store mouse coordinates
1360
  PROTOTYPE._storeMouse = function(event) {
1361
- (this.mouse = cloneEvent(event)).type = 'mousemove';
 
1362
  };
1363
 
1364
  // Bind events
1365
  PROTOTYPE._bind = function(targets, events, method, suffix, context) {
 
1366
  var ns = '.' + this._id + (suffix ? '-'+suffix : '');
1367
- events.length && $(targets).bind(
1368
  (events.split ? events : events.join(ns + ' ')) + ns,
1369
  $.proxy(method, context || this)
1370
  );
 
1371
  };
1372
  PROTOTYPE._unbind = function(targets, suffix) {
1373
- $(targets).unbind('.' + this._id + (suffix ? '-'+suffix : ''));
 
1374
  };
1375
 
1376
- // Apply common event handlers using delegate (avoids excessive .bind calls!)
1377
- var ns = '.'+NAMESPACE;
1378
  function delegate(selector, events, method) {
1379
  $(document.body).delegate(selector,
1380
- (events.split ? events : events.join(ns + ' ')) + ns,
1381
  function() {
1382
  var api = QTIP.api[ $.attr(this, ATTR_ID) ];
1383
  api && !api.disabled && method.apply(api, arguments);
1384
  }
1385
  );
1386
  }
1387
-
1388
- $(function() {
1389
- delegate(SELECTOR, ['mouseenter', 'mouseleave'], function(event) {
1390
- var state = event.type === 'mouseenter',
1391
- tooltip = $(event.currentTarget),
1392
- target = $(event.relatedTarget || event.target),
1393
- options = this.options;
1394
-
1395
- // On mouseenter...
1396
- if(state) {
1397
- // Focus the tooltip on mouseenter (z-index stacking)
1398
- this.focus(event);
1399
-
1400
- // Clear hide timer on tooltip hover to prevent it from closing
1401
- tooltip.hasClass(CLASS_FIXED) && !tooltip.hasClass(CLASS_DISABLED) && clearTimeout(this.timers.hide);
1402
- }
1403
-
1404
- // On mouseleave...
1405
- else {
1406
- // Hide when we leave the tooltip and not onto the show target (if a hide event is set)
1407
- if(options.position.target === 'mouse' && options.hide.event &&
1408
- options.show.target && !target.closest(options.show.target[0]).length) {
1409
- this.hide(event);
1410
- }
1411
- }
1412
-
1413
- // Add hover class
1414
- tooltip.toggleClass(CLASS_HOVER, state);
1415
- });
1416
-
1417
- // Define events which reset the 'inactive' event handler
1418
- delegate('['+ATTR_ID+']', INACTIVE_EVENTS, inactiveMethod);
1419
- });
1420
-
1421
  // Event trigger
1422
  PROTOTYPE._trigger = function(type, args, event) {
1423
  var callback = $.Event('tooltip'+type);
@@ -1430,35 +1404,40 @@ PROTOTYPE._trigger = function(type, args, event) {
1430
  return !callback.isDefaultPrevented();
1431
  };
1432
 
1433
- PROTOTYPE._bindEvents = function(showEvents, hideEvents, showTarget, hideTarget, showMethod, hideMethod) {
 
 
 
 
1434
  // If hide and show targets are the same...
1435
- if(hideTarget.add(showTarget).length === hideTarget.length) {
1436
- var toggleEvents = [];
1437
 
1438
  // Filter identical show/hide events
1439
- hideEvents = $.map(hideEvents, function(type) {
1440
  var showIndex = $.inArray(type, showEvents);
1441
 
1442
  // Both events are identical, remove from both hide and show events
1443
  // and append to toggleEvents
1444
- if(showIndex > -1) {
1445
- toggleEvents.push( showEvents.splice( showIndex, 1 )[0] );
1446
- return;
1447
- }
1448
-
1449
- return type;
1450
  });
1451
 
1452
  // Toggle events are special case of identical show/hide events, which happen in sequence
1453
- toggleEvents.length && this._bind(showTarget, toggleEvents, function(event) {
1454
- var state = this.rendered ? this.tooltip[0].offsetWidth > 0 : false;
1455
- (state ? hideMethod : showMethod).call(this, event);
1456
- });
 
 
 
 
 
 
 
1457
  }
1458
 
1459
  // Apply show/hide/toggle events
1460
- this._bind(showTarget, showEvents, showMethod);
1461
- this._bind(hideTarget, hideEvents, hideMethod);
1462
  };
1463
 
1464
  PROTOTYPE._assignInitialEvents = function(event) {
@@ -1468,6 +1447,11 @@ PROTOTYPE._assignInitialEvents = function(event) {
1468
  showEvents = options.show.event ? $.trim('' + options.show.event).split(' ') : [],
1469
  hideEvents = options.hide.event ? $.trim('' + options.hide.event).split(' ') : [];
1470
 
 
 
 
 
 
1471
  /*
1472
  * Make sure hoverIntent functions properly by using mouseleave as a hide event if
1473
  * mouseenter/mouseout is used for show.event, even if it isn't in the users options.
@@ -1492,19 +1476,20 @@ PROTOTYPE._assignInitialEvents = function(event) {
1492
  if(this.disabled || this.destroyed) { return FALSE; }
1493
 
1494
  // Cache the event data
1495
- this.cache.event = cloneEvent(event);
1496
- this.cache.target = event ? $(event.target) : [undefined];
1497
 
1498
  // Start the event sequence
1499
  clearTimeout(this.timers.show);
1500
  this.timers.show = delay.call(this,
1501
  function() { this.render(typeof event === 'object' || options.show.ready); },
1502
- options.show.delay
1503
  );
1504
  }
1505
 
1506
  // Filter and bind events
1507
  this._bindEvents(showEvents, hideEvents, showTarget, hideTarget, hoverIntent, function() {
 
1508
  clearTimeout(this.timers.show);
1509
  });
1510
 
@@ -1578,10 +1563,10 @@ PROTOTYPE._assignEvents = function() {
1578
  // Check if the tooltip hides when inactive
1579
  if('number' === typeof options.hide.inactive) {
1580
  // Bind inactive method to show target(s) as a custom event
1581
- this._bind(showTarget, 'qtip-'+this.id+'-inactive', inactiveMethod);
1582
 
1583
  // Define events which reset the 'inactive' event handler
1584
- this._bind(hideTarget.add(tooltip), QTIP.inactiveEvents, inactiveMethod, '-inactive');
1585
  }
1586
 
1587
  // Filter and bind events
@@ -1613,6 +1598,7 @@ PROTOTYPE._assignEvents = function() {
1613
  if(options.hide.event) {
1614
  // Track if we're on the target or not
1615
  this._bind(showTarget, ['mouseenter', 'mouseleave'], function(event) {
 
1616
  this.cache.onTarget = event.type === 'mouseenter';
1617
  });
1618
  }
@@ -1640,22 +1626,68 @@ PROTOTYPE._assignEvents = function() {
1640
 
1641
  // Un-assignment method
1642
  PROTOTYPE._unassignEvents = function() {
1643
- var targets = [
1644
- this.options.show.target[0],
1645
- this.options.hide.target[0],
1646
- this.rendered && this.tooltip[0],
1647
- this.options.position.container[0],
1648
- this.options.position.viewport[0],
1649
- this.options.position.container.closest('html')[0], // unfocus
1650
- window,
1651
- document
1652
- ];
1653
-
1654
- this._unbind($([]).pushStack( $.grep(targets, function(i) {
1655
- return typeof i === 'object';
1656
- })));
 
 
 
 
 
 
 
 
 
 
 
 
 
1657
  };
1658
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1659
  ;// Initialization method
1660
  function init(elem, id, opts) {
1661
  var obj, posOptions, attr, config, title,
@@ -1736,11 +1768,6 @@ function init(elem, id, opts) {
1736
  obj = new QTip(elem, config, id, !!attr);
1737
  elem.data(NAMESPACE, obj);
1738
 
1739
- // Catch remove/removeqtip events on target element to destroy redundant tooltip
1740
- elem.one('remove.qtip-'+id+' removeqtip.qtip-'+id, function() {
1741
- var api; if((api = $(this).data(NAMESPACE))) { api.destroy(true); }
1742
- });
1743
-
1744
  return obj;
1745
  }
1746
 
@@ -1888,9 +1915,8 @@ if(!$.ui) {
1888
  $['cleanData'+replaceSuffix].apply(this, arguments);
1889
  };
1890
  }
1891
-
1892
  ;// qTip version
1893
- QTIP.version = '2.2.0';
1894
 
1895
  // Base ID for all qTips
1896
  QTIP.nextid = 0;
@@ -1971,631 +1997,6 @@ QTIP.defaults = {
1971
  blur: NULL
1972
  }
1973
  };
1974
-
1975
- ;var TIP,
1976
-
1977
- // .bind()/.on() namespace
1978
- TIPNS = '.qtip-tip',
1979
-
1980
- // Common CSS strings
1981
- MARGIN = 'margin',
1982
- BORDER = 'border',
1983
- COLOR = 'color',
1984
- BG_COLOR = 'background-color',
1985
- TRANSPARENT = 'transparent',
1986
- IMPORTANT = ' !important',
1987
-
1988
- // Check if the browser supports <canvas/> elements
1989
- HASCANVAS = !!document.createElement('canvas').getContext,
1990
-
1991
- // Invalid colour values used in parseColours()
1992
- INVALID = /rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i;
1993
-
1994
- // Camel-case method, taken from jQuery source
1995
- // http://code.jquery.com/jquery-1.8.0.js
1996
- function camel(s) { return s.charAt(0).toUpperCase() + s.slice(1); }
1997
-
1998
- /*
1999
- * Modified from Modernizr's testPropsAll()
2000
- * http://modernizr.com/downloads/modernizr-latest.js
2001
- */
2002
- var cssProps = {}, cssPrefixes = ["Webkit", "O", "Moz", "ms"];
2003
- function vendorCss(elem, prop) {
2004
- var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
2005
- props = (prop + ' ' + cssPrefixes.join(ucProp + ' ') + ucProp).split(' '),
2006
- cur, val, i = 0;
2007
-
2008
- // If the property has already been mapped...
2009
- if(cssProps[prop]) { return elem.css(cssProps[prop]); }
2010
-
2011
- while((cur = props[i++])) {
2012
- if((val = elem.css(cur)) !== undefined) {
2013
- return cssProps[prop] = cur, val;
2014
- }
2015
- }
2016
- }
2017
-
2018
- // Parse a given elements CSS property into an int
2019
- function intCss(elem, prop) {
2020
- return Math.ceil(parseFloat(vendorCss(elem, prop)));
2021
- }
2022
-
2023
-
2024
- // VML creation (for IE only)
2025
- if(!HASCANVAS) {
2026
- var createVML = function(tag, props, style) {
2027
- return '<qtipvml:'+tag+' xmlns="urn:schemas-microsoft.com:vml" class="qtip-vml" '+(props||'')+
2028
- ' style="behavior: url(#default#VML); '+(style||'')+ '" />';
2029
- };
2030
- }
2031
-
2032
- // Canvas only definitions
2033
- else {
2034
- var PIXEL_RATIO = window.devicePixelRatio || 1,
2035
- BACKING_STORE_RATIO = (function() {
2036
- var context = document.createElement('canvas').getContext('2d');
2037
- return context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio ||
2038
- context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || 1;
2039
- }()),
2040
- SCALE = PIXEL_RATIO / BACKING_STORE_RATIO;
2041
- }
2042
-
2043
-
2044
- function Tip(qtip, options) {
2045
- this._ns = 'tip';
2046
- this.options = options;
2047
- this.offset = options.offset;
2048
- this.size = [ options.width, options.height ];
2049
-
2050
- // Initialize
2051
- this.init( (this.qtip = qtip) );
2052
- }
2053
-
2054
- $.extend(Tip.prototype, {
2055
- init: function(qtip) {
2056
- var context, tip;
2057
-
2058
- // Create tip element and prepend to the tooltip
2059
- tip = this.element = qtip.elements.tip = $('<div />', { 'class': NAMESPACE+'-tip' }).prependTo(qtip.tooltip);
2060
-
2061
- // Create tip drawing element(s)
2062
- if(HASCANVAS) {
2063
- // save() as soon as we create the canvas element so FF2 doesn't bork on our first restore()!
2064
- context = $('<canvas />').appendTo(this.element)[0].getContext('2d');
2065
-
2066
- // Setup constant parameters
2067
- context.lineJoin = 'miter';
2068
- context.miterLimit = 100000;
2069
- context.save();
2070
- }
2071
- else {
2072
- context = createVML('shape', 'coordorigin="0,0"', 'position:absolute;');
2073
- this.element.html(context + context);
2074
-
2075
- // Prevent mousing down on the tip since it causes problems with .live() handling in IE due to VML
2076
- qtip._bind( $('*', tip).add(tip), ['click', 'mousedown'], function(event) { event.stopPropagation(); }, this._ns);
2077
- }
2078
-
2079
- // Bind update events
2080
- qtip._bind(qtip.tooltip, 'tooltipmove', this.reposition, this._ns, this);
2081
-
2082
- // Create it
2083
- this.create();
2084
- },
2085
-
2086
- _swapDimensions: function() {
2087
- this.size[0] = this.options.height;
2088
- this.size[1] = this.options.width;
2089
- },
2090
- _resetDimensions: function() {
2091
- this.size[0] = this.options.width;
2092
- this.size[1] = this.options.height;
2093
- },
2094
-
2095
- _useTitle: function(corner) {
2096
- var titlebar = this.qtip.elements.titlebar;
2097
- return titlebar && (
2098
- corner.y === TOP || (corner.y === CENTER && this.element.position().top + (this.size[1] / 2) + this.options.offset < titlebar.outerHeight(TRUE))
2099
- );
2100
- },
2101
-
2102
- _parseCorner: function(corner) {
2103
- var my = this.qtip.options.position.my;
2104
-
2105
- // Detect corner and mimic properties
2106
- if(corner === FALSE || my === FALSE) {
2107
- corner = FALSE;
2108
- }
2109
- else if(corner === TRUE) {
2110
- corner = new CORNER( my.string() );
2111
- }
2112
- else if(!corner.string) {
2113
- corner = new CORNER(corner);
2114
- corner.fixed = TRUE;
2115
- }
2116
-
2117
- return corner;
2118
- },
2119
-
2120
- _parseWidth: function(corner, side, use) {
2121
- var elements = this.qtip.elements,
2122
- prop = BORDER + camel(side) + 'Width';
2123
-
2124
- return (use ? intCss(use, prop) : (
2125
- intCss(elements.content, prop) ||
2126
- intCss(this._useTitle(corner) && elements.titlebar || elements.content, prop) ||
2127
- intCss(elements.tooltip, prop)
2128
- )) || 0;
2129
- },
2130
-
2131
- _parseRadius: function(corner) {
2132
- var elements = this.qtip.elements,
2133
- prop = BORDER + camel(corner.y) + camel(corner.x) + 'Radius';
2134
-
2135
- return BROWSER.ie < 9 ? 0 :
2136
- intCss(this._useTitle(corner) && elements.titlebar || elements.content, prop) ||
2137
- intCss(elements.tooltip, prop) || 0;
2138
- },
2139
-
2140
- _invalidColour: function(elem, prop, compare) {
2141
- var val = elem.css(prop);
2142
- return !val || (compare && val === elem.css(compare)) || INVALID.test(val) ? FALSE : val;
2143
- },
2144
-
2145
- _parseColours: function(corner) {
2146
- var elements = this.qtip.elements,
2147
- tip = this.element.css('cssText', ''),
2148
- borderSide = BORDER + camel(corner[ corner.precedance ]) + camel(COLOR),
2149
- colorElem = this._useTitle(corner) && elements.titlebar || elements.content,
2150
- css = this._invalidColour, color = [];
2151
-
2152
- // Attempt to detect the background colour from various elements, left-to-right precedance
2153
- color[0] = css(tip, BG_COLOR) || css(colorElem, BG_COLOR) || css(elements.content, BG_COLOR) ||
2154
- css(elements.tooltip, BG_COLOR) || tip.css(BG_COLOR);
2155
-
2156
- // Attempt to detect the correct border side colour from various elements, left-to-right precedance
2157
- color[1] = css(tip, borderSide, COLOR) || css(colorElem, borderSide, COLOR) ||
2158
- css(elements.content, borderSide, COLOR) || css(elements.tooltip, borderSide, COLOR) || elements.tooltip.css(borderSide);
2159
-
2160
- // Reset background and border colours
2161
- $('*', tip).add(tip).css('cssText', BG_COLOR+':'+TRANSPARENT+IMPORTANT+';'+BORDER+':0'+IMPORTANT+';');
2162
-
2163
- return color;
2164
- },
2165
-
2166
- _calculateSize: function(corner) {
2167
- var y = corner.precedance === Y,
2168
- width = this.options['width'],
2169
- height = this.options['height'],
2170
- isCenter = corner.abbrev() === 'c',
2171
- base = (y ? width: height) * (isCenter ? 0.5 : 1),
2172
- pow = Math.pow,
2173
- round = Math.round,
2174
- bigHyp, ratio, result,
2175
-
2176
- smallHyp = Math.sqrt( pow(base, 2) + pow(height, 2) ),
2177
- hyp = [ (this.border / base) * smallHyp, (this.border / height) * smallHyp ];
2178
-
2179
- hyp[2] = Math.sqrt( pow(hyp[0], 2) - pow(this.border, 2) );
2180
- hyp[3] = Math.sqrt( pow(hyp[1], 2) - pow(this.border, 2) );
2181
-
2182
- bigHyp = smallHyp + hyp[2] + hyp[3] + (isCenter ? 0 : hyp[0]);
2183
- ratio = bigHyp / smallHyp;
2184
-
2185
- result = [ round(ratio * width), round(ratio * height) ];
2186
- return y ? result : result.reverse();
2187
- },
2188
-
2189
- // Tip coordinates calculator
2190
- _calculateTip: function(corner, size, scale) {
2191
- scale = scale || 1;
2192
- size = size || this.size;
2193
-
2194
- var width = size[0] * scale,
2195
- height = size[1] * scale,
2196
- width2 = Math.ceil(width / 2), height2 = Math.ceil(height / 2),
2197
-
2198
- // Define tip coordinates in terms of height and width values
2199
- tips = {
2200
- br: [0,0, width,height, width,0],
2201
- bl: [0,0, width,0, 0,height],
2202
- tr: [0,height, width,0, width,height],
2203
- tl: [0,0, 0,height, width,height],
2204
- tc: [0,height, width2,0, width,height],
2205
- bc: [0,0, width,0, width2,height],
2206
- rc: [0,0, width,height2, 0,height],
2207
- lc: [width,0, width,height, 0,height2]
2208
- };
2209
-
2210
- // Set common side shapes
2211
- tips.lt = tips.br; tips.rt = tips.bl;
2212
- tips.lb = tips.tr; tips.rb = tips.tl;
2213
-
2214
- return tips[ corner.abbrev() ];
2215
- },
2216
-
2217
- // Tip coordinates drawer (canvas)
2218
- _drawCoords: function(context, coords) {
2219
- context.beginPath();
2220
- context.moveTo(coords[0], coords[1]);
2221
- context.lineTo(coords[2], coords[3]);
2222
- context.lineTo(coords[4], coords[5]);
2223
- context.closePath();
2224
- },
2225
-
2226
- create: function() {
2227
- // Determine tip corner
2228
- var c = this.corner = (HASCANVAS || BROWSER.ie) && this._parseCorner(this.options.corner);
2229
-
2230
- // If we have a tip corner...
2231
- if( (this.enabled = !!this.corner && this.corner.abbrev() !== 'c') ) {
2232
- // Cache it
2233
- this.qtip.cache.corner = c.clone();
2234
-
2235
- // Create it
2236
- this.update();
2237
- }
2238
-
2239
- // Toggle tip element
2240
- this.element.toggle(this.enabled);
2241
-
2242
- return this.corner;
2243
- },
2244
-
2245
- update: function(corner, position) {
2246
- if(!this.enabled) { return this; }
2247
-
2248
- var elements = this.qtip.elements,
2249
- tip = this.element,
2250
- inner = tip.children(),
2251
- options = this.options,
2252
- curSize = this.size,
2253
- mimic = options.mimic,
2254
- round = Math.round,
2255
- color, precedance, context,
2256
- coords, bigCoords, translate, newSize, border, BACKING_STORE_RATIO;
2257
-
2258
- // Re-determine tip if not already set
2259
- if(!corner) { corner = this.qtip.cache.corner || this.corner; }
2260
-
2261
- // Use corner property if we detect an invalid mimic value
2262
- if(mimic === FALSE) { mimic = corner; }
2263
-
2264
- // Otherwise inherit mimic properties from the corner object as necessary
2265
- else {
2266
- mimic = new CORNER(mimic);
2267
- mimic.precedance = corner.precedance;
2268
-
2269
- if(mimic.x === 'inherit') { mimic.x = corner.x; }
2270
- else if(mimic.y === 'inherit') { mimic.y = corner.y; }
2271
- else if(mimic.x === mimic.y) {
2272
- mimic[ corner.precedance ] = corner[ corner.precedance ];
2273
- }
2274
- }
2275
- precedance = mimic.precedance;
2276
-
2277
- // Ensure the tip width.height are relative to the tip position
2278
- if(corner.precedance === X) { this._swapDimensions(); }
2279
- else { this._resetDimensions(); }
2280
-
2281
- // Update our colours
2282
- color = this.color = this._parseColours(corner);
2283
-
2284
- // Detect border width, taking into account colours
2285
- if(color[1] !== TRANSPARENT) {
2286
- // Grab border width
2287
- border = this.border = this._parseWidth(corner, corner[corner.precedance]);
2288
-
2289
- // If border width isn't zero, use border color as fill if it's not invalid (1.0 style tips)
2290
- if(options.border && border < 1 && !INVALID.test(color[1])) { color[0] = color[1]; }
2291
-
2292
- // Set border width (use detected border width if options.border is true)
2293
- this.border = border = options.border !== TRUE ? options.border : border;
2294
- }
2295
-
2296
- // Border colour was invalid, set border to zero
2297
- else { this.border = border = 0; }
2298
-
2299
- // Determine tip size
2300
- newSize = this.size = this._calculateSize(corner);
2301
- tip.css({
2302
- width: newSize[0],
2303
- height: newSize[1],
2304
- lineHeight: newSize[1]+'px'
2305
- });
2306
-
2307
- // Calculate tip translation
2308
- if(corner.precedance === Y) {
2309
- translate = [
2310
- round(mimic.x === LEFT ? border : mimic.x === RIGHT ? newSize[0] - curSize[0] - border : (newSize[0] - curSize[0]) / 2),
2311
- round(mimic.y === TOP ? newSize[1] - curSize[1] : 0)
2312
- ];
2313
- }
2314
- else {
2315
- translate = [
2316
- round(mimic.x === LEFT ? newSize[0] - curSize[0] : 0),
2317
- round(mimic.y === TOP ? border : mimic.y === BOTTOM ? newSize[1] - curSize[1] - border : (newSize[1] - curSize[1]) / 2)
2318
- ];
2319
- }
2320
-
2321
- // Canvas drawing implementation
2322
- if(HASCANVAS) {
2323
- // Grab canvas context and clear/save it
2324
- context = inner[0].getContext('2d');
2325
- context.restore(); context.save();
2326
- context.clearRect(0,0,6000,6000);
2327
-
2328
- // Calculate coordinates
2329
- coords = this._calculateTip(mimic, curSize, SCALE);
2330
- bigCoords = this._calculateTip(mimic, this.size, SCALE);
2331
-
2332
- // Set the canvas size using calculated size
2333
- inner.attr(WIDTH, newSize[0] * SCALE).attr(HEIGHT, newSize[1] * SCALE);
2334
- inner.css(WIDTH, newSize[0]).css(HEIGHT, newSize[1]);
2335
-
2336
- // Draw the outer-stroke tip
2337
- this._drawCoords(context, bigCoords);
2338
- context.fillStyle = color[1];
2339
- context.fill();
2340
-
2341
- // Draw the actual tip
2342
- context.translate(translate[0] * SCALE, translate[1] * SCALE);
2343
- this._drawCoords(context, coords);
2344
- context.fillStyle = color[0];
2345
- context.fill();
2346
- }
2347
-
2348
- // VML (IE Proprietary implementation)
2349
- else {
2350
- // Calculate coordinates
2351
- coords = this._calculateTip(mimic);
2352
-
2353
- // Setup coordinates string
2354
- coords = 'm' + coords[0] + ',' + coords[1] + ' l' + coords[2] +
2355
- ',' + coords[3] + ' ' + coords[4] + ',' + coords[5] + ' xe';
2356
-
2357
- // Setup VML-specific offset for pixel-perfection
2358
- translate[2] = border && /^(r|b)/i.test(corner.string()) ?
2359
- BROWSER.ie === 8 ? 2 : 1 : 0;
2360
-
2361
- // Set initial CSS
2362
- inner.css({
2363
- coordsize: (newSize[0]+border) + ' ' + (newSize[1]+border),
2364
- antialias: ''+(mimic.string().indexOf(CENTER) > -1),
2365
- left: translate[0] - (translate[2] * Number(precedance === X)),
2366
- top: translate[1] - (translate[2] * Number(precedance === Y)),
2367
- width: newSize[0] + border,
2368
- height: newSize[1] + border
2369
- })
2370
- .each(function(i) {
2371
- var $this = $(this);
2372
-
2373
- // Set shape specific attributes
2374
- $this[ $this.prop ? 'prop' : 'attr' ]({
2375
- coordsize: (newSize[0]+border) + ' ' + (newSize[1]+border),
2376
- path: coords,
2377
- fillcolor: color[0],
2378
- filled: !!i,
2379
- stroked: !i
2380
- })
2381
- .toggle(!!(border || i));
2382
-
2383
- // Check if border is enabled and add stroke element
2384
- !i && $this.html( createVML(
2385
- 'stroke', 'weight="'+(border*2)+'px" color="'+color[1]+'" miterlimit="1000" joinstyle="miter"'
2386
- ) );
2387
- });
2388
- }
2389
-
2390
- // Opera bug #357 - Incorrect tip position
2391
- // https://github.com/Craga89/qTip2/issues/367
2392
- window.opera && setTimeout(function() {
2393
- elements.tip.css({
2394
- display: 'inline-block',
2395
- visibility: 'visible'
2396
- });
2397
- }, 1);
2398
-
2399
- // Position if needed
2400
- if(position !== FALSE) { this.calculate(corner, newSize); }
2401
- },
2402
-
2403
- calculate: function(corner, size) {
2404
- if(!this.enabled) { return FALSE; }
2405
-
2406
- var self = this,
2407
- elements = this.qtip.elements,
2408
- tip = this.element,
2409
- userOffset = this.options.offset,
2410
- isWidget = elements.tooltip.hasClass('ui-widget'),
2411
- position = { },
2412
- precedance, corners;
2413
-
2414
- // Inherit corner if not provided
2415
- corner = corner || this.corner;
2416
- precedance = corner.precedance;
2417
-
2418
- // Determine which tip dimension to use for adjustment
2419
- size = size || this._calculateSize(corner);
2420
-
2421
- // Setup corners and offset array
2422
- corners = [ corner.x, corner.y ];
2423
- if(precedance === X) { corners.reverse(); }
2424
-
2425
- // Calculate tip position
2426
- $.each(corners, function(i, side) {
2427
- var b, bc, br;
2428
-
2429
- if(side === CENTER) {
2430
- b = precedance === Y ? LEFT : TOP;
2431
- position[ b ] = '50%';
2432
- position[MARGIN+'-' + b] = -Math.round(size[ precedance === Y ? 0 : 1 ] / 2) + userOffset;
2433
- }
2434
- else {
2435
- b = self._parseWidth(corner, side, elements.tooltip);
2436
- bc = self._parseWidth(corner, side, elements.content);
2437
- br = self._parseRadius(corner);
2438
-
2439
- position[ side ] = Math.max(-self.border, i ? bc : (userOffset + (br > b ? br : -b)));
2440
- }
2441
- });
2442
-
2443
- // Adjust for tip size
2444
- position[ corner[precedance] ] -= size[ precedance === X ? 0 : 1 ];
2445
-
2446
- // Set and return new position
2447
- tip.css({ margin: '', top: '', bottom: '', left: '', right: '' }).css(position);
2448
- return position;
2449
- },
2450
-
2451
- reposition: function(event, api, pos, viewport) {
2452
- if(!this.enabled) { return; }
2453
-
2454
- var cache = api.cache,
2455
- newCorner = this.corner.clone(),
2456
- adjust = pos.adjusted,
2457
- method = api.options.position.adjust.method.split(' '),
2458
- horizontal = method[0],
2459
- vertical = method[1] || method[0],
2460
- shift = { left: FALSE, top: FALSE, x: 0, y: 0 },
2461
- offset, css = {}, props;
2462
-
2463
- function shiftflip(direction, precedance, popposite, side, opposite) {
2464
- // Horizontal - Shift or flip method
2465
- if(direction === SHIFT && newCorner.precedance === precedance && adjust[side] && newCorner[popposite] !== CENTER) {
2466
- newCorner.precedance = newCorner.precedance === X ? Y : X;
2467
- }
2468
- else if(direction !== SHIFT && adjust[side]){
2469
- newCorner[precedance] = newCorner[precedance] === CENTER ?
2470
- (adjust[side] > 0 ? side : opposite) : (newCorner[precedance] === side ? opposite : side);
2471
- }
2472
- }
2473
-
2474
- function shiftonly(xy, side, opposite) {
2475
- if(newCorner[xy] === CENTER) {
2476
- css[MARGIN+'-'+side] = shift[xy] = offset[MARGIN+'-'+side] - adjust[side];
2477
- }
2478
- else {
2479
- props = offset[opposite] !== undefined ?
2480
- [ adjust[side], -offset[side] ] : [ -adjust[side], offset[side] ];
2481
-
2482
- if( (shift[xy] = Math.max(props[0], props[1])) > props[0] ) {
2483
- pos[side] -= adjust[side];
2484
- shift[side] = FALSE;
2485
- }
2486
-
2487
- css[ offset[opposite] !== undefined ? opposite : side ] = shift[xy];
2488
- }
2489
- }
2490
-
2491
- // If our tip position isn't fixed e.g. doesn't adjust with viewport...
2492
- if(this.corner.fixed !== TRUE) {
2493
- // Perform shift/flip adjustments
2494
- shiftflip(horizontal, X, Y, LEFT, RIGHT);
2495
- shiftflip(vertical, Y, X, TOP, BOTTOM);
2496
-
2497
- // Update and redraw the tip if needed (check cached details of last drawn tip)
2498
- if(newCorner.string() !== cache.corner.string() && (cache.cornerTop !== adjust.top || cache.cornerLeft !== adjust.left)) {
2499
- this.update(newCorner, FALSE);
2500
- }
2501
- }
2502
-
2503
- // Setup tip offset properties
2504
- offset = this.calculate(newCorner);
2505
-
2506
- // Readjust offset object to make it left/top
2507
- if(offset.right !== undefined) { offset.left = -offset.right; }
2508
- if(offset.bottom !== undefined) { offset.top = -offset.bottom; }
2509
- offset.user = this.offset;
2510
-
2511
- // Perform shift adjustments
2512
- if(shift.left = (horizontal === SHIFT && !!adjust.left)) { shiftonly(X, LEFT, RIGHT); }
2513
- if(shift.top = (vertical === SHIFT && !!adjust.top)) { shiftonly(Y, TOP, BOTTOM); }
2514
-
2515
- /*
2516
- * If the tip is adjusted in both dimensions, or in a
2517
- * direction that would cause it to be anywhere but the
2518
- * outer border, hide it!
2519
- */
2520
- this.element.css(css).toggle(
2521
- !((shift.x && shift.y) || (newCorner.x === CENTER && shift.y) || (newCorner.y === CENTER && shift.x))
2522
- );
2523
-
2524
- // Adjust position to accomodate tip dimensions
2525
- pos.left -= offset.left.charAt ? offset.user :
2526
- horizontal !== SHIFT || shift.top || !shift.left && !shift.top ? offset.left + this.border : 0;
2527
- pos.top -= offset.top.charAt ? offset.user :
2528
- vertical !== SHIFT || shift.left || !shift.left && !shift.top ? offset.top + this.border : 0;
2529
-
2530
- // Cache details
2531
- cache.cornerLeft = adjust.left; cache.cornerTop = adjust.top;
2532
- cache.corner = newCorner.clone();
2533
- },
2534
-
2535
- destroy: function() {
2536
- // Unbind events
2537
- this.qtip._unbind(this.qtip.tooltip, this._ns);
2538
-
2539
- // Remove the tip element(s)
2540
- if(this.qtip.elements.tip) {
2541
- this.qtip.elements.tip.find('*')
2542
- .remove().end().remove();
2543
- }
2544
- }
2545
- });
2546
-
2547
- TIP = PLUGINS.tip = function(api) {
2548
- return new Tip(api, api.options.style.tip);
2549
- };
2550
-
2551
- // Initialize tip on render
2552
- TIP.initialize = 'render';
2553
-
2554
- // Setup plugin sanitization options
2555
- TIP.sanitize = function(options) {
2556
- if(options.style && 'tip' in options.style) {
2557
- var opts = options.style.tip;
2558
- if(typeof opts !== 'object') { opts = options.style.tip = { corner: opts }; }
2559
- if(!(/string|boolean/i).test(typeof opts.corner)) { opts.corner = TRUE; }
2560
- }
2561
- };
2562
-
2563
- // Add new option checks for the plugin
2564
- CHECKS.tip = {
2565
- '^position.my|style.tip.(corner|mimic|border)$': function() {
2566
- // Make sure a tip can be drawn
2567
- this.create();
2568
-
2569
- // Reposition the tooltip
2570
- this.qtip.reposition();
2571
- },
2572
- '^style.tip.(height|width)$': function(obj) {
2573
- // Re-set dimensions and redraw the tip
2574
- this.size = [ obj.width, obj.height ];
2575
- this.update();
2576
-
2577
- // Reposition the tooltip
2578
- this.qtip.reposition();
2579
- },
2580
- '^content.title|style.(classes|widget)$': function() {
2581
- this.update();
2582
- }
2583
- };
2584
-
2585
- // Extend original qTip defaults
2586
- $.extend(TRUE, QTIP.defaults, {
2587
- style: {
2588
- tip: {
2589
- corner: TRUE,
2590
- mimic: FALSE,
2591
- width: 6,
2592
- height: 6,
2593
- border: TRUE,
2594
- offset: 0
2595
- }
2596
- }
2597
- });
2598
-
2599
  ;PLUGINS.viewport = function(api, position, posOptions, targetWidth, targetHeight, elemWidth, elemHeight)
2600
  {
2601
  var target = posOptions.target,
@@ -2610,7 +2011,7 @@ $.extend(TRUE, QTIP.defaults, {
2610
  container = posOptions.container,
2611
  cache = api.cache,
2612
  adjusted = { left: 0, top: 0 },
2613
- fixed, newMy, newClass, containerOffset, containerStatic,
2614
  viewportWidth, viewportHeight, viewportScroll, viewportOffset;
2615
 
2616
  // If viewport is not a jQuery element, or it's the window/document, or no adjustment method is used... return
@@ -2697,17 +2098,11 @@ $.extend(TRUE, QTIP.defaults, {
2697
  // Adjust position based onviewport and adjustment options
2698
  adjusted = {
2699
  left: methodX !== 'none' ? calculate( X, Y, methodX, adjust.x, LEFT, RIGHT, WIDTH, targetWidth, elemWidth ) : 0,
2700
- top: methodY !== 'none' ? calculate( Y, X, methodY, adjust.y, TOP, BOTTOM, HEIGHT, targetHeight, elemHeight ) : 0
 
2701
  };
2702
 
2703
- // Set tooltip position class if it's changed
2704
- if(newMy && cache.lastClass !== (newClass = NAMESPACE + '-pos-' + newMy.abbrev())) {
2705
- tooltip.removeClass(api.cache.lastClass).addClass( (api.cache.lastClass = newClass) );
2706
- }
2707
-
2708
  return adjusted;
2709
  };
2710
  ;}));
2711
  }( window, document ));
2712
-
2713
-
1
  /*
2
+ * qTip2 - Pretty powerful tooltips - v2.2.1
3
  * http://qtip2.com
4
  *
5
+ * Copyright (c) 2014
6
+ * Released under the MIT licenses
7
  * http://jquery.org/license
8
  *
9
+ * Date: Sun Sep 7 2014 10:41 EDT-0400
10
+ * Plugins: viewport
11
+ * Styles: core css3
12
  */
13
  /*global window: false, jQuery: false, console: false, define: false */
14
 
27
  }
28
  (function($) {
29
  "use strict"; // Enable ECMAScript "strict" operation for this function. See more: http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/
 
30
  ;// Munge the primitives - Paul Irish tip
31
  var TRUE = true,
32
  FALSE = false,
78
  * Credit to James Padolsey for the original implemntation!
79
  */
80
  ie: (function(){
81
+ for (
82
+ var v = 4, i = document.createElement("div");
83
+ (i.innerHTML = "<!--[if gt IE " + v + "]><i></i><![endif]-->") && i.getElementsByTagName("i")[0];
84
+ v+=1
85
+ ) {}
86
  return v > 4 ? v : NaN;
87
  }()),
88
 
94
  .replace('undefined', '3_2').replace('_', '.').replace('_', '')
95
  ) || FALSE
96
  };
97
+ ;function QTip(target, options, id, attr) {
98
+ // Elements and ID
99
+ this.id = id;
100
+ this.target = target;
101
+ this.tooltip = NULL;
102
+ this.elements = { target: target };
103
+
104
+ // Internal constructs
105
+ this._id = NAMESPACE + '-' + id;
106
+ this.timers = { img: {} };
107
+ this.options = options;
108
+ this.plugins = {};
109
+
110
+ // Cache object
111
+ this.cache = {
112
+ event: {},
113
+ target: $(),
114
+ disabled: FALSE,
115
+ attr: attr,
116
+ onTooltip: FALSE,
117
+ lastClass: ''
118
+ };
119
+
120
+ // Set the initial flags
121
+ this.rendered = this.destroyed = this.disabled = this.waiting =
122
+ this.hiddenDuringWait = this.positioning = this.triggering = FALSE;
123
+ }
124
+ PROTOTYPE = QTip.prototype;
125
+
126
+ PROTOTYPE._when = function(deferreds) {
127
+ return $.when.apply($, deferreds);
128
+ };
129
+
130
+ PROTOTYPE.render = function(show) {
131
+ if(this.rendered || this.destroyed) { return this; } // If tooltip has already been rendered, exit
132
+
133
+ var self = this,
134
+ options = this.options,
135
+ cache = this.cache,
136
+ elements = this.elements,
137
+ text = options.content.text,
138
+ title = options.content.title,
139
+ button = options.content.button,
140
+ posOptions = options.position,
141
+ namespace = '.'+this._id+' ',
142
+ deferreds = [],
143
+ tooltip;
144
+
145
+ // Add ARIA attributes to target
146
+ $.attr(this.target[0], 'aria-describedby', this._id);
147
+
148
+ // Create public position object that tracks current position corners
149
+ cache.posClass = this._createPosClass(
150
+ (this.position = { my: posOptions.my, at: posOptions.at }).my
151
+ );
152
+
153
+ // Create tooltip element
154
+ this.tooltip = elements.tooltip = tooltip = $('<div/>', {
155
+ 'id': this._id,
156
+ 'class': [ NAMESPACE, CLASS_DEFAULT, options.style.classes, cache.posClass ].join(' '),
157
+ 'width': options.style.width || '',
158
+ 'height': options.style.height || '',
159
+ 'tracking': posOptions.target === 'mouse' && posOptions.adjust.mouse,
160
+
161
+ /* ARIA specific attributes */
162
+ 'role': 'alert',
163
+ 'aria-live': 'polite',
164
+ 'aria-atomic': FALSE,
165
+ 'aria-describedby': this._id + '-content',
166
+ 'aria-hidden': TRUE
167
+ })
168
+ .toggleClass(CLASS_DISABLED, this.disabled)
169
+ .attr(ATTR_ID, this.id)
170
+ .data(NAMESPACE, this)
171
+ .appendTo(posOptions.container)
172
+ .append(
173
+ // Create content element
174
+ elements.content = $('<div />', {
175
+ 'class': NAMESPACE + '-content',
176
+ 'id': this._id + '-content',
177
+ 'aria-atomic': TRUE
178
+ })
179
+ );
180
+
181
+ // Set rendered flag and prevent redundant reposition calls for now
182
+ this.rendered = -1;
183
+ this.positioning = TRUE;
184
+
185
+ // Create title...
186
+ if(title) {
187
+ this._createTitle();
188
+
189
+ // Update title only if its not a callback (called in toggle if so)
190
+ if(!$.isFunction(title)) {
191
+ deferreds.push( this._updateTitle(title, FALSE) );
192
+ }
193
+ }
194
+
195
+ // Create button
196
+ if(button) { this._createButton(); }
197
+
198
+ // Set proper rendered flag and update content if not a callback function (called in toggle)
199
+ if(!$.isFunction(text)) {
200
+ deferreds.push( this._updateContent(text, FALSE) );
201
+ }
202
+ this.rendered = TRUE;
203
+
204
+ // Setup widget classes
205
+ this._setWidget();
206
+
207
+ // Initialize 'render' plugins
208
+ $.each(PLUGINS, function(name) {
209
+ var instance;
210
+ if(this.initialize === 'render' && (instance = this(self))) {
211
+ self.plugins[name] = instance;
212
+ }
213
+ });
214
+
215
+ // Unassign initial events and assign proper events
216
+ this._unassignEvents();
217
+ this._assignEvents();
218
+
219
+ // When deferreds have completed
220
+ this._when(deferreds).then(function() {
221
+ // tooltiprender event
222
+ self._trigger('render');
223
+
224
+ // Reset flags
225
+ self.positioning = FALSE;
226
+
227
+ // Show tooltip if not hidden during wait period
228
+ if(!self.hiddenDuringWait && (options.show.ready || show)) {
229
+ self.toggle(TRUE, cache.event, FALSE);
230
+ }
231
+ self.hiddenDuringWait = FALSE;
232
+ });
233
+
234
+ // Expose API
235
+ QTIP.api[this.id] = this;
236
+
237
+ return this;
238
+ };
239
+
240
+ PROTOTYPE.destroy = function(immediate) {
241
+ // Set flag the signify destroy is taking place to plugins
242
+ // and ensure it only gets destroyed once!
243
+ if(this.destroyed) { return this.target; }
244
+
245
+ function process() {
246
+ if(this.destroyed) { return; }
247
+ this.destroyed = TRUE;
248
+
249
+ var target = this.target,
250
+ title = target.attr(oldtitle),
251
+ timer;
252
+
253
+ // Destroy tooltip if rendered
254
+ if(this.rendered) {
255
+ this.tooltip.stop(1,0).find('*').remove().end().remove();
256
+ }
257
+
258
+ // Destroy all plugins
259
+ $.each(this.plugins, function(name) {
260
+ this.destroy && this.destroy();
261
+ });
262
+
263
+ // Clear timers
264
+ for(timer in this.timers) {
265
+ clearTimeout(this.timers[timer]);
266
+ }
267
+
268
+ // Remove api object and ARIA attributes
269
+ target.removeData(NAMESPACE)
270
+ .removeAttr(ATTR_ID)
271
+ .removeAttr(ATTR_HAS)
272
+ .removeAttr('aria-describedby');
273
+
274
+ // Reset old title attribute if removed
275
+ if(this.options.suppress && title) {
276
+ target.attr('title', title).removeAttr(oldtitle);
277
+ }
278
+
279
+ // Remove qTip events associated with this API
280
+ this._unassignEvents();
281
+
282
+ // Remove ID from used id objects, and delete object references
283
+ // for better garbage collection and leak protection
284
+ this.options = this.elements = this.cache = this.timers =
285
+ this.plugins = this.mouse = NULL;
286
+
287
+ // Delete epoxsed API object
288
+ delete QTIP.api[this.id];
289
+ }
290
+
291
+ // If an immediate destory is needed
292
+ if((immediate !== TRUE || this.triggering === 'hide') && this.rendered) {
293
+ this.tooltip.one('tooltiphidden', $.proxy(process, this));
294
+ !this.triggering && this.hide();
295
+ }
296
+
297
+ // If we're not in the process of hiding... process
298
+ else { process.call(this); }
299
+
300
+ return this.target;
301
+ };
302
  ;function invalidOpt(a) {
303
  return a === NULL || $.type(a) !== 'object';
304
  }
355
  }
356
 
357
  if('title' in content) {
358
+ if($.isPlainObject(content.title)) {
359
  content.button = content.title.button;
360
  content.title = content.title.text;
361
  }
440
 
441
  // Position checks
442
  '^position.(my|at)$': function(obj, o, v){
443
+ 'string' === typeof v && (this.position[o] = obj[o] = new CORNER(v, o === 'at'));
444
  },
445
  '^position.container$': function(obj, o, v){
446
  this.rendered && this.tooltip.appendTo(v);
581
 
582
  return this;
583
  };
 
584
  ;PROTOTYPE._update = function(content, element, reposition) {
585
  var self = this,
586
  cache = this.cache;
619
 
620
  // Wait for content to be loaded, and reposition
621
  return this._waitForContent(element).then(function(images) {
622
+ if(self.rendered && self.tooltip[0].offsetWidth > 0) {
623
  self.reposition(cache.event, !images.length);
624
  }
625
  });
692
  if(reposition !== FALSE) { this.reposition(); }
693
  }
694
  };
695
+ ;PROTOTYPE._createPosClass = function(my) {
696
+ return NAMESPACE + '-pos-' + (my || this.options.position.my).abbrev();
697
+ };
698
 
699
+ PROTOTYPE.reposition = function(event, effect) {
700
  if(!this.rendered || this.positioning || this.destroyed) { return this; }
701
 
702
  // Set positioning flag
723
  win = $(window),
724
  doc = container[0].ownerDocument,
725
  mouse = this.mouse,
726
+ pluginCalculations, offset, adjusted, newClass;
727
 
728
  // Check if absolute position was passed
729
  if($.isArray(target) && target.length === 2) {
737
  // Force left top to allow flipping
738
  at = { x: LEFT, y: TOP };
739
 
740
+ // Use the mouse origin that caused the show event, if distance hiding is enabled
741
+ if((!adjust.mouse || this.options.hide.distance) && cache.origin && cache.origin.pageX) {
742
+ event = cache.origin;
743
  }
744
 
745
+ // Use cached event for resize/scroll events
746
+ else if(!event || (event && (event.type === 'resize' || event.type === 'scroll'))) {
747
+ event = cache.event;
748
+ }
 
 
749
 
750
+ // Otherwise, use the cached mouse coordinates if available
751
+ else if(mouse && mouse.pageX) {
752
+ event = mouse;
 
753
  }
754
 
755
  // Calculate body and container offset and take them into account below
854
 
855
  // Use viewport adjustment plugin if enabled
856
  if(PLUGINS.viewport) {
857
+ adjusted = position.adjusted = PLUGINS.viewport(
858
  this, position, posOptions, targetWidth, targetHeight, tooltipWidth, tooltipHeight
859
  );
860
 
861
  // Apply offsets supplied by positioning plugin (if used)
862
+ if(offset && adjusted.left) { position.left += offset.left; }
863
+ if(offset && adjusted.top) { position.top += offset.top; }
864
+
865
+ // Apply any new 'my' position
866
+ if(adjusted.my) { this.position.my = adjusted.my; }
867
  }
868
 
869
  // Viewport adjustment is disabled, set values to zero
870
  else { position.adjusted = { left: 0, top: 0 }; }
871
 
872
+ // Set tooltip position class if it's changed
873
+ if(cache.posClass !== (newClass = this._createPosClass(this.position.my))) {
874
+ tooltip.removeClass(cache.posClass).addClass( (cache.posClass = newClass) );
875
+ }
876
+
877
  // tooltipmove event
878
  if(!this._trigger('move', [position, viewport.elem || viewport], event)) { return this; }
879
  delete position.adjusted;
960
  this[z] = this[z] === LEFT ? RIGHT : this[z] === RIGHT ? LEFT : center || this[z];
961
  };
962
 
963
+ C.string = function(join) {
964
  var x = this.x, y = this.y;
965
+
966
+ var result = x !== y ?
967
+ (x === 'center' || y !== 'center' && (this.precedance === Y || this.forceY) ?
968
+ [y,x] : [x,y]
969
+ ) :
970
+ [x];
971
+
972
+ return join !== false ? result.join(' ') : result;
973
  };
974
 
975
  C.abbrev = function() {
976
+ var result = this.string(false);
977
  return result[0].charAt(0) + (result[1] && result[1].charAt(0) || '');
978
  };
979
 
980
  C.clone = function() {
981
  return new CORNER( this.string(), this.forceY );
982
+ };
983
+
984
+ ;
985
  PROTOTYPE.toggle = function(state, event) {
986
  var cache = this.cache,
987
  options = this.options,
989
 
990
  // Try to prevent flickering when tooltip overlaps show element
991
  if(event) {
992
+ if((/over|enter/).test(event.type) && cache.event && (/out|leave/).test(cache.event.type) &&
993
  options.show.target.add(event.target).length === options.show.target.length &&
994
  tooltip.has(event.relatedTarget).length) {
995
  return this;
996
  }
997
 
998
  // Cache event
999
+ cache.event = $.event.fix(event);
1000
  }
1001
 
1002
  // If we're currently waiting and we've just hidden... stop it
1041
  // Execute state specific properties
1042
  if(state) {
1043
  // Store show origin coordinates
1044
+ this.mouse && (cache.origin = $.event.fix(this.mouse));
1045
 
1046
  // Update tooltip content & title if it's a dynamic function
1047
  if($.isFunction(contentOptions.text)) { this._updateContent(contentOptions.text, FALSE); }
1140
  PROTOTYPE.show = function(event) { return this.toggle(TRUE, event); };
1141
 
1142
  PROTOTYPE.hide = function(event) { return this.toggle(FALSE, event); };
 
1143
  ;PROTOTYPE.focus = function(event) {
1144
  if(!this.rendered || this.destroyed) { return this; }
1145
 
1185
 
1186
  return this;
1187
  };
 
1188
  ;PROTOTYPE.disable = function(state) {
1189
  if(this.destroyed) { return this; }
1190
 
1209
  };
1210
 
1211
  PROTOTYPE.enable = function() { return this.disable(FALSE); };
 
1212
  ;PROTOTYPE._createButton = function()
1213
  {
1214
  var self = this,
1256
  if(button) { this._createButton(); }
1257
  else { elem.remove(); }
1258
  };
 
1259
  ;// Widget class creator
1260
  function createWidgetClass(cls) {
1261
  return WIDGET.concat('').join(cls ? '-'+cls+' ' : ' ');
1284
  if(elements.button) {
1285
  elements.button.toggleClass(NAMESPACE+'-icon', !on);
1286
  }
1287
+ };
1288
+ ;function delay(callback, duration) {
 
 
 
 
 
 
 
 
 
 
 
1289
  // If tooltip has displayed, start hide timer
1290
  if(duration > 0) {
1291
  return setTimeout(
1296
  }
1297
 
1298
  function showMethod(event) {
1299
+ if(this.tooltip.hasClass(CLASS_DISABLED)) { return; }
1300
 
1301
  // Clear hide timers
1302
  clearTimeout(this.timers.show);
1310
  }
1311
 
1312
  function hideMethod(event) {
1313
+ if(this.tooltip.hasClass(CLASS_DISABLED) || this.destroyed) { return; }
1314
 
1315
  // Check if new target was actually the tooltip element
1316
  var relatedTarget = $(event.relatedTarget),
1346
  }
1347
 
1348
  function inactiveMethod(event) {
1349
+ if(this.tooltip.hasClass(CLASS_DISABLED) || !this.options.hide.inactive) { return; }
1350
 
1351
  // Clear timer
1352
  clearTimeout(this.timers.inactive);
1363
 
1364
  // Store mouse coordinates
1365
  PROTOTYPE._storeMouse = function(event) {
1366
+ (this.mouse = $.event.fix(event)).type = 'mousemove';
1367
+ return this;
1368
  };
1369
 
1370
  // Bind events
1371
  PROTOTYPE._bind = function(targets, events, method, suffix, context) {
1372
+ if(!targets || !method || !events.length) { return; }
1373
  var ns = '.' + this._id + (suffix ? '-'+suffix : '');
1374
+ $(targets).bind(
1375
  (events.split ? events : events.join(ns + ' ')) + ns,
1376
  $.proxy(method, context || this)
1377
  );
1378
+ return this;
1379
  };
1380
  PROTOTYPE._unbind = function(targets, suffix) {
1381
+ targets && $(targets).unbind('.' + this._id + (suffix ? '-'+suffix : ''));
1382
+ return this;
1383
  };
1384
 
1385
+ // Global delegation helper
 
1386
  function delegate(selector, events, method) {
1387
  $(document.body).delegate(selector,
1388
+ (events.split ? events : events.join('.'+NAMESPACE + ' ')) + '.'+NAMESPACE,
1389
  function() {
1390
  var api = QTIP.api[ $.attr(this, ATTR_ID) ];
1391
  api && !api.disabled && method.apply(api, arguments);
1392
  }
1393
  );
1394
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1395
  // Event trigger
1396
  PROTOTYPE._trigger = function(type, args, event) {
1397
  var callback = $.Event('tooltip'+type);
1404
  return !callback.isDefaultPrevented();
1405
  };
1406
 
1407
+ PROTOTYPE._bindEvents = function(showEvents, hideEvents, showTargets, hideTargets, showMethod, hideMethod) {
1408
+ // Get tasrgets that lye within both
1409
+ var similarTargets = showTargets.filter( hideTargets ).add( hideTargets.filter(showTargets) ),
1410
+ toggleEvents = [];
1411
+
1412
  // If hide and show targets are the same...
1413
+ if(similarTargets.length) {
 
1414
 
1415
  // Filter identical show/hide events
1416
+ $.each(hideEvents, function(i, type) {
1417
  var showIndex = $.inArray(type, showEvents);
1418
 
1419
  // Both events are identical, remove from both hide and show events
1420
  // and append to toggleEvents
1421
+ showIndex > -1 && toggleEvents.push( showEvents.splice( showIndex, 1 )[0] );
 
 
 
 
 
1422
  });
1423
 
1424
  // Toggle events are special case of identical show/hide events, which happen in sequence
1425
+ if(toggleEvents.length) {
1426
+ // Bind toggle events to the similar targets
1427
+ this._bind(similarTargets, toggleEvents, function(event) {
1428
+ var state = this.rendered ? this.tooltip[0].offsetWidth > 0 : false;
1429
+ (state ? hideMethod : showMethod).call(this, event);
1430
+ });
1431
+
1432
+ // Remove the similar targets from the regular show/hide bindings
1433
+ showTargets = showTargets.not(similarTargets);
1434
+ hideTargets = hideTargets.not(similarTargets);
1435
+ }
1436
  }
1437
 
1438
  // Apply show/hide/toggle events
1439
+ this._bind(showTargets, showEvents, showMethod);
1440
+ this._bind(hideTargets, hideEvents, hideMethod);
1441
  };
1442
 
1443
  PROTOTYPE._assignInitialEvents = function(event) {
1447
  showEvents = options.show.event ? $.trim('' + options.show.event).split(' ') : [],
1448
  hideEvents = options.hide.event ? $.trim('' + options.hide.event).split(' ') : [];
1449
 
1450
+ // Catch remove/removeqtip events on target element to destroy redundant tooltips
1451
+ this._bind(this.elements.target, ['remove', 'removeqtip'], function(event) {
1452
+ this.destroy(true);
1453
+ }, 'destroy');
1454
+
1455
  /*
1456
  * Make sure hoverIntent functions properly by using mouseleave as a hide event if
1457
  * mouseenter/mouseout is used for show.event, even if it isn't in the users options.
1476
  if(this.disabled || this.destroyed) { return FALSE; }
1477
 
1478
  // Cache the event data
1479
+ this.cache.event = event && $.event.fix(event);
1480
+ this.cache.target = event && $(event.target);
1481
 
1482
  // Start the event sequence
1483
  clearTimeout(this.timers.show);
1484
  this.timers.show = delay.call(this,
1485
  function() { this.render(typeof event === 'object' || options.show.ready); },
1486
+ options.prerender ? 0 : options.show.delay
1487
  );
1488
  }
1489
 
1490
  // Filter and bind events
1491
  this._bindEvents(showEvents, hideEvents, showTarget, hideTarget, hoverIntent, function() {
1492
+ if(!this.timers) { return FALSE; }
1493
  clearTimeout(this.timers.show);
1494
  });
1495
 
1563
  // Check if the tooltip hides when inactive
1564
  if('number' === typeof options.hide.inactive) {
1565
  // Bind inactive method to show target(s) as a custom event
1566
+ this._bind(showTarget, 'qtip-'+this.id+'-inactive', inactiveMethod, 'inactive');
1567
 
1568
  // Define events which reset the 'inactive' event handler
1569
+ this._bind(hideTarget.add(tooltip), QTIP.inactiveEvents, inactiveMethod);
1570
  }
1571
 
1572
  // Filter and bind events
1598
  if(options.hide.event) {
1599
  // Track if we're on the target or not
1600
  this._bind(showTarget, ['mouseenter', 'mouseleave'], function(event) {
1601
+ if(!this.cache) {return FALSE; }
1602
  this.cache.onTarget = event.type === 'mouseenter';
1603
  });
1604
  }
1626
 
1627
  // Un-assignment method
1628
  PROTOTYPE._unassignEvents = function() {
1629
+ var options = this.options,
1630
+ showTargets = options.show.target,
1631
+ hideTargets = options.hide.target,
1632
+ targets = $.grep([
1633
+ this.elements.target[0],
1634
+ this.rendered && this.tooltip[0],
1635
+ options.position.container[0],
1636
+ options.position.viewport[0],
1637
+ options.position.container.closest('html')[0], // unfocus
1638
+ window,
1639
+ document
1640
+ ], function(i) {
1641
+ return typeof i === 'object';
1642
+ });
1643
+
1644
+ // Add show and hide targets if they're valid
1645
+ if(showTargets && showTargets.toArray) {
1646
+ targets = targets.concat(showTargets.toArray());
1647
+ }
1648
+ if(hideTargets && hideTargets.toArray) {
1649
+ targets = targets.concat(hideTargets.toArray());
1650
+ }
1651
+
1652
+ // Unbind the events
1653
+ this._unbind(targets)
1654
+ ._unbind(targets, 'destroy')
1655
+ ._unbind(targets, 'inactive');
1656
  };
1657
 
1658
+ // Apply common event handlers using delegate (avoids excessive .bind calls!)
1659
+ $(function() {
1660
+ delegate(SELECTOR, ['mouseenter', 'mouseleave'], function(event) {
1661
+ var state = event.type === 'mouseenter',
1662
+ tooltip = $(event.currentTarget),
1663
+ target = $(event.relatedTarget || event.target),
1664
+ options = this.options;
1665
+
1666
+ // On mouseenter...
1667
+ if(state) {
1668
+ // Focus the tooltip on mouseenter (z-index stacking)
1669
+ this.focus(event);
1670
+
1671
+ // Clear hide timer on tooltip hover to prevent it from closing
1672
+ tooltip.hasClass(CLASS_FIXED) && !tooltip.hasClass(CLASS_DISABLED) && clearTimeout(this.timers.hide);
1673
+ }
1674
+
1675
+ // On mouseleave...
1676
+ else {
1677
+ // When mouse tracking is enabled, hide when we leave the tooltip and not onto the show target (if a hide event is set)
1678
+ if(options.position.target === 'mouse' && options.position.adjust.mouse &&
1679
+ options.hide.event && options.show.target && !target.closest(options.show.target[0]).length) {
1680
+ this.hide(event);
1681
+ }
1682
+ }
1683
+
1684
+ // Add hover class
1685
+ tooltip.toggleClass(CLASS_HOVER, state);
1686
+ });
1687
+
1688
+ // Define events which reset the 'inactive' event handler
1689
+ delegate('['+ATTR_ID+']', INACTIVE_EVENTS, inactiveMethod);
1690
+ });
1691
  ;// Initialization method
1692
  function init(elem, id, opts) {
1693
  var obj, posOptions, attr, config, title,
1768
  obj = new QTip(elem, config, id, !!attr);
1769
  elem.data(NAMESPACE, obj);
1770
 
 
 
 
 
 
1771
  return obj;
1772
  }
1773
 
1915
  $['cleanData'+replaceSuffix].apply(this, arguments);
1916
  };
1917
  }
 
1918
  ;// qTip version
1919
+ QTIP.version = '2.2.1';
1920
 
1921
  // Base ID for all qTips
1922
  QTIP.nextid = 0;
1997
  blur: NULL
1998
  }
1999
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2000
  ;PLUGINS.viewport = function(api, position, posOptions, targetWidth, targetHeight, elemWidth, elemHeight)
2001
  {
2002
  var target = posOptions.target,
2011
  container = posOptions.container,
2012
  cache = api.cache,
2013
  adjusted = { left: 0, top: 0 },
2014
+ fixed, newMy, containerOffset, containerStatic,
2015
  viewportWidth, viewportHeight, viewportScroll, viewportOffset;
2016
 
2017
  // If viewport is not a jQuery element, or it's the window/document, or no adjustment method is used... return
2098
  // Adjust position based onviewport and adjustment options
2099
  adjusted = {
2100
  left: methodX !== 'none' ? calculate( X, Y, methodX, adjust.x, LEFT, RIGHT, WIDTH, targetWidth, elemWidth ) : 0,
2101
+ top: methodY !== 'none' ? calculate( Y, X, methodY, adjust.y, TOP, BOTTOM, HEIGHT, targetHeight, elemHeight ) : 0,
2102
+ my: newMy
2103
  };
2104
 
 
 
 
 
 
2105
  return adjusted;
2106
  };
2107
  ;}));
2108
  }( window, document ));
 
 
external/qtip2/jquery.qtip.min.css CHANGED
@@ -1,2 +1,3 @@
1
- /* qTip2 v2.2.0 css3 | qtip2.com | Licensed MIT, GPL | Sun Mar 16 2014 17:53:30 */
2
- .qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;direction:ltr;box-shadow:none;padding:0}.qtip-content{position:relative;padding:5px 9px;overflow:hidden;text-align:left;word-wrap:break-word}.qtip-titlebar{position:relative;padding:5px 35px 5px 10px;overflow:hidden;border-width:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;cursor:pointer;outline:medium none;border-width:1px;border-style:solid;border-color:transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-titlebar .ui-icon,.qtip-icon .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:14px;text-align:center;text-indent:0;font:400 bold 10px/13px Tahoma,sans-serif;color:inherit;background:transparent none no-repeat -100em -100em}.qtip-focus{}.qtip-hover{}.qtip-default{border-width:1px;border-style:solid;border-color:#F1D031;background-color:#FFFFA3;color:#555}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111}.qtip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,.15)}.qtip-rounded,.qtip-tipsy,.qtip-bootstrap{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.qtip-rounded .qtip-titlebar{-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.qtip-youtube{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;color:#fff;border-width:0;background:#4A4A4A;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,#000));background-image:-webkit-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-moz-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-ms-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-o-linear-gradient(top,#4A4A4A 0,#000 100%)}.qtip-youtube .qtip-titlebar{background-color:#4A4A4A;background-color:rgba(0,0,0,0)}.qtip-youtube .qtip-content{padding:.75em;font:12px arial,sans-serif;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);"}.qtip-youtube .qtip-icon{border-color:#222}.qtip-youtube .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-jtools{background:#232323;background:rgba(0,0,0,.7);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-linear-gradient(top,#717171,#232323);background-image:-ms-linear-gradient(top,#717171,#232323);background-image:-o-linear-gradient(top,#717171,#232323);border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333}.qtip-jtools .qtip-titlebar{background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A)"}.qtip-jtools .qtip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323)"}.qtip-jtools .qtip-titlebar,.qtip-jtools .qtip-content{background:transparent;color:#fff;border:0 dashed transparent}.qtip-jtools .qtip-icon{border-color:#555}.qtip-jtools .qtip-titlebar .ui-state-hover{border-color:#333}.qtip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,.4);box-shadow:4px 4px 5px rgba(0,0,0,.4);background-color:#D9D9C2;color:#111;border:0 dashed transparent}.qtip-cluetip .qtip-titlebar{background-color:#87876A;color:#fff;border:0 dashed transparent}.qtip-cluetip .qtip-icon{border-color:#808064}.qtip-cluetip .qtip-titlebar .ui-state-hover{border-color:#696952;color:#696952}.qtip-tipsy{background:#000;background:rgba(0,0,0,.87);color:#fff;border:0 solid transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:700;line-height:16px;text-shadow:0 1px #000}.qtip-tipsy .qtip-titlebar{padding:6px 35px 0 10px;background-color:transparent}.qtip-tipsy .qtip-content{padding:6px 10px}.qtip-tipsy .qtip-icon{border-color:#222;text-shadow:none}.qtip-tipsy .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-tipped{border:3px solid #959FA9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#F9F9F9;color:#454545;font-weight:400;font-family:serif}.qtip-tipped .qtip-titlebar{border-bottom-width:0;color:#fff;background:#3A79B8;background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));background-image:-webkit-linear-gradient(top,#3A79B8,#2E629D);background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-ms-linear-gradient(top,#3A79B8,#2E629D);background-image:-o-linear-gradient(top,#3A79B8,#2E629D);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D)"}.qtip-tipped .qtip-icon{border:2px solid #285589;background:#285589}.qtip-tipped .qtip-icon .ui-icon{background-color:#FBFBFB;color:#555}.qtip-bootstrap{font-size:14px;line-height:20px;color:#333;padding:1px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.qtip-bootstrap .qtip-titlebar{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.qtip-bootstrap .qtip-titlebar .qtip-close{right:11px;top:45%;border-style:none}.qtip-bootstrap .qtip-content{padding:9px 14px}.qtip-bootstrap .qtip-icon{background:transparent}.qtip-bootstrap .qtip-icon .ui-icon{width:auto;height:auto;float:right;font-size:20px;font-weight:700;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.qtip-bootstrap .qtip-icon .ui-icon:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}.qtip:not(.ie9haxors) div.qtip-content,.qtip:not(.ie9haxors) div.qtip-titlebar{filter:none;-ms-filter:none}.qtip .qtip-tip{margin:0 auto;overflow:hidden;z-index:10}x:-o-prefocus,.qtip .qtip-tip{visibility:hidden}.qtip .qtip-tip,.qtip .qtip-tip .qtip-vml,.qtip .qtip-tip canvas{position:absolute;color:#123456;background:transparent;border:0 dashed transparent}.qtip .qtip-tip canvas{top:0;left:0}.qtip .qtip-tip .qtip-vml{behavior:url(#default#VML);display:inline-block;visibility:visible}
 
1
+ /* qTip2 v2.2.1 | Plugins: viewport | Styles: core css3 | qtip2.com | Licensed MIT | Sun Sep 07 2014 10:41:41 */
2
+
3
+ .qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;direction:ltr;box-shadow:none;padding:0}.qtip-content{position:relative;padding:5px 9px;overflow:hidden;text-align:left;word-wrap:break-word}.qtip-titlebar{position:relative;padding:5px 35px 5px 10px;overflow:hidden;border-width:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;z-index:11;cursor:pointer;outline:0;border:1px solid transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-icon .ui-icon,.qtip-titlebar .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:14px;text-align:center;text-indent:0;font:400 bold 10px/13px Tahoma,sans-serif;color:inherit;background:-100em -100em no-repeat}.qtip-default{border:1px solid #F1D031;background-color:#FFFFA3;color:#555}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111}.qtip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,.15)}.qtip-bootstrap,.qtip-rounded,.qtip-tipsy{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.qtip-rounded .qtip-titlebar{-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.qtip-youtube{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;color:#fff;border:0 solid transparent;background:#4A4A4A;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,#000));background-image:-webkit-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-moz-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-ms-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-o-linear-gradient(top,#4A4A4A 0,#000 100%)}.qtip-youtube .qtip-titlebar{background-color:transparent}.qtip-youtube .qtip-content{padding:.75em;font:12px arial,sans-serif;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);"}.qtip-youtube .qtip-icon{border-color:#222}.qtip-youtube .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-jtools{background:#232323;background:rgba(0,0,0,.7);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-linear-gradient(top,#717171,#232323);background-image:-ms-linear-gradient(top,#717171,#232323);background-image:-o-linear-gradient(top,#717171,#232323);border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333}.qtip-jtools .qtip-titlebar{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)"}.qtip-jtools .qtip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)"}.qtip-jtools .qtip-content,.qtip-jtools .qtip-titlebar{background:0 0;color:#fff;border:0 dashed transparent}.qtip-jtools .qtip-icon{border-color:#555}.qtip-jtools .qtip-titlebar .ui-state-hover{border-color:#333}.qtip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,.4);box-shadow:4px 4px 5px rgba(0,0,0,.4);background-color:#D9D9C2;color:#111;border:0 dashed transparent}.qtip-cluetip .qtip-titlebar{background-color:#87876A;color:#fff;border:0 dashed transparent}.qtip-cluetip .qtip-icon{border-color:#808064}.qtip-cluetip .qtip-titlebar .ui-state-hover{border-color:#696952;color:#696952}.qtip-tipsy{background:#000;background:rgba(0,0,0,.87);color:#fff;border:0 solid transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:700;line-height:16px;text-shadow:0 1px #000}.qtip-tipsy .qtip-titlebar{padding:6px 35px 0 10px;background-color:transparent}.qtip-tipsy .qtip-content{padding:6px 10px}.qtip-tipsy .qtip-icon{border-color:#222;text-shadow:none}.qtip-tipsy .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-tipped{border:3px solid #959FA9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#F9F9F9;color:#454545;font-weight:400;font-family:serif}.qtip-tipped .qtip-titlebar{border-bottom-width:0;color:#fff;background:#3A79B8;background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));background-image:-webkit-linear-gradient(top,#3A79B8,#2E629D);background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-ms-linear-gradient(top,#3A79B8,#2E629D);background-image:-o-linear-gradient(top,#3A79B8,#2E629D);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)"}.qtip-tipped .qtip-icon{border:2px solid #285589;background:#285589}.qtip-tipped .qtip-icon .ui-icon{background-color:#FBFBFB;color:#555}.qtip-bootstrap{font-size:14px;line-height:20px;color:#333;padding:1px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.qtip-bootstrap .qtip-titlebar{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.qtip-bootstrap .qtip-titlebar .qtip-close{right:11px;top:45%;border-style:none}.qtip-bootstrap .qtip-content{padding:9px 14px}.qtip-bootstrap .qtip-icon{background:0 0}.qtip-bootstrap .qtip-icon .ui-icon{width:auto;height:auto;float:right;font-size:20px;font-weight:700;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.qtip-bootstrap .qtip-icon .ui-icon:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}.qtip:not(.ie9haxors) div.qtip-content,.qtip:not(.ie9haxors) div.qtip-titlebar{filter:none;-ms-filter:none}
external/qtip2/jquery.qtip.min.js CHANGED
@@ -1,4 +1,3 @@
1
- /* qTip2 v2.2.0 tips viewport | qtip2.com | Licensed MIT, GPL | Sun Mar 16 2014 17:53:29 */
2
 
3
- !function(a,b,c){!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)}(function(d){"use strict";function e(a,b,c,e){this.id=c,this.target=a,this.tooltip=E,this.elements={target:a},this._id=R+"-"+c,this.timers={img:{}},this.options=b,this.plugins={},this.cache={event:{},target:d(),disabled:D,attr:e,onTooltip:D,lastClass:""},this.rendered=this.destroyed=this.disabled=this.waiting=this.hiddenDuringWait=this.positioning=this.triggering=D}function f(a){return a===E||"object"!==d.type(a)}function g(a){return!(d.isFunction(a)||a&&a.attr||a.length||"object"===d.type(a)&&(a.jquery||a.then))}function h(a){var b,c,e,h;return f(a)?D:(f(a.metadata)&&(a.metadata={type:a.metadata}),"content"in a&&(b=a.content,f(b)||b.jquery||b.done?b=a.content={text:c=g(b)?D:b}:c=b.text,"ajax"in b&&(e=b.ajax,h=e&&e.once!==D,delete b.ajax,b.text=function(a,b){var f=c||d(this).attr(b.options.content.attr)||"Loading...",g=d.ajax(d.extend({},e,{context:b})).then(e.success,E,e.error).then(function(a){return a&&h&&b.set("content.text",a),a},function(a,c,d){b.destroyed||0===a.status||b.set("content.text",c+": "+d)});return h?f:(b.set("content.text",f),g)}),"title"in b&&(f(b.title)||(b.button=b.title.button,b.title=b.title.text),g(b.title||D)&&(b.title=D))),"position"in a&&f(a.position)&&(a.position={my:a.position,at:a.position}),"show"in a&&f(a.show)&&(a.show=a.show.jquery?{target:a.show}:a.show===C?{ready:C}:{event:a.show}),"hide"in a&&f(a.hide)&&(a.hide=a.hide.jquery?{target:a.hide}:{event:a.hide}),"style"in a&&f(a.style)&&(a.style={classes:a.style}),d.each(Q,function(){this.sanitize&&this.sanitize(a)}),a)}function i(a,b){for(var c,d=0,e=a,f=b.split(".");e=e[f[d++]];)d<f.length&&(c=e);return[c||a,f.pop()]}function j(a,b){var c,d,e;for(c in this.checks)for(d in this.checks[c])(e=new RegExp(d,"i").exec(a))&&(b.push(e),("builtin"===c||this.plugins[c])&&this.checks[c][d].apply(this.plugins[c]||this,b))}function k(a){return U.concat("").join(a?"-"+a+" ":" ")}function l(c){return c&&{type:c.type,pageX:c.pageX,pageY:c.pageY,target:c.target,relatedTarget:c.relatedTarget,scrollX:c.scrollX||a.pageXOffset||b.body.scrollLeft||b.documentElement.scrollLeft,scrollY:c.scrollY||a.pageYOffset||b.body.scrollTop||b.documentElement.scrollTop}||{}}function m(a,b){return b>0?setTimeout(d.proxy(a,this),b):(a.call(this),void 0)}function n(a){return this.tooltip.hasClass(_)?D:(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this.timers.show=m.call(this,function(){this.toggle(C,a)},this.options.show.delay),void 0)}function o(a){if(this.tooltip.hasClass(_))return D;var b=d(a.relatedTarget),c=b.closest(V)[0]===this.tooltip[0],e=b[0]===this.options.show.target[0];if(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this!==b[0]&&"mouse"===this.options.position.target&&c||this.options.hide.fixed&&/mouse(out|leave|move)/.test(a.type)&&(c||e))try{a.preventDefault(),a.stopImmediatePropagation()}catch(f){}else this.timers.hide=m.call(this,function(){this.toggle(D,a)},this.options.hide.delay,this)}function p(a){return this.tooltip.hasClass(_)||!this.options.hide.inactive?D:(clearTimeout(this.timers.inactive),this.timers.inactive=m.call(this,function(){this.hide(a)},this.options.hide.inactive),void 0)}function q(a){this.rendered&&this.tooltip[0].offsetWidth>0&&this.reposition(a)}function r(a,c,e){d(b.body).delegate(a,(c.split?c:c.join(gb+" "))+gb,function(){var a=x.api[d.attr(this,T)];a&&!a.disabled&&e.apply(a,arguments)})}function s(a,c,f){var g,i,j,k,l,m=d(b.body),n=a[0]===b?m:a,o=a.metadata?a.metadata(f.metadata):E,p="html5"===f.metadata.type&&o?o[f.metadata.name]:E,q=a.data(f.metadata.name||"qtipopts");try{q="string"==typeof q?d.parseJSON(q):q}catch(r){}if(k=d.extend(C,{},x.defaults,f,"object"==typeof q?h(q):E,h(p||o)),i=k.position,k.id=c,"boolean"==typeof k.content.text){if(j=a.attr(k.content.attr),k.content.attr===D||!j)return D;k.content.text=j}if(i.container.length||(i.container=m),i.target===D&&(i.target=n),k.show.target===D&&(k.show.target=n),k.show.solo===C&&(k.show.solo=i.container.closest("body")),k.hide.target===D&&(k.hide.target=n),k.position.viewport===C&&(k.position.viewport=i.container),i.container=i.container.eq(0),i.at=new z(i.at,C),i.my=new z(i.my),a.data(R))if(k.overwrite)a.qtip("destroy",!0);else if(k.overwrite===D)return D;return a.attr(S,c),k.suppress&&(l=a.attr("title"))&&a.removeAttr("title").attr(bb,l).attr("title",""),g=new e(a,k,c,!!j),a.data(R,g),a.one("remove.qtip-"+c+" removeqtip.qtip-"+c,function(){var a;(a=d(this).data(R))&&a.destroy(!0)}),g}function t(a){return a.charAt(0).toUpperCase()+a.slice(1)}function u(a,b){var d,e,f=b.charAt(0).toUpperCase()+b.slice(1),g=(b+" "+rb.join(f+" ")+f).split(" "),h=0;if(qb[b])return a.css(qb[b]);for(;d=g[h++];)if((e=a.css(d))!==c)return qb[b]=d,e}function v(a,b){return Math.ceil(parseFloat(u(a,b)))}function w(a,b){this._ns="tip",this.options=b,this.offset=b.offset,this.size=[b.width,b.height],this.init(this.qtip=a)}var x,y,z,A,B,C=!0,D=!1,E=null,F="x",G="y",H="width",I="height",J="top",K="left",L="bottom",M="right",N="center",O="flipinvert",P="shift",Q={},R="qtip",S="data-hasqtip",T="data-qtip-id",U=["ui-widget","ui-tooltip"],V="."+R,W="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),X=R+"-fixed",Y=R+"-default",Z=R+"-focus",$=R+"-hover",_=R+"-disabled",ab="_replacedByqTip",bb="oldtitle",cb={ie:function(){for(var a=3,c=b.createElement("div");(c.innerHTML="<!--[if gt IE "+ ++a+"]><i></i><![endif]-->")&&c.getElementsByTagName("i")[0];);return a>4?a:0/0}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||D};y=e.prototype,y._when=function(a){return d.when.apply(d,a)},y.render=function(a){if(this.rendered||this.destroyed)return this;var b,c=this,e=this.options,f=this.cache,g=this.elements,h=e.content.text,i=e.content.title,j=e.content.button,k=e.position,l=("."+this._id+" ",[]);return d.attr(this.target[0],"aria-describedby",this._id),this.tooltip=g.tooltip=b=d("<div/>",{id:this._id,"class":[R,Y,e.style.classes,R+"-pos-"+e.position.my.abbrev()].join(" "),width:e.style.width||"",height:e.style.height||"",tracking:"mouse"===k.target&&k.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":D,"aria-describedby":this._id+"-content","aria-hidden":C}).toggleClass(_,this.disabled).attr(T,this.id).data(R,this).appendTo(k.container).append(g.content=d("<div />",{"class":R+"-content",id:this._id+"-content","aria-atomic":C})),this.rendered=-1,this.positioning=C,i&&(this._createTitle(),d.isFunction(i)||l.push(this._updateTitle(i,D))),j&&this._createButton(),d.isFunction(h)||l.push(this._updateContent(h,D)),this.rendered=C,this._setWidget(),d.each(Q,function(a){var b;"render"===this.initialize&&(b=this(c))&&(c.plugins[a]=b)}),this._unassignEvents(),this._assignEvents(),this._when(l).then(function(){c._trigger("render"),c.positioning=D,c.hiddenDuringWait||!e.show.ready&&!a||c.toggle(C,f.event,D),c.hiddenDuringWait=D}),x.api[this.id]=this,this},y.destroy=function(a){function b(){if(!this.destroyed){this.destroyed=C;var a=this.target,b=a.attr(bb);this.rendered&&this.tooltip.stop(1,0).find("*").remove().end().remove(),d.each(this.plugins,function(){this.destroy&&this.destroy()}),clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this._unassignEvents(),a.removeData(R).removeAttr(T).removeAttr(S).removeAttr("aria-describedby"),this.options.suppress&&b&&a.attr("title",b).removeAttr(bb),this._unbind(a),this.options=this.elements=this.cache=this.timers=this.plugins=this.mouse=E,delete x.api[this.id]}}return this.destroyed?this.target:(a===C&&"hide"!==this.triggering||!this.rendered?b.call(this):(this.tooltip.one("tooltiphidden",d.proxy(b,this)),!this.triggering&&this.hide()),this.target)},A=y.checks={builtin:{"^id$":function(a,b,c,e){var f=c===C?x.nextid:c,g=R+"-"+f;f!==D&&f.length>0&&!d("#"+g).length?(this._id=g,this.rendered&&(this.tooltip[0].id=this._id,this.elements.content[0].id=this._id+"-content",this.elements.title[0].id=this._id+"-title")):a[b]=e},"^prerender":function(a,b,c){c&&!this.rendered&&this.render(this.options.show.ready)},"^content.text$":function(a,b,c){this._updateContent(c)},"^content.attr$":function(a,b,c,d){this.options.content.text===this.target.attr(d)&&this._updateContent(this.target.attr(c))},"^content.title$":function(a,b,c){return c?(c&&!this.elements.title&&this._createTitle(),this._updateTitle(c),void 0):this._removeTitle()},"^content.button$":function(a,b,c){this._updateButton(c)},"^content.title.(text|button)$":function(a,b,c){this.set("content."+b,c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(a[b]=new z(c,"at"===b))},"^position.container$":function(a,b,c){this.rendered&&this.tooltip.appendTo(c)},"^show.ready$":function(a,b,c){c&&(!this.rendered&&this.render(C)||this.toggle(C))},"^style.classes$":function(a,b,c,d){this.rendered&&this.tooltip.removeClass(d).addClass(c)},"^style.(width|height)":function(a,b,c){this.rendered&&this.tooltip.css(b,c)},"^style.widget|content.title":function(){this.rendered&&this._setWidget()},"^style.def":function(a,b,c){this.rendered&&this.tooltip.toggleClass(Y,!!c)},"^events.(render|show|move|hide|focus|blur)$":function(a,b,c){this.rendered&&this.tooltip[(d.isFunction(c)?"":"un")+"bind"]("tooltip"+b,c)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){if(this.rendered){var a=this.options.position;this.tooltip.attr("tracking","mouse"===a.target&&a.adjust.mouse),this._unassignEvents(),this._assignEvents()}}}},y.get=function(a){if(this.destroyed)return this;var b=i(this.options,a.toLowerCase()),c=b[0][b[1]];return c.precedance?c.string():c};var db=/^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,eb=/^prerender|show\.ready/i;y.set=function(a,b){if(this.destroyed)return this;{var c,e=this.rendered,f=D,g=this.options;this.checks}return"string"==typeof a?(c=a,a={},a[c]=b):a=d.extend({},a),d.each(a,function(b,c){if(e&&eb.test(b))return delete a[b],void 0;var h,j=i(g,b.toLowerCase());h=j[0][j[1]],j[0][j[1]]=c&&c.nodeType?d(c):c,f=db.test(b)||f,a[b]=[j[0],j[1],c,h]}),h(g),this.positioning=C,d.each(a,d.proxy(j,this)),this.positioning=D,this.rendered&&this.tooltip[0].offsetWidth>0&&f&&this.reposition("mouse"===g.position.target?E:this.cache.event),this},y._update=function(a,b){var c=this,e=this.cache;return this.rendered&&a?(d.isFunction(a)&&(a=a.call(this.elements.target,e.event,this)||""),d.isFunction(a.then)?(e.waiting=C,a.then(function(a){return e.waiting=D,c._update(a,b)},E,function(a){return c._update(a,b)})):a===D||!a&&""!==a?D:(a.jquery&&a.length>0?b.empty().append(a.css({display:"block",visibility:"visible"})):b.html(a),this._waitForContent(b).then(function(a){a.images&&a.images.length&&c.rendered&&c.tooltip[0].offsetWidth>0&&c.reposition(e.event,!a.length)}))):D},y._waitForContent=function(a){var b=this.cache;return b.waiting=C,(d.fn.imagesLoaded?a.imagesLoaded():d.Deferred().resolve([])).done(function(){b.waiting=D}).promise()},y._updateContent=function(a,b){this._update(a,this.elements.content,b)},y._updateTitle=function(a,b){this._update(a,this.elements.title,b)===D&&this._removeTitle(D)},y._createTitle=function(){var a=this.elements,b=this._id+"-title";a.titlebar&&this._removeTitle(),a.titlebar=d("<div />",{"class":R+"-titlebar "+(this.options.style.widget?k("header"):"")}).append(a.title=d("<div />",{id:b,"class":R+"-title","aria-atomic":C})).insertBefore(a.content).delegate(".qtip-close","mousedown keydown mouseup keyup mouseout",function(a){d(this).toggleClass("ui-state-active ui-state-focus","down"===a.type.substr(-4))}).delegate(".qtip-close","mouseover mouseout",function(a){d(this).toggleClass("ui-state-hover","mouseover"===a.type)}),this.options.content.button&&this._createButton()},y._removeTitle=function(a){var b=this.elements;b.title&&(b.titlebar.remove(),b.titlebar=b.title=b.button=E,a!==D&&this.reposition())},y.reposition=function(c,e){if(!this.rendered||this.positioning||this.destroyed)return this;this.positioning=C;var f,g,h=this.cache,i=this.tooltip,j=this.options.position,k=j.target,l=j.my,m=j.at,n=j.viewport,o=j.container,p=j.adjust,q=p.method.split(" "),r=i.outerWidth(D),s=i.outerHeight(D),t=0,u=0,v=i.css("position"),w={left:0,top:0},x=i[0].offsetWidth>0,y=c&&"scroll"===c.type,z=d(a),A=o[0].ownerDocument,B=this.mouse;if(d.isArray(k)&&2===k.length)m={x:K,y:J},w={left:k[0],top:k[1]};else if("mouse"===k)m={x:K,y:J},!B||!B.pageX||!p.mouse&&c&&c.pageX?c&&c.pageX||((!p.mouse||this.options.show.distance)&&h.origin&&h.origin.pageX?c=h.origin:(!c||c&&("resize"===c.type||"scroll"===c.type))&&(c=h.event)):c=B,"static"!==v&&(w=o.offset()),A.body.offsetWidth!==(a.innerWidth||A.documentElement.clientWidth)&&(g=d(b.body).offset()),w={left:c.pageX-w.left+(g&&g.left||0),top:c.pageY-w.top+(g&&g.top||0)},p.mouse&&y&&B&&(w.left-=(B.scrollX||0)-z.scrollLeft(),w.top-=(B.scrollY||0)-z.scrollTop());else{if("event"===k?c&&c.target&&"scroll"!==c.type&&"resize"!==c.type?h.target=d(c.target):c.target||(h.target=this.elements.target):"event"!==k&&(h.target=d(k.jquery?k:this.elements.target)),k=h.target,k=d(k).eq(0),0===k.length)return this;k[0]===b||k[0]===a?(t=cb.iOS?a.innerWidth:k.width(),u=cb.iOS?a.innerHeight:k.height(),k[0]===a&&(w={top:(n||k).scrollTop(),left:(n||k).scrollLeft()})):Q.imagemap&&k.is("area")?f=Q.imagemap(this,k,m,Q.viewport?q:D):Q.svg&&k&&k[0].ownerSVGElement?f=Q.svg(this,k,m,Q.viewport?q:D):(t=k.outerWidth(D),u=k.outerHeight(D),w=k.offset()),f&&(t=f.width,u=f.height,g=f.offset,w=f.position),w=this.reposition.offset(k,w,o),(cb.iOS>3.1&&cb.iOS<4.1||cb.iOS>=4.3&&cb.iOS<4.33||!cb.iOS&&"fixed"===v)&&(w.left-=z.scrollLeft(),w.top-=z.scrollTop()),(!f||f&&f.adjustable!==D)&&(w.left+=m.x===M?t:m.x===N?t/2:0,w.top+=m.y===L?u:m.y===N?u/2:0)}return w.left+=p.x+(l.x===M?-r:l.x===N?-r/2:0),w.top+=p.y+(l.y===L?-s:l.y===N?-s/2:0),Q.viewport?(w.adjusted=Q.viewport(this,w,j,t,u,r,s),g&&w.adjusted.left&&(w.left+=g.left),g&&w.adjusted.top&&(w.top+=g.top)):w.adjusted={left:0,top:0},this._trigger("move",[w,n.elem||n],c)?(delete w.adjusted,e===D||!x||isNaN(w.left)||isNaN(w.top)||"mouse"===k||!d.isFunction(j.effect)?i.css(w):d.isFunction(j.effect)&&(j.effect.call(i,this,d.extend({},w)),i.queue(function(a){d(this).css({opacity:"",height:""}),cb.ie&&this.style.removeAttribute("filter"),a()})),this.positioning=D,this):this},y.reposition.offset=function(a,c,e){function f(a,b){c.left+=b*a.scrollLeft(),c.top+=b*a.scrollTop()}if(!e[0])return c;var g,h,i,j,k=d(a[0].ownerDocument),l=!!cb.ie&&"CSS1Compat"!==b.compatMode,m=e[0];do"static"!==(h=d.css(m,"position"))&&("fixed"===h?(i=m.getBoundingClientRect(),f(k,-1)):(i=d(m).position(),i.left+=parseFloat(d.css(m,"borderLeftWidth"))||0,i.top+=parseFloat(d.css(m,"borderTopWidth"))||0),c.left-=i.left+(parseFloat(d.css(m,"marginLeft"))||0),c.top-=i.top+(parseFloat(d.css(m,"marginTop"))||0),g||"hidden"===(j=d.css(m,"overflow"))||"visible"===j||(g=d(m)));while(m=m.offsetParent);return g&&(g[0]!==k[0]||l)&&f(g,1),c};var fb=(z=y.reposition.Corner=function(a,b){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,N).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase(),this.forceY=!!b;var c=a.charAt(0);this.precedance="t"===c||"b"===c?G:F}).prototype;fb.invert=function(a,b){this[a]=this[a]===K?M:this[a]===M?K:b||this[a]},fb.string=function(){var a=this.x,b=this.y;return a===b?a:this.precedance===G||this.forceY&&"center"!==b?b+" "+a:a+" "+b},fb.abbrev=function(){var a=this.string().split(" ");return a[0].charAt(0)+(a[1]&&a[1].charAt(0)||"")},fb.clone=function(){return new z(this.string(),this.forceY)},y.toggle=function(a,c){var e=this.cache,f=this.options,g=this.tooltip;if(c){if(/over|enter/.test(c.type)&&/out|leave/.test(e.event.type)&&f.show.target.add(c.target).length===f.show.target.length&&g.has(c.relatedTarget).length)return this;e.event=l(c)}if(this.waiting&&!a&&(this.hiddenDuringWait=C),!this.rendered)return a?this.render(1):this;if(this.destroyed||this.disabled)return this;var h,i,j,k=a?"show":"hide",m=this.options[k],n=(this.options[a?"hide":"show"],this.options.position),o=this.options.content,p=this.tooltip.css("width"),q=this.tooltip.is(":visible"),r=a||1===m.target.length,s=!c||m.target.length<2||e.target[0]===c.target;return(typeof a).search("boolean|number")&&(a=!q),h=!g.is(":animated")&&q===a&&s,i=h?E:!!this._trigger(k,[90]),this.destroyed?this:(i!==D&&a&&this.focus(c),!i||h?this:(d.attr(g[0],"aria-hidden",!a),a?(e.origin=l(this.mouse),d.isFunction(o.text)&&this._updateContent(o.text,D),d.isFunction(o.title)&&this._updateTitle(o.title,D),!B&&"mouse"===n.target&&n.adjust.mouse&&(d(b).bind("mousemove."+R,this._storeMouse),B=C),p||g.css("width",g.outerWidth(D)),this.reposition(c,arguments[2]),p||g.css("width",""),m.solo&&("string"==typeof m.solo?d(m.solo):d(V,m.solo)).not(g).not(m.target).qtip("hide",d.Event("tooltipsolo"))):(clearTimeout(this.timers.show),delete e.origin,B&&!d(V+'[tracking="true"]:visible',m.solo).not(g).length&&(d(b).unbind("mousemove."+R),B=D),this.blur(c)),j=d.proxy(function(){a?(cb.ie&&g[0].style.removeAttribute("filter"),g.css("overflow",""),"string"==typeof m.autofocus&&d(this.options.show.autofocus,g).focus(),this.options.show.target.trigger("qtip-"+this.id+"-inactive")):g.css({display:"",visibility:"",opacity:"",left:"",top:""}),this._trigger(a?"visible":"hidden")},this),m.effect===D||r===D?(g[k](),j()):d.isFunction(m.effect)?(g.stop(1,1),m.effect.call(g,this),g.queue("fx",function(a){j(),a()})):g.fadeTo(90,a?1:0,j),a&&m.target.trigger("qtip-"+this.id+"-inactive"),this))},y.show=function(a){return this.toggle(C,a)},y.hide=function(a){return this.toggle(D,a)},y.focus=function(a){if(!this.rendered||this.destroyed)return this;var b=d(V),c=this.tooltip,e=parseInt(c[0].style.zIndex,10),f=x.zindex+b.length;return c.hasClass(Z)||this._trigger("focus",[f],a)&&(e!==f&&(b.each(function(){this.style.zIndex>e&&(this.style.zIndex=this.style.zIndex-1)}),b.filter("."+Z).qtip("blur",a)),c.addClass(Z)[0].style.zIndex=f),this},y.blur=function(a){return!this.rendered||this.destroyed?this:(this.tooltip.removeClass(Z),this._trigger("blur",[this.tooltip.css("zIndex")],a),this)},y.disable=function(a){return this.destroyed?this:("toggle"===a?a=!(this.rendered?this.tooltip.hasClass(_):this.disabled):"boolean"!=typeof a&&(a=C),this.rendered&&this.tooltip.toggleClass(_,a).attr("aria-disabled",a),this.disabled=!!a,this)},y.enable=function(){return this.disable(D)},y._createButton=function(){var a=this,b=this.elements,c=b.tooltip,e=this.options.content.button,f="string"==typeof e,g=f?e:"Close tooltip";b.button&&b.button.remove(),b.button=e.jquery?e:d("<a />",{"class":"qtip-close "+(this.options.style.widget?"":R+"-icon"),title:g,"aria-label":g}).prepend(d("<span />",{"class":"ui-icon ui-icon-close",html:"&times;"})),b.button.appendTo(b.titlebar||c).attr("role","button").click(function(b){return c.hasClass(_)||a.hide(b),D})},y._updateButton=function(a){if(!this.rendered)return D;var b=this.elements.button;a?this._createButton():b.remove()},y._setWidget=function(){var a=this.options.style.widget,b=this.elements,c=b.tooltip,d=c.hasClass(_);c.removeClass(_),_=a?"ui-state-disabled":"qtip-disabled",c.toggleClass(_,d),c.toggleClass("ui-helper-reset "+k(),a).toggleClass(Y,this.options.style.def&&!a),b.content&&b.content.toggleClass(k("content"),a),b.titlebar&&b.titlebar.toggleClass(k("header"),a),b.button&&b.button.toggleClass(R+"-icon",!a)},y._storeMouse=function(a){(this.mouse=l(a)).type="mousemove"},y._bind=function(a,b,c,e,f){var g="."+this._id+(e?"-"+e:"");b.length&&d(a).bind((b.split?b:b.join(g+" "))+g,d.proxy(c,f||this))},y._unbind=function(a,b){d(a).unbind("."+this._id+(b?"-"+b:""))};var gb="."+R;d(function(){r(V,["mouseenter","mouseleave"],function(a){var b="mouseenter"===a.type,c=d(a.currentTarget),e=d(a.relatedTarget||a.target),f=this.options;b?(this.focus(a),c.hasClass(X)&&!c.hasClass(_)&&clearTimeout(this.timers.hide)):"mouse"===f.position.target&&f.hide.event&&f.show.target&&!e.closest(f.show.target[0]).length&&this.hide(a),c.toggleClass($,b)}),r("["+T+"]",W,p)}),y._trigger=function(a,b,c){var e=d.Event("tooltip"+a);return e.originalEvent=c&&d.extend({},c)||this.cache.event||E,this.triggering=a,this.tooltip.trigger(e,[this].concat(b||[])),this.triggering=D,!e.isDefaultPrevented()},y._bindEvents=function(a,b,c,e,f,g){if(e.add(c).length===e.length){var h=[];b=d.map(b,function(b){var c=d.inArray(b,a);return c>-1?(h.push(a.splice(c,1)[0]),void 0):b}),h.length&&this._bind(c,h,function(a){var b=this.rendered?this.tooltip[0].offsetWidth>0:!1;(b?g:f).call(this,a)})}this._bind(c,a,f),this._bind(e,b,g)},y._assignInitialEvents=function(a){function b(a){return this.disabled||this.destroyed?D:(this.cache.event=l(a),this.cache.target=a?d(a.target):[c],clearTimeout(this.timers.show),this.timers.show=m.call(this,function(){this.render("object"==typeof a||e.show.ready)},e.show.delay),void 0)}var e=this.options,f=e.show.target,g=e.hide.target,h=e.show.event?d.trim(""+e.show.event).split(" "):[],i=e.hide.event?d.trim(""+e.hide.event).split(" "):[];/mouse(over|enter)/i.test(e.show.event)&&!/mouse(out|leave)/i.test(e.hide.event)&&i.push("mouseleave"),this._bind(f,"mousemove",function(a){this._storeMouse(a),this.cache.onTarget=C}),this._bindEvents(h,i,f,g,b,function(){clearTimeout(this.timers.show)}),(e.show.ready||e.prerender)&&b.call(this,a)},y._assignEvents=function(){var c=this,e=this.options,f=e.position,g=this.tooltip,h=e.show.target,i=e.hide.target,j=f.container,k=f.viewport,l=d(b),m=(d(b.body),d(a)),r=e.show.event?d.trim(""+e.show.event).split(" "):[],s=e.hide.event?d.trim(""+e.hide.event).split(" "):[];d.each(e.events,function(a,b){c._bind(g,"toggle"===a?["tooltipshow","tooltiphide"]:["tooltip"+a],b,null,g)}),/mouse(out|leave)/i.test(e.hide.event)&&"window"===e.hide.leave&&this._bind(l,["mouseout","blur"],function(a){/select|option/.test(a.target.nodeName)||a.relatedTarget||this.hide(a)}),e.hide.fixed?i=i.add(g.addClass(X)):/mouse(over|enter)/i.test(e.show.event)&&this._bind(i,"mouseleave",function(){clearTimeout(this.timers.show)}),(""+e.hide.event).indexOf("unfocus")>-1&&this._bind(j.closest("html"),["mousedown","touchstart"],function(a){var b=d(a.target),c=this.rendered&&!this.tooltip.hasClass(_)&&this.tooltip[0].offsetWidth>0,e=b.parents(V).filter(this.tooltip[0]).length>0;b[0]===this.target[0]||b[0]===this.tooltip[0]||e||this.target.has(b[0]).length||!c||this.hide(a)}),"number"==typeof e.hide.inactive&&(this._bind(h,"qtip-"+this.id+"-inactive",p),this._bind(i.add(g),x.inactiveEvents,p,"-inactive")),this._bindEvents(r,s,h,i,n,o),this._bind(h.add(g),"mousemove",function(a){if("number"==typeof e.hide.distance){var b=this.cache.origin||{},c=this.options.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&this.hide(a)}this._storeMouse(a)}),"mouse"===f.target&&f.adjust.mouse&&(e.hide.event&&this._bind(h,["mouseenter","mouseleave"],function(a){this.cache.onTarget="mouseenter"===a.type}),this._bind(l,"mousemove",function(a){this.rendered&&this.cache.onTarget&&!this.tooltip.hasClass(_)&&this.tooltip[0].offsetWidth>0&&this.reposition(a)})),(f.adjust.resize||k.length)&&this._bind(d.event.special.resize?k:m,"resize",q),f.adjust.scroll&&this._bind(m.add(f.container),"scroll",q)},y._unassignEvents=function(){var c=[this.options.show.target[0],this.options.hide.target[0],this.rendered&&this.tooltip[0],this.options.position.container[0],this.options.position.viewport[0],this.options.position.container.closest("html")[0],a,b];this._unbind(d([]).pushStack(d.grep(c,function(a){return"object"==typeof a})))},x=d.fn.qtip=function(a,b,e){var f=(""+a).toLowerCase(),g=E,i=d.makeArray(arguments).slice(1),j=i[i.length-1],k=this[0]?d.data(this[0],R):E;return!arguments.length&&k||"api"===f?k:"string"==typeof a?(this.each(function(){var a=d.data(this,R);if(!a)return C;if(j&&j.timeStamp&&(a.cache.event=j),!b||"option"!==f&&"options"!==f)a[f]&&a[f].apply(a,i);else{if(e===c&&!d.isPlainObject(b))return g=a.get(b),D;a.set(b,e)}}),g!==E?g:this):"object"!=typeof a&&arguments.length?void 0:(k=h(d.extend(C,{},a)),this.each(function(a){var b,c;return c=d.isArray(k.id)?k.id[a]:k.id,c=!c||c===D||c.length<1||x.api[c]?x.nextid++:c,b=s(d(this),c,k),b===D?C:(x.api[c]=b,d.each(Q,function(){"initialize"===this.initialize&&this(b)}),b._assignInitialEvents(j),void 0)}))},d.qtip=e,x.api={},d.each({attr:function(a,b){if(this.length){var c=this[0],e="title",f=d.data(c,"qtip");if(a===e&&f&&"object"==typeof f&&f.options.suppress)return arguments.length<2?d.attr(c,bb):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",b),this.attr(bb,b))}return d.fn["attr"+ab].apply(this,arguments)},clone:function(a){var b=(d([]),d.fn["clone"+ab].apply(this,arguments));return a||b.filter("["+bb+"]").attr("title",function(){return d.attr(this,bb)}).removeAttr(bb),b}},function(a,b){if(!b||d.fn[a+ab])return C;var c=d.fn[a+ab]=d.fn[a];d.fn[a]=function(){return b.apply(this,arguments)||c.apply(this,arguments)}}),d.ui||(d["cleanData"+ab]=d.cleanData,d.cleanData=function(a){for(var b,c=0;(b=d(a[c])).length;c++)if(b.attr(S))try{b.triggerHandler("removeqtip")}catch(e){}d["cleanData"+ab].apply(this,arguments)}),x.version="2.2.0",x.nextid=0,x.inactiveEvents=W,x.zindex=15e3,x.defaults={prerender:D,id:D,overwrite:C,suppress:C,content:{text:C,attr:"title",title:D,button:D},position:{my:"top left",at:"bottom right",target:D,container:D,viewport:D,adjust:{x:0,y:0,mouse:C,scroll:C,resize:C,method:"flipinvert flipinvert"},effect:function(a,b){d(this).animate(b,{duration:200,queue:D})}},show:{target:D,event:"mouseenter",effect:C,delay:90,solo:D,ready:D,autofocus:D},hide:{target:D,event:"mouseleave",effect:C,delay:0,fixed:D,inactive:D,leave:"window",distance:D},style:{classes:"",widget:D,width:D,height:D,def:C},events:{render:E,move:E,show:E,hide:E,toggle:E,visible:E,hidden:E,focus:E,blur:E}};var hb,ib="margin",jb="border",kb="color",lb="background-color",mb="transparent",nb=" !important",ob=!!b.createElement("canvas").getContext,pb=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,qb={},rb=["Webkit","O","Moz","ms"];if(ob)var sb=a.devicePixelRatio||1,tb=function(){var a=b.createElement("canvas").getContext("2d");return a.backingStorePixelRatio||a.webkitBackingStorePixelRatio||a.mozBackingStorePixelRatio||a.msBackingStorePixelRatio||a.oBackingStorePixelRatio||1}(),ub=sb/tb;else var vb=function(a,b,c){return"<qtipvml:"+a+' xmlns="urn:schemas-microsoft.com:vml" class="qtip-vml" '+(b||"")+' style="behavior: url(#default#VML); '+(c||"")+'" />'};d.extend(w.prototype,{init:function(a){var b,c;c=this.element=a.elements.tip=d("<div />",{"class":R+"-tip"}).prependTo(a.tooltip),ob?(b=d("<canvas />").appendTo(this.element)[0].getContext("2d"),b.lineJoin="miter",b.miterLimit=1e5,b.save()):(b=vb("shape",'coordorigin="0,0"',"position:absolute;"),this.element.html(b+b),a._bind(d("*",c).add(c),["click","mousedown"],function(a){a.stopPropagation()},this._ns)),a._bind(a.tooltip,"tooltipmove",this.reposition,this._ns,this),this.create()},_swapDimensions:function(){this.size[0]=this.options.height,this.size[1]=this.options.width},_resetDimensions:function(){this.size[0]=this.options.width,this.size[1]=this.options.height},_useTitle:function(a){var b=this.qtip.elements.titlebar;return b&&(a.y===J||a.y===N&&this.element.position().top+this.size[1]/2+this.options.offset<b.outerHeight(C))},_parseCorner:function(a){var b=this.qtip.options.position.my;return a===D||b===D?a=D:a===C?a=new z(b.string()):a.string||(a=new z(a),a.fixed=C),a},_parseWidth:function(a,b,c){var d=this.qtip.elements,e=jb+t(b)+"Width";return(c?v(c,e):v(d.content,e)||v(this._useTitle(a)&&d.titlebar||d.content,e)||v(d.tooltip,e))||0},_parseRadius:function(a){var b=this.qtip.elements,c=jb+t(a.y)+t(a.x)+"Radius";return cb.ie<9?0:v(this._useTitle(a)&&b.titlebar||b.content,c)||v(b.tooltip,c)||0},_invalidColour:function(a,b,c){var d=a.css(b);return!d||c&&d===a.css(c)||pb.test(d)?D:d},_parseColours:function(a){var b=this.qtip.elements,c=this.element.css("cssText",""),e=jb+t(a[a.precedance])+t(kb),f=this._useTitle(a)&&b.titlebar||b.content,g=this._invalidColour,h=[];return h[0]=g(c,lb)||g(f,lb)||g(b.content,lb)||g(b.tooltip,lb)||c.css(lb),h[1]=g(c,e,kb)||g(f,e,kb)||g(b.content,e,kb)||g(b.tooltip,e,kb)||b.tooltip.css(e),d("*",c).add(c).css("cssText",lb+":"+mb+nb+";"+jb+":0"+nb+";"),h},_calculateSize:function(a){var b,c,d,e=a.precedance===G,f=this.options.width,g=this.options.height,h="c"===a.abbrev(),i=(e?f:g)*(h?.5:1),j=Math.pow,k=Math.round,l=Math.sqrt(j(i,2)+j(g,2)),m=[this.border/i*l,this.border/g*l];return m[2]=Math.sqrt(j(m[0],2)-j(this.border,2)),m[3]=Math.sqrt(j(m[1],2)-j(this.border,2)),b=l+m[2]+m[3]+(h?0:m[0]),c=b/l,d=[k(c*f),k(c*g)],e?d:d.reverse()},_calculateTip:function(a,b,c){c=c||1,b=b||this.size;var d=b[0]*c,e=b[1]*c,f=Math.ceil(d/2),g=Math.ceil(e/2),h={br:[0,0,d,e,d,0],bl:[0,0,d,0,0,e],tr:[0,e,d,0,d,e],tl:[0,0,0,e,d,e],tc:[0,e,f,0,d,e],bc:[0,0,d,0,f,e],rc:[0,0,d,g,0,e],lc:[d,0,d,e,0,g]};return h.lt=h.br,h.rt=h.bl,h.lb=h.tr,h.rb=h.tl,h[a.abbrev()]},_drawCoords:function(a,b){a.beginPath(),a.moveTo(b[0],b[1]),a.lineTo(b[2],b[3]),a.lineTo(b[4],b[5]),a.closePath()},create:function(){var a=this.corner=(ob||cb.ie)&&this._parseCorner(this.options.corner);return(this.enabled=!!this.corner&&"c"!==this.corner.abbrev())&&(this.qtip.cache.corner=a.clone(),this.update()),this.element.toggle(this.enabled),this.corner},update:function(b,c){if(!this.enabled)return this;var e,f,g,h,i,j,k,l,m=this.qtip.elements,n=this.element,o=n.children(),p=this.options,q=this.size,r=p.mimic,s=Math.round;b||(b=this.qtip.cache.corner||this.corner),r===D?r=b:(r=new z(r),r.precedance=b.precedance,"inherit"===r.x?r.x=b.x:"inherit"===r.y?r.y=b.y:r.x===r.y&&(r[b.precedance]=b[b.precedance])),f=r.precedance,b.precedance===F?this._swapDimensions():this._resetDimensions(),e=this.color=this._parseColours(b),e[1]!==mb?(l=this.border=this._parseWidth(b,b[b.precedance]),p.border&&1>l&&!pb.test(e[1])&&(e[0]=e[1]),this.border=l=p.border!==C?p.border:l):this.border=l=0,k=this.size=this._calculateSize(b),n.css({width:k[0],height:k[1],lineHeight:k[1]+"px"}),j=b.precedance===G?[s(r.x===K?l:r.x===M?k[0]-q[0]-l:(k[0]-q[0])/2),s(r.y===J?k[1]-q[1]:0)]:[s(r.x===K?k[0]-q[0]:0),s(r.y===J?l:r.y===L?k[1]-q[1]-l:(k[1]-q[1])/2)],ob?(g=o[0].getContext("2d"),g.restore(),g.save(),g.clearRect(0,0,6e3,6e3),h=this._calculateTip(r,q,ub),i=this._calculateTip(r,this.size,ub),o.attr(H,k[0]*ub).attr(I,k[1]*ub),o.css(H,k[0]).css(I,k[1]),this._drawCoords(g,i),g.fillStyle=e[1],g.fill(),g.translate(j[0]*ub,j[1]*ub),this._drawCoords(g,h),g.fillStyle=e[0],g.fill()):(h=this._calculateTip(r),h="m"+h[0]+","+h[1]+" l"+h[2]+","+h[3]+" "+h[4]+","+h[5]+" xe",j[2]=l&&/^(r|b)/i.test(b.string())?8===cb.ie?2:1:0,o.css({coordsize:k[0]+l+" "+(k[1]+l),antialias:""+(r.string().indexOf(N)>-1),left:j[0]-j[2]*Number(f===F),top:j[1]-j[2]*Number(f===G),width:k[0]+l,height:k[1]+l}).each(function(a){var b=d(this);b[b.prop?"prop":"attr"]({coordsize:k[0]+l+" "+(k[1]+l),path:h,fillcolor:e[0],filled:!!a,stroked:!a}).toggle(!(!l&&!a)),!a&&b.html(vb("stroke",'weight="'+2*l+'px" color="'+e[1]+'" miterlimit="1000" joinstyle="miter"'))})),a.opera&&setTimeout(function(){m.tip.css({display:"inline-block",visibility:"visible"})},1),c!==D&&this.calculate(b,k)},calculate:function(a,b){if(!this.enabled)return D;var c,e,f=this,g=this.qtip.elements,h=this.element,i=this.options.offset,j=(g.tooltip.hasClass("ui-widget"),{});return a=a||this.corner,c=a.precedance,b=b||this._calculateSize(a),e=[a.x,a.y],c===F&&e.reverse(),d.each(e,function(d,e){var h,k,l;e===N?(h=c===G?K:J,j[h]="50%",j[ib+"-"+h]=-Math.round(b[c===G?0:1]/2)+i):(h=f._parseWidth(a,e,g.tooltip),k=f._parseWidth(a,e,g.content),l=f._parseRadius(a),j[e]=Math.max(-f.border,d?k:i+(l>h?l:-h)))}),j[a[c]]-=b[c===F?0:1],h.css({margin:"",top:"",bottom:"",left:"",right:""}).css(j),j
4
- },reposition:function(a,b,d){function e(a,b,c,d,e){a===P&&j.precedance===b&&k[d]&&j[c]!==N?j.precedance=j.precedance===F?G:F:a!==P&&k[d]&&(j[b]=j[b]===N?k[d]>0?d:e:j[b]===d?e:d)}function f(a,b,e){j[a]===N?p[ib+"-"+b]=o[a]=g[ib+"-"+b]-k[b]:(h=g[e]!==c?[k[b],-g[b]]:[-k[b],g[b]],(o[a]=Math.max(h[0],h[1]))>h[0]&&(d[b]-=k[b],o[b]=D),p[g[e]!==c?e:b]=o[a])}if(this.enabled){var g,h,i=b.cache,j=this.corner.clone(),k=d.adjusted,l=b.options.position.adjust.method.split(" "),m=l[0],n=l[1]||l[0],o={left:D,top:D,x:0,y:0},p={};this.corner.fixed!==C&&(e(m,F,G,K,M),e(n,G,F,J,L),j.string()===i.corner.string()||i.cornerTop===k.top&&i.cornerLeft===k.left||this.update(j,D)),g=this.calculate(j),g.right!==c&&(g.left=-g.right),g.bottom!==c&&(g.top=-g.bottom),g.user=this.offset,(o.left=m===P&&!!k.left)&&f(F,K,M),(o.top=n===P&&!!k.top)&&f(G,J,L),this.element.css(p).toggle(!(o.x&&o.y||j.x===N&&o.y||j.y===N&&o.x)),d.left-=g.left.charAt?g.user:m!==P||o.top||!o.left&&!o.top?g.left+this.border:0,d.top-=g.top.charAt?g.user:n!==P||o.left||!o.left&&!o.top?g.top+this.border:0,i.cornerLeft=k.left,i.cornerTop=k.top,i.corner=j.clone()}},destroy:function(){this.qtip._unbind(this.qtip.tooltip,this._ns),this.qtip.elements.tip&&this.qtip.elements.tip.find("*").remove().end().remove()}}),hb=Q.tip=function(a){return new w(a,a.options.style.tip)},hb.initialize="render",hb.sanitize=function(a){if(a.style&&"tip"in a.style){var b=a.style.tip;"object"!=typeof b&&(b=a.style.tip={corner:b}),/string|boolean/i.test(typeof b.corner)||(b.corner=C)}},A.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){this.create(),this.qtip.reposition()},"^style.tip.(height|width)$":function(a){this.size=[a.width,a.height],this.update(),this.qtip.reposition()},"^content.title|style.(classes|widget)$":function(){this.update()}},d.extend(C,x.defaults,{style:{tip:{corner:C,mimic:D,width:6,height:6,border:C,offset:0}}}),Q.viewport=function(c,d,e,f,g,h,i){function j(a,b,c,e,f,g,h,i,j){var k=d[f],m=v[a],t=w[a],u=c===P,x=m===f?j:m===g?-j:-j/2,y=t===f?i:t===g?-i:-i/2,z=r[f]+s[f]-(o?0:n[f]),A=z-k,B=k+j-(h===H?p:q)-z,C=x-(v.precedance===a||m===v[b]?y:0)-(t===N?i/2:0);return u?(C=(m===f?1:-1)*x,d[f]+=A>0?A:B>0?-B:0,d[f]=Math.max(-n[f]+s[f],k-C,Math.min(Math.max(-n[f]+s[f]+(h===H?p:q),k+C),d[f],"center"===m?k-x:1e9))):(e*=c===O?2:0,A>0&&(m!==f||B>0)?(d[f]-=C+e,l.invert(a,f)):B>0&&(m!==g||A>0)&&(d[f]-=(m===N?-C:C)+e,l.invert(a,g)),d[f]<r&&-d[f]>B&&(d[f]=k,l=v.clone())),d[f]-k}var k,l,m,n,o,p,q,r,s,t=e.target,u=c.elements.tooltip,v=e.my,w=e.at,x=e.adjust,y=x.method.split(" "),z=y[0],A=y[1]||y[0],B=e.viewport,C=e.container,E=c.cache,Q={left:0,top:0};return B.jquery&&t[0]!==a&&t[0]!==b.body&&"none"!==x.method?(n=C.offset()||Q,o="static"===C.css("position"),k="fixed"===u.css("position"),p=B[0]===a?B.width():B.outerWidth(D),q=B[0]===a?B.height():B.outerHeight(D),r={left:k?0:B.scrollLeft(),top:k?0:B.scrollTop()},s=B.offset()||Q,("shift"!==z||"shift"!==A)&&(l=v.clone()),Q={left:"none"!==z?j(F,G,z,x.x,K,M,H,f,h):0,top:"none"!==A?j(G,F,A,x.y,J,L,I,g,i):0},l&&E.lastClass!==(m=R+"-pos-"+l.abbrev())&&u.removeClass(c.cache.lastClass).addClass(c.cache.lastClass=m),Q):Q}})}(window,document);
1
+ /* qTip2 v2.2.1 | Plugins: viewport | Styles: core css3 | qtip2.com | Licensed MIT | Sun Sep 07 2014 10:41:40 */
2
 
3
+ !function(a,b,c){!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)}(function(d){"use strict";function e(a,b,c,e){this.id=c,this.target=a,this.tooltip=z,this.elements={target:a},this._id=M+"-"+c,this.timers={img:{}},this.options=b,this.plugins={},this.cache={event:{},target:d(),disabled:y,attr:e,onTooltip:y,lastClass:""},this.rendered=this.destroyed=this.disabled=this.waiting=this.hiddenDuringWait=this.positioning=this.triggering=y}function f(a){return a===z||"object"!==d.type(a)}function g(a){return!(d.isFunction(a)||a&&a.attr||a.length||"object"===d.type(a)&&(a.jquery||a.then))}function h(a){var b,c,e,h;return f(a)?y:(f(a.metadata)&&(a.metadata={type:a.metadata}),"content"in a&&(b=a.content,f(b)||b.jquery||b.done?b=a.content={text:c=g(b)?y:b}:c=b.text,"ajax"in b&&(e=b.ajax,h=e&&e.once!==y,delete b.ajax,b.text=function(a,b){var f=c||d(this).attr(b.options.content.attr)||"Loading...",g=d.ajax(d.extend({},e,{context:b})).then(e.success,z,e.error).then(function(a){return a&&h&&b.set("content.text",a),a},function(a,c,d){b.destroyed||0===a.status||b.set("content.text",c+": "+d)});return h?f:(b.set("content.text",f),g)}),"title"in b&&(d.isPlainObject(b.title)&&(b.button=b.title.button,b.title=b.title.text),g(b.title||y)&&(b.title=y))),"position"in a&&f(a.position)&&(a.position={my:a.position,at:a.position}),"show"in a&&f(a.show)&&(a.show=a.show.jquery?{target:a.show}:a.show===x?{ready:x}:{event:a.show}),"hide"in a&&f(a.hide)&&(a.hide=a.hide.jquery?{target:a.hide}:{event:a.hide}),"style"in a&&f(a.style)&&(a.style={classes:a.style}),d.each(L,function(){this.sanitize&&this.sanitize(a)}),a)}function i(a,b){for(var c,d=0,e=a,f=b.split(".");e=e[f[d++]];)d<f.length&&(c=e);return[c||a,f.pop()]}function j(a,b){var c,d,e;for(c in this.checks)for(d in this.checks[c])(e=new RegExp(d,"i").exec(a))&&(b.push(e),("builtin"===c||this.plugins[c])&&this.checks[c][d].apply(this.plugins[c]||this,b))}function k(a){return P.concat("").join(a?"-"+a+" ":" ")}function l(a,b){return b>0?setTimeout(d.proxy(a,this),b):void a.call(this)}function m(a){this.tooltip.hasClass(W)||(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this.timers.show=l.call(this,function(){this.toggle(x,a)},this.options.show.delay))}function n(a){if(!this.tooltip.hasClass(W)&&!this.destroyed){var b=d(a.relatedTarget),c=b.closest(Q)[0]===this.tooltip[0],e=b[0]===this.options.show.target[0];if(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this!==b[0]&&"mouse"===this.options.position.target&&c||this.options.hide.fixed&&/mouse(out|leave|move)/.test(a.type)&&(c||e))try{a.preventDefault(),a.stopImmediatePropagation()}catch(f){}else this.timers.hide=l.call(this,function(){this.toggle(y,a)},this.options.hide.delay,this)}}function o(a){!this.tooltip.hasClass(W)&&this.options.hide.inactive&&(clearTimeout(this.timers.inactive),this.timers.inactive=l.call(this,function(){this.hide(a)},this.options.hide.inactive))}function p(a){this.rendered&&this.tooltip[0].offsetWidth>0&&this.reposition(a)}function q(a,c,e){d(b.body).delegate(a,(c.split?c:c.join("."+M+" "))+"."+M,function(){var a=s.api[d.attr(this,O)];a&&!a.disabled&&e.apply(a,arguments)})}function r(a,c,f){var g,i,j,k,l,m=d(b.body),n=a[0]===b?m:a,o=a.metadata?a.metadata(f.metadata):z,p="html5"===f.metadata.type&&o?o[f.metadata.name]:z,q=a.data(f.metadata.name||"qtipopts");try{q="string"==typeof q?d.parseJSON(q):q}catch(r){}if(k=d.extend(x,{},s.defaults,f,"object"==typeof q?h(q):z,h(p||o)),i=k.position,k.id=c,"boolean"==typeof k.content.text){if(j=a.attr(k.content.attr),k.content.attr===y||!j)return y;k.content.text=j}if(i.container.length||(i.container=m),i.target===y&&(i.target=n),k.show.target===y&&(k.show.target=n),k.show.solo===x&&(k.show.solo=i.container.closest("body")),k.hide.target===y&&(k.hide.target=n),k.position.viewport===x&&(k.position.viewport=i.container),i.container=i.container.eq(0),i.at=new u(i.at,x),i.my=new u(i.my),a.data(M))if(k.overwrite)a.qtip("destroy",!0);else if(k.overwrite===y)return y;return a.attr(N,c),k.suppress&&(l=a.attr("title"))&&a.removeAttr("title").attr(Y,l).attr("title",""),g=new e(a,k,c,!!j),a.data(M,g),g}var s,t,u,v,w,x=!0,y=!1,z=null,A="x",B="y",C="width",D="height",E="top",F="left",G="bottom",H="right",I="center",J="flipinvert",K="shift",L={},M="qtip",N="data-hasqtip",O="data-qtip-id",P=["ui-widget","ui-tooltip"],Q="."+M,R="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),S=M+"-fixed",T=M+"-default",U=M+"-focus",V=M+"-hover",W=M+"-disabled",X="_replacedByqTip",Y="oldtitle",Z={ie:function(){for(var a=4,c=b.createElement("div");(c.innerHTML="<!--[if gt IE "+a+"]><i></i><![endif]-->")&&c.getElementsByTagName("i")[0];a+=1);return a>4?a:0/0}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||y};t=e.prototype,t._when=function(a){return d.when.apply(d,a)},t.render=function(a){if(this.rendered||this.destroyed)return this;var b,c=this,e=this.options,f=this.cache,g=this.elements,h=e.content.text,i=e.content.title,j=e.content.button,k=e.position,l=("."+this._id+" ",[]);return d.attr(this.target[0],"aria-describedby",this._id),f.posClass=this._createPosClass((this.position={my:k.my,at:k.at}).my),this.tooltip=g.tooltip=b=d("<div/>",{id:this._id,"class":[M,T,e.style.classes,f.posClass].join(" "),width:e.style.width||"",height:e.style.height||"",tracking:"mouse"===k.target&&k.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":y,"aria-describedby":this._id+"-content","aria-hidden":x}).toggleClass(W,this.disabled).attr(O,this.id).data(M,this).appendTo(k.container).append(g.content=d("<div />",{"class":M+"-content",id:this._id+"-content","aria-atomic":x})),this.rendered=-1,this.positioning=x,i&&(this._createTitle(),d.isFunction(i)||l.push(this._updateTitle(i,y))),j&&this._createButton(),d.isFunction(h)||l.push(this._updateContent(h,y)),this.rendered=x,this._setWidget(),d.each(L,function(a){var b;"render"===this.initialize&&(b=this(c))&&(c.plugins[a]=b)}),this._unassignEvents(),this._assignEvents(),this._when(l).then(function(){c._trigger("render"),c.positioning=y,c.hiddenDuringWait||!e.show.ready&&!a||c.toggle(x,f.event,y),c.hiddenDuringWait=y}),s.api[this.id]=this,this},t.destroy=function(a){function b(){if(!this.destroyed){this.destroyed=x;var a,b=this.target,c=b.attr(Y);this.rendered&&this.tooltip.stop(1,0).find("*").remove().end().remove(),d.each(this.plugins,function(){this.destroy&&this.destroy()});for(a in this.timers)clearTimeout(this.timers[a]);b.removeData(M).removeAttr(O).removeAttr(N).removeAttr("aria-describedby"),this.options.suppress&&c&&b.attr("title",c).removeAttr(Y),this._unassignEvents(),this.options=this.elements=this.cache=this.timers=this.plugins=this.mouse=z,delete s.api[this.id]}}return this.destroyed?this.target:(a===x&&"hide"!==this.triggering||!this.rendered?b.call(this):(this.tooltip.one("tooltiphidden",d.proxy(b,this)),!this.triggering&&this.hide()),this.target)},v=t.checks={builtin:{"^id$":function(a,b,c,e){var f=c===x?s.nextid:c,g=M+"-"+f;f!==y&&f.length>0&&!d("#"+g).length?(this._id=g,this.rendered&&(this.tooltip[0].id=this._id,this.elements.content[0].id=this._id+"-content",this.elements.title[0].id=this._id+"-title")):a[b]=e},"^prerender":function(a,b,c){c&&!this.rendered&&this.render(this.options.show.ready)},"^content.text$":function(a,b,c){this._updateContent(c)},"^content.attr$":function(a,b,c,d){this.options.content.text===this.target.attr(d)&&this._updateContent(this.target.attr(c))},"^content.title$":function(a,b,c){return c?(c&&!this.elements.title&&this._createTitle(),void this._updateTitle(c)):this._removeTitle()},"^content.button$":function(a,b,c){this._updateButton(c)},"^content.title.(text|button)$":function(a,b,c){this.set("content."+b,c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(this.position[b]=a[b]=new u(c,"at"===b))},"^position.container$":function(a,b,c){this.rendered&&this.tooltip.appendTo(c)},"^show.ready$":function(a,b,c){c&&(!this.rendered&&this.render(x)||this.toggle(x))},"^style.classes$":function(a,b,c,d){this.rendered&&this.tooltip.removeClass(d).addClass(c)},"^style.(width|height)":function(a,b,c){this.rendered&&this.tooltip.css(b,c)},"^style.widget|content.title":function(){this.rendered&&this._setWidget()},"^style.def":function(a,b,c){this.rendered&&this.tooltip.toggleClass(T,!!c)},"^events.(render|show|move|hide|focus|blur)$":function(a,b,c){this.rendered&&this.tooltip[(d.isFunction(c)?"":"un")+"bind"]("tooltip"+b,c)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){if(this.rendered){var a=this.options.position;this.tooltip.attr("tracking","mouse"===a.target&&a.adjust.mouse),this._unassignEvents(),this._assignEvents()}}}},t.get=function(a){if(this.destroyed)return this;var b=i(this.options,a.toLowerCase()),c=b[0][b[1]];return c.precedance?c.string():c};var $=/^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,_=/^prerender|show\.ready/i;t.set=function(a,b){if(this.destroyed)return this;{var c,e=this.rendered,f=y,g=this.options;this.checks}return"string"==typeof a?(c=a,a={},a[c]=b):a=d.extend({},a),d.each(a,function(b,c){if(e&&_.test(b))return void delete a[b];var h,j=i(g,b.toLowerCase());h=j[0][j[1]],j[0][j[1]]=c&&c.nodeType?d(c):c,f=$.test(b)||f,a[b]=[j[0],j[1],c,h]}),h(g),this.positioning=x,d.each(a,d.proxy(j,this)),this.positioning=y,this.rendered&&this.tooltip[0].offsetWidth>0&&f&&this.reposition("mouse"===g.position.target?z:this.cache.event),this},t._update=function(a,b){var c=this,e=this.cache;return this.rendered&&a?(d.isFunction(a)&&(a=a.call(this.elements.target,e.event,this)||""),d.isFunction(a.then)?(e.waiting=x,a.then(function(a){return e.waiting=y,c._update(a,b)},z,function(a){return c._update(a,b)})):a===y||!a&&""!==a?y:(a.jquery&&a.length>0?b.empty().append(a.css({display:"block",visibility:"visible"})):b.html(a),this._waitForContent(b).then(function(a){c.rendered&&c.tooltip[0].offsetWidth>0&&c.reposition(e.event,!a.length)}))):y},t._waitForContent=function(a){var b=this.cache;return b.waiting=x,(d.fn.imagesLoaded?a.imagesLoaded():d.Deferred().resolve([])).done(function(){b.waiting=y}).promise()},t._updateContent=function(a,b){this._update(a,this.elements.content,b)},t._updateTitle=function(a,b){this._update(a,this.elements.title,b)===y&&this._removeTitle(y)},t._createTitle=function(){var a=this.elements,b=this._id+"-title";a.titlebar&&this._removeTitle(),a.titlebar=d("<div />",{"class":M+"-titlebar "+(this.options.style.widget?k("header"):"")}).append(a.title=d("<div />",{id:b,"class":M+"-title","aria-atomic":x})).insertBefore(a.content).delegate(".qtip-close","mousedown keydown mouseup keyup mouseout",function(a){d(this).toggleClass("ui-state-active ui-state-focus","down"===a.type.substr(-4))}).delegate(".qtip-close","mouseover mouseout",function(a){d(this).toggleClass("ui-state-hover","mouseover"===a.type)}),this.options.content.button&&this._createButton()},t._removeTitle=function(a){var b=this.elements;b.title&&(b.titlebar.remove(),b.titlebar=b.title=b.button=z,a!==y&&this.reposition())},t._createPosClass=function(a){return M+"-pos-"+(a||this.options.position.my).abbrev()},t.reposition=function(c,e){if(!this.rendered||this.positioning||this.destroyed)return this;this.positioning=x;var f,g,h,i,j=this.cache,k=this.tooltip,l=this.options.position,m=l.target,n=l.my,o=l.at,p=l.viewport,q=l.container,r=l.adjust,s=r.method.split(" "),t=k.outerWidth(y),u=k.outerHeight(y),v=0,w=0,z=k.css("position"),A={left:0,top:0},B=k[0].offsetWidth>0,C=c&&"scroll"===c.type,D=d(a),J=q[0].ownerDocument,K=this.mouse;if(d.isArray(m)&&2===m.length)o={x:F,y:E},A={left:m[0],top:m[1]};else if("mouse"===m)o={x:F,y:E},(!r.mouse||this.options.hide.distance)&&j.origin&&j.origin.pageX?c=j.origin:!c||c&&("resize"===c.type||"scroll"===c.type)?c=j.event:K&&K.pageX&&(c=K),"static"!==z&&(A=q.offset()),J.body.offsetWidth!==(a.innerWidth||J.documentElement.clientWidth)&&(g=d(b.body).offset()),A={left:c.pageX-A.left+(g&&g.left||0),top:c.pageY-A.top+(g&&g.top||0)},r.mouse&&C&&K&&(A.left-=(K.scrollX||0)-D.scrollLeft(),A.top-=(K.scrollY||0)-D.scrollTop());else{if("event"===m?c&&c.target&&"scroll"!==c.type&&"resize"!==c.type?j.target=d(c.target):c.target||(j.target=this.elements.target):"event"!==m&&(j.target=d(m.jquery?m:this.elements.target)),m=j.target,m=d(m).eq(0),0===m.length)return this;m[0]===b||m[0]===a?(v=Z.iOS?a.innerWidth:m.width(),w=Z.iOS?a.innerHeight:m.height(),m[0]===a&&(A={top:(p||m).scrollTop(),left:(p||m).scrollLeft()})):L.imagemap&&m.is("area")?f=L.imagemap(this,m,o,L.viewport?s:y):L.svg&&m&&m[0].ownerSVGElement?f=L.svg(this,m,o,L.viewport?s:y):(v=m.outerWidth(y),w=m.outerHeight(y),A=m.offset()),f&&(v=f.width,w=f.height,g=f.offset,A=f.position),A=this.reposition.offset(m,A,q),(Z.iOS>3.1&&Z.iOS<4.1||Z.iOS>=4.3&&Z.iOS<4.33||!Z.iOS&&"fixed"===z)&&(A.left-=D.scrollLeft(),A.top-=D.scrollTop()),(!f||f&&f.adjustable!==y)&&(A.left+=o.x===H?v:o.x===I?v/2:0,A.top+=o.y===G?w:o.y===I?w/2:0)}return A.left+=r.x+(n.x===H?-t:n.x===I?-t/2:0),A.top+=r.y+(n.y===G?-u:n.y===I?-u/2:0),L.viewport?(h=A.adjusted=L.viewport(this,A,l,v,w,t,u),g&&h.left&&(A.left+=g.left),g&&h.top&&(A.top+=g.top),h.my&&(this.position.my=h.my)):A.adjusted={left:0,top:0},j.posClass!==(i=this._createPosClass(this.position.my))&&k.removeClass(j.posClass).addClass(j.posClass=i),this._trigger("move",[A,p.elem||p],c)?(delete A.adjusted,e===y||!B||isNaN(A.left)||isNaN(A.top)||"mouse"===m||!d.isFunction(l.effect)?k.css(A):d.isFunction(l.effect)&&(l.effect.call(k,this,d.extend({},A)),k.queue(function(a){d(this).css({opacity:"",height:""}),Z.ie&&this.style.removeAttribute("filter"),a()})),this.positioning=y,this):this},t.reposition.offset=function(a,c,e){function f(a,b){c.left+=b*a.scrollLeft(),c.top+=b*a.scrollTop()}if(!e[0])return c;var g,h,i,j,k=d(a[0].ownerDocument),l=!!Z.ie&&"CSS1Compat"!==b.compatMode,m=e[0];do"static"!==(h=d.css(m,"position"))&&("fixed"===h?(i=m.getBoundingClientRect(),f(k,-1)):(i=d(m).position(),i.left+=parseFloat(d.css(m,"borderLeftWidth"))||0,i.top+=parseFloat(d.css(m,"borderTopWidth"))||0),c.left-=i.left+(parseFloat(d.css(m,"marginLeft"))||0),c.top-=i.top+(parseFloat(d.css(m,"marginTop"))||0),g||"hidden"===(j=d.css(m,"overflow"))||"visible"===j||(g=d(m)));while(m=m.offsetParent);return g&&(g[0]!==k[0]||l)&&f(g,1),c};var ab=(u=t.reposition.Corner=function(a,b){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,I).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase(),this.forceY=!!b;var c=a.charAt(0);this.precedance="t"===c||"b"===c?B:A}).prototype;ab.invert=function(a,b){this[a]=this[a]===F?H:this[a]===H?F:b||this[a]},ab.string=function(a){var b=this.x,c=this.y,d=b!==c?"center"===b||"center"!==c&&(this.precedance===B||this.forceY)?[c,b]:[b,c]:[b];return a!==!1?d.join(" "):d},ab.abbrev=function(){var a=this.string(!1);return a[0].charAt(0)+(a[1]&&a[1].charAt(0)||"")},ab.clone=function(){return new u(this.string(),this.forceY)},t.toggle=function(a,c){var e=this.cache,f=this.options,g=this.tooltip;if(c){if(/over|enter/.test(c.type)&&e.event&&/out|leave/.test(e.event.type)&&f.show.target.add(c.target).length===f.show.target.length&&g.has(c.relatedTarget).length)return this;e.event=d.event.fix(c)}if(this.waiting&&!a&&(this.hiddenDuringWait=x),!this.rendered)return a?this.render(1):this;if(this.destroyed||this.disabled)return this;var h,i,j,k=a?"show":"hide",l=this.options[k],m=(this.options[a?"hide":"show"],this.options.position),n=this.options.content,o=this.tooltip.css("width"),p=this.tooltip.is(":visible"),q=a||1===l.target.length,r=!c||l.target.length<2||e.target[0]===c.target;return(typeof a).search("boolean|number")&&(a=!p),h=!g.is(":animated")&&p===a&&r,i=h?z:!!this._trigger(k,[90]),this.destroyed?this:(i!==y&&a&&this.focus(c),!i||h?this:(d.attr(g[0],"aria-hidden",!a),a?(this.mouse&&(e.origin=d.event.fix(this.mouse)),d.isFunction(n.text)&&this._updateContent(n.text,y),d.isFunction(n.title)&&this._updateTitle(n.title,y),!w&&"mouse"===m.target&&m.adjust.mouse&&(d(b).bind("mousemove."+M,this._storeMouse),w=x),o||g.css("width",g.outerWidth(y)),this.reposition(c,arguments[2]),o||g.css("width",""),l.solo&&("string"==typeof l.solo?d(l.solo):d(Q,l.solo)).not(g).not(l.target).qtip("hide",d.Event("tooltipsolo"))):(clearTimeout(this.timers.show),delete e.origin,w&&!d(Q+'[tracking="true"]:visible',l.solo).not(g).length&&(d(b).unbind("mousemove."+M),w=y),this.blur(c)),j=d.proxy(function(){a?(Z.ie&&g[0].style.removeAttribute("filter"),g.css("overflow",""),"string"==typeof l.autofocus&&d(this.options.show.autofocus,g).focus(),this.options.show.target.trigger("qtip-"+this.id+"-inactive")):g.css({display:"",visibility:"",opacity:"",left:"",top:""}),this._trigger(a?"visible":"hidden")},this),l.effect===y||q===y?(g[k](),j()):d.isFunction(l.effect)?(g.stop(1,1),l.effect.call(g,this),g.queue("fx",function(a){j(),a()})):g.fadeTo(90,a?1:0,j),a&&l.target.trigger("qtip-"+this.id+"-inactive"),this))},t.show=function(a){return this.toggle(x,a)},t.hide=function(a){return this.toggle(y,a)},t.focus=function(a){if(!this.rendered||this.destroyed)return this;var b=d(Q),c=this.tooltip,e=parseInt(c[0].style.zIndex,10),f=s.zindex+b.length;return c.hasClass(U)||this._trigger("focus",[f],a)&&(e!==f&&(b.each(function(){this.style.zIndex>e&&(this.style.zIndex=this.style.zIndex-1)}),b.filter("."+U).qtip("blur",a)),c.addClass(U)[0].style.zIndex=f),this},t.blur=function(a){return!this.rendered||this.destroyed?this:(this.tooltip.removeClass(U),this._trigger("blur",[this.tooltip.css("zIndex")],a),this)},t.disable=function(a){return this.destroyed?this:("toggle"===a?a=!(this.rendered?this.tooltip.hasClass(W):this.disabled):"boolean"!=typeof a&&(a=x),this.rendered&&this.tooltip.toggleClass(W,a).attr("aria-disabled",a),this.disabled=!!a,this)},t.enable=function(){return this.disable(y)},t._createButton=function(){var a=this,b=this.elements,c=b.tooltip,e=this.options.content.button,f="string"==typeof e,g=f?e:"Close tooltip";b.button&&b.button.remove(),b.button=e.jquery?e:d("<a />",{"class":"qtip-close "+(this.options.style.widget?"":M+"-icon"),title:g,"aria-label":g}).prepend(d("<span />",{"class":"ui-icon ui-icon-close",html:"&times;"})),b.button.appendTo(b.titlebar||c).attr("role","button").click(function(b){return c.hasClass(W)||a.hide(b),y})},t._updateButton=function(a){if(!this.rendered)return y;var b=this.elements.button;a?this._createButton():b.remove()},t._setWidget=function(){var a=this.options.style.widget,b=this.elements,c=b.tooltip,d=c.hasClass(W);c.removeClass(W),W=a?"ui-state-disabled":"qtip-disabled",c.toggleClass(W,d),c.toggleClass("ui-helper-reset "+k(),a).toggleClass(T,this.options.style.def&&!a),b.content&&b.content.toggleClass(k("content"),a),b.titlebar&&b.titlebar.toggleClass(k("header"),a),b.button&&b.button.toggleClass(M+"-icon",!a)},t._storeMouse=function(a){return(this.mouse=d.event.fix(a)).type="mousemove",this},t._bind=function(a,b,c,e,f){if(a&&c&&b.length){var g="."+this._id+(e?"-"+e:"");return d(a).bind((b.split?b:b.join(g+" "))+g,d.proxy(c,f||this)),this}},t._unbind=function(a,b){return a&&d(a).unbind("."+this._id+(b?"-"+b:"")),this},t._trigger=function(a,b,c){var e=d.Event("tooltip"+a);return e.originalEvent=c&&d.extend({},c)||this.cache.event||z,this.triggering=a,this.tooltip.trigger(e,[this].concat(b||[])),this.triggering=y,!e.isDefaultPrevented()},t._bindEvents=function(a,b,c,e,f,g){var h=c.filter(e).add(e.filter(c)),i=[];h.length&&(d.each(b,function(b,c){var e=d.inArray(c,a);e>-1&&i.push(a.splice(e,1)[0])}),i.length&&(this._bind(h,i,function(a){var b=this.rendered?this.tooltip[0].offsetWidth>0:!1;(b?g:f).call(this,a)}),c=c.not(h),e=e.not(h))),this._bind(c,a,f),this._bind(e,b,g)},t._assignInitialEvents=function(a){function b(a){return this.disabled||this.destroyed?y:(this.cache.event=a&&d.event.fix(a),this.cache.target=a&&d(a.target),clearTimeout(this.timers.show),void(this.timers.show=l.call(this,function(){this.render("object"==typeof a||c.show.ready)},c.prerender?0:c.show.delay)))}var c=this.options,e=c.show.target,f=c.hide.target,g=c.show.event?d.trim(""+c.show.event).split(" "):[],h=c.hide.event?d.trim(""+c.hide.event).split(" "):[];this._bind(this.elements.target,["remove","removeqtip"],function(){this.destroy(!0)},"destroy"),/mouse(over|enter)/i.test(c.show.event)&&!/mouse(out|leave)/i.test(c.hide.event)&&h.push("mouseleave"),this._bind(e,"mousemove",function(a){this._storeMouse(a),this.cache.onTarget=x}),this._bindEvents(g,h,e,f,b,function(){return this.timers?void clearTimeout(this.timers.show):y}),(c.show.ready||c.prerender)&&b.call(this,a)},t._assignEvents=function(){var c=this,e=this.options,f=e.position,g=this.tooltip,h=e.show.target,i=e.hide.target,j=f.container,k=f.viewport,l=d(b),q=(d(b.body),d(a)),r=e.show.event?d.trim(""+e.show.event).split(" "):[],t=e.hide.event?d.trim(""+e.hide.event).split(" "):[];d.each(e.events,function(a,b){c._bind(g,"toggle"===a?["tooltipshow","tooltiphide"]:["tooltip"+a],b,null,g)}),/mouse(out|leave)/i.test(e.hide.event)&&"window"===e.hide.leave&&this._bind(l,["mouseout","blur"],function(a){/select|option/.test(a.target.nodeName)||a.relatedTarget||this.hide(a)}),e.hide.fixed?i=i.add(g.addClass(S)):/mouse(over|enter)/i.test(e.show.event)&&this._bind(i,"mouseleave",function(){clearTimeout(this.timers.show)}),(""+e.hide.event).indexOf("unfocus")>-1&&this._bind(j.closest("html"),["mousedown","touchstart"],function(a){var b=d(a.target),c=this.rendered&&!this.tooltip.hasClass(W)&&this.tooltip[0].offsetWidth>0,e=b.parents(Q).filter(this.tooltip[0]).length>0;b[0]===this.target[0]||b[0]===this.tooltip[0]||e||this.target.has(b[0]).length||!c||this.hide(a)}),"number"==typeof e.hide.inactive&&(this._bind(h,"qtip-"+this.id+"-inactive",o,"inactive"),this._bind(i.add(g),s.inactiveEvents,o)),this._bindEvents(r,t,h,i,m,n),this._bind(h.add(g),"mousemove",function(a){if("number"==typeof e.hide.distance){var b=this.cache.origin||{},c=this.options.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&this.hide(a)}this._storeMouse(a)}),"mouse"===f.target&&f.adjust.mouse&&(e.hide.event&&this._bind(h,["mouseenter","mouseleave"],function(a){return this.cache?void(this.cache.onTarget="mouseenter"===a.type):y}),this._bind(l,"mousemove",function(a){this.rendered&&this.cache.onTarget&&!this.tooltip.hasClass(W)&&this.tooltip[0].offsetWidth>0&&this.reposition(a)})),(f.adjust.resize||k.length)&&this._bind(d.event.special.resize?k:q,"resize",p),f.adjust.scroll&&this._bind(q.add(f.container),"scroll",p)},t._unassignEvents=function(){var c=this.options,e=c.show.target,f=c.hide.target,g=d.grep([this.elements.target[0],this.rendered&&this.tooltip[0],c.position.container[0],c.position.viewport[0],c.position.container.closest("html")[0],a,b],function(a){return"object"==typeof a});e&&e.toArray&&(g=g.concat(e.toArray())),f&&f.toArray&&(g=g.concat(f.toArray())),this._unbind(g)._unbind(g,"destroy")._unbind(g,"inactive")},d(function(){q(Q,["mouseenter","mouseleave"],function(a){var b="mouseenter"===a.type,c=d(a.currentTarget),e=d(a.relatedTarget||a.target),f=this.options;b?(this.focus(a),c.hasClass(S)&&!c.hasClass(W)&&clearTimeout(this.timers.hide)):"mouse"===f.position.target&&f.position.adjust.mouse&&f.hide.event&&f.show.target&&!e.closest(f.show.target[0]).length&&this.hide(a),c.toggleClass(V,b)}),q("["+O+"]",R,o)}),s=d.fn.qtip=function(a,b,e){var f=(""+a).toLowerCase(),g=z,i=d.makeArray(arguments).slice(1),j=i[i.length-1],k=this[0]?d.data(this[0],M):z;return!arguments.length&&k||"api"===f?k:"string"==typeof a?(this.each(function(){var a=d.data(this,M);if(!a)return x;if(j&&j.timeStamp&&(a.cache.event=j),!b||"option"!==f&&"options"!==f)a[f]&&a[f].apply(a,i);else{if(e===c&&!d.isPlainObject(b))return g=a.get(b),y;a.set(b,e)}}),g!==z?g:this):"object"!=typeof a&&arguments.length?void 0:(k=h(d.extend(x,{},a)),this.each(function(a){var b,c;return c=d.isArray(k.id)?k.id[a]:k.id,c=!c||c===y||c.length<1||s.api[c]?s.nextid++:c,b=r(d(this),c,k),b===y?x:(s.api[c]=b,d.each(L,function(){"initialize"===this.initialize&&this(b)}),void b._assignInitialEvents(j))}))},d.qtip=e,s.api={},d.each({attr:function(a,b){if(this.length){var c=this[0],e="title",f=d.data(c,"qtip");if(a===e&&f&&"object"==typeof f&&f.options.suppress)return arguments.length<2?d.attr(c,Y):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",b),this.attr(Y,b))}return d.fn["attr"+X].apply(this,arguments)},clone:function(a){var b=(d([]),d.fn["clone"+X].apply(this,arguments));return a||b.filter("["+Y+"]").attr("title",function(){return d.attr(this,Y)}).removeAttr(Y),b}},function(a,b){if(!b||d.fn[a+X])return x;var c=d.fn[a+X]=d.fn[a];d.fn[a]=function(){return b.apply(this,arguments)||c.apply(this,arguments)}}),d.ui||(d["cleanData"+X]=d.cleanData,d.cleanData=function(a){for(var b,c=0;(b=d(a[c])).length;c++)if(b.attr(N))try{b.triggerHandler("removeqtip")}catch(e){}d["cleanData"+X].apply(this,arguments)}),s.version="2.2.1",s.nextid=0,s.inactiveEvents=R,s.zindex=15e3,s.defaults={prerender:y,id:y,overwrite:x,suppress:x,content:{text:x,attr:"title",title:y,button:y},position:{my:"top left",at:"bottom right",target:y,container:y,viewport:y,adjust:{x:0,y:0,mouse:x,scroll:x,resize:x,method:"flipinvert flipinvert"},effect:function(a,b){d(this).animate(b,{duration:200,queue:y})}},show:{target:y,event:"mouseenter",effect:x,delay:90,solo:y,ready:y,autofocus:y},hide:{target:y,event:"mouseleave",effect:x,delay:0,fixed:y,inactive:y,leave:"window",distance:y},style:{classes:"",widget:y,width:y,height:y,def:x},events:{render:z,move:z,show:z,hide:z,toggle:z,visible:z,hidden:z,focus:z,blur:z}},L.viewport=function(c,d,e,f,g,h,i){function j(a,b,c,e,f,g,h,i,j){var k=d[f],s=u[a],t=v[a],w=c===K,x=s===f?j:s===g?-j:-j/2,y=t===f?i:t===g?-i:-i/2,z=q[f]+r[f]-(n?0:m[f]),A=z-k,B=k+j-(h===C?o:p)-z,D=x-(u.precedance===a||s===u[b]?y:0)-(t===I?i/2:0);return w?(D=(s===f?1:-1)*x,d[f]+=A>0?A:B>0?-B:0,d[f]=Math.max(-m[f]+r[f],k-D,Math.min(Math.max(-m[f]+r[f]+(h===C?o:p),k+D),d[f],"center"===s?k-x:1e9))):(e*=c===J?2:0,A>0&&(s!==f||B>0)?(d[f]-=D+e,l.invert(a,f)):B>0&&(s!==g||A>0)&&(d[f]-=(s===I?-D:D)+e,l.invert(a,g)),d[f]<q&&-d[f]>B&&(d[f]=k,l=u.clone())),d[f]-k}var k,l,m,n,o,p,q,r,s=e.target,t=c.elements.tooltip,u=e.my,v=e.at,w=e.adjust,x=w.method.split(" "),z=x[0],L=x[1]||x[0],M=e.viewport,N=e.container,O=(c.cache,{left:0,top:0});return M.jquery&&s[0]!==a&&s[0]!==b.body&&"none"!==w.method?(m=N.offset()||O,n="static"===N.css("position"),k="fixed"===t.css("position"),o=M[0]===a?M.width():M.outerWidth(y),p=M[0]===a?M.height():M.outerHeight(y),q={left:k?0:M.scrollLeft(),top:k?0:M.scrollTop()},r=M.offset()||O,("shift"!==z||"shift"!==L)&&(l=u.clone()),O={left:"none"!==z?j(A,B,z,w.x,F,H,C,f,h):0,top:"none"!==L?j(B,A,L,w.y,E,G,D,g,i):0,my:l}):O}})}(window,document);
 
languages/cpac.mo CHANGED
Binary file
languages/cpac.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Codepress Admin Columns\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2014-12-19 17:09+0100\n"
6
- "PO-Revision-Date: 2014-12-19 17:10+0100\n"
7
  "Last-Translator: Codepress <info@codepress.nl>\n"
8
  "Language-Team: Codepress <info@codepress.nl>\n"
9
  "Language: en_GB\n"
2
  msgstr ""
3
  "Project-Id-Version: Codepress Admin Columns\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2014-12-20 00:05+0100\n"
6
+ "PO-Revision-Date: 2014-12-20 00:05+0100\n"
7
  "Last-Translator: Codepress <info@codepress.nl>\n"
8
  "Language-Team: Codepress <info@codepress.nl>\n"
9
  "Language: en_GB\n"
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
4
  Tags: plugins, wordpress, admin, column, columns, custom columns, custom fields, image, dashboard, sortable, filters, posts, media, users, pages, posttypes, manage columns, wp-admin
5
  Requires at least: 3.5
6
  Tested up to: 4.1
7
- Stable tag: 2.3.2
8
 
9
  Customise columns on the administration screens for post(types), pages, media, comments, links and users with an easy to use drag-and-drop interface.
10
 
@@ -249,6 +249,13 @@ You can find a list of the available actions and filters (and examples on how to
249
 
250
  == Changelog ==
251
 
 
 
 
 
 
 
 
252
  = 2.3.2 =
253
  * [Updated] All translations from Transifex - ttps://www.transifex.com/projects/p/admin-columns
254
  * [Updated] 100% Spanish translation thanks to Carlos
4
  Tags: plugins, wordpress, admin, column, columns, custom columns, custom fields, image, dashboard, sortable, filters, posts, media, users, pages, posttypes, manage columns, wp-admin
5
  Requires at least: 3.5
6
  Tested up to: 4.1
7
+ Stable tag: 2.3.3
8
 
9
  Customise columns on the administration screens for post(types), pages, media, comments, links and users with an easy to use drag-and-drop interface.
10
 
249
 
250
  == Changelog ==
251
 
252
+ = 2.3.3 =
253
+ * [Added] Added user column: Visual Editor
254
+ * [Added] Added post column: Estimated Reading Time
255
+ * [Added] Added method CPAC_Column::get_sorting_value()
256
+ * [Added] Added user column display name
257
+ * [Fixed] Fixed media actions column
258
+
259
  = 2.3.2 =
260
  * [Updated] All translations from Transifex - ttps://www.transifex.com/projects/p/admin-columns
261
  * [Updated] 100% Spanish translation thanks to Carlos