1/* 2 * DC jQuery Slick - jQuery Slick 3 * Copyright (c) 2011 Design Chemical 4 * http://www.designchemical.com 5 * 6 * Dual licensed under the MIT and GPL licenses: 7 * http://www.opensource.org/licenses/mit-license.php 8 * http://www.gnu.org/licenses/gpl.html 9 * 10 */ 11 12(function($){ 13 14 //define the new for the plugin ans how to call it 15 $.fn.dcSlick = function(options) { 16 17 //set default options 18 var defaults = { 19 classWrapper: 'dc-slick', 20 classContent: 'dc-slick-content cookie-prompt', 21 idWrapper: 'dc-slick-'+$(this).index(), 22 location: 'left', 23 align: 'top', 24 offset: '100px', 25 speed: 'slow', 26 tabText: '', 27 classTab: 'tab', 28 classOpen: 'slick-open', 29 classClose: 'slick-close', 30 classToggle: 'slick-toggle', 31 autoClose: true, 32 loadOpen: false, 33 onLoad : function() {}, 34 beforeOpen : function() {}, 35 beforeClose: function() {} 36 }; 37 38 //call in the default otions 39 var options = $.extend(defaults, options); 40 var $dcSlickObj = this; 41 //act upon the element that is passed into the design 42 return $dcSlickObj.each(function(options){ 43 44 // declare variables 45 var clWrap = defaults.classWrapper; 46 47 var slickHtml = $dcSlickObj.html(); 48 $dcSlickObj.css('float','left'); 49 var objWidth = $dcSlickObj.width(); 50 $dcSlickObj.empty(); 51 var slickTab = '<div class="'+defaults.classTab+'"><span>'+defaults.tabText+'</span></div>'; 52 $(this).hide(); 53 var idWrapper = defaults.idWrapper; 54 var slider = '<div id="'+idWrapper+'" class="'+clWrap+'">'+slickTab+'<div class="'+defaults.classContent+'">'+slickHtml+'</div></div>'; 55 $('body').append(slider); 56 var $slider = $('#'+idWrapper); 57 var $tab = $('.'+defaults.classTab,$slider); 58 $tab.css({position: 'absolute'}); 59 var linkOpen = $('.'+defaults.classOpen); 60 var linkClose = $('.'+defaults.classClose); 61 var linkToggle = $('.'+defaults.classToggle); 62 63 // Get container dimensions 64 var height = $slider.height(); 65 $slider.css('float','left'); 66 var outerW = $slider.outerWidth(); 67 var widthPx = outerW+'px'; 68 $slider.css('float','none'); 69 var outerH = $slider.outerHeight(); 70 var padH = outerH - height; 71 var heightPx = outerH+'px'; 72 var bodyHeight = $(window).height(); 73 74 slickSetup($slider); 75 76 if(defaults.autoClose == true){ 77 $('body').mouseup(function(e){ 78 if($slider.hasClass('active')){ 79 if(!$(e.target).parents('#'+defaults.idWrapper).length){ 80 if(!($(e.target).hasClass(defaults.classOpen) || $(e.target).hasClass(defaults.classToggle))){ 81 slickClose(); 82 } 83 } 84 } 85 }); 86 } 87 88 $tab.click(function(){ 89 if($slider.hasClass('active')){ 90 slickClose(); 91 } else { 92 slickOpen(); 93 } 94 }); 95 96 $(linkOpen).click(function(e){ 97 slickOpen(); 98 e.preventDefault(); 99 }); 100 101 $(linkClose).click(function(e){ 102 if($slider.hasClass('active')){ 103 slickClose(); 104 } 105 e.preventDefault(); 106 }); 107 108 $(linkToggle).click(function(e){ 109 if($slider.hasClass('active')){ 110 slickClose(); 111 } else { 112 slickOpen(); 113 } 114 e.preventDefault(); 115 }); 116 117 if(defaults.loadOpen == true){ 118 slickOpen(); 119 } 120 121 function slickOpen(){ 122 123 $('.'+clWrap).css({zIndex: 10000}); 124 $slider.css({zIndex: 10001}); 125 if(defaults.location == 'bottom'){ 126 $slider.animate({marginBottom: "-=5px"}, "fast").animate({marginBottom: 0}, defaults.speed); 127 } 128 if(defaults.location == 'top'){ 129 $slider.animate({marginTop: "-=5px"}, "fast").animate({marginTop: 0}, defaults.speed); 130 } 131 if(defaults.location == 'left'){ 132 $slider.animate({marginLeft: "-=5px"}, "fast").animate({marginLeft: 0}, defaults.speed); 133 } 134 if(defaults.location == 'right'){ 135 $slider.animate({marginRight: "-=5px"}, "fast").animate({marginRight: 0}, defaults.speed); 136 } 137 $slider.addClass('active'); 138 139 // onOpen callback; 140 defaults.beforeOpen.call(this); 141 } 142 143 function slickClose(){ 144 145 $slider.css({zIndex: 10000}); 146 if($slider.hasClass('active')){ 147 var params = {"marginBottom": "-"+heightPx}; 148 switch (defaults.location) { 149 case 'top': 150 params = {"marginTop": "-"+heightPx}; 151 break; 152 case 'left': 153 params = {"marginLeft": "-"+widthPx}; 154 break; 155 case 'right': 156 params = {"marginRight": "-"+widthPx}; 157 break; 158 } 159 $slider.removeClass('active').animate(params, defaults.speed); 160 } 161 // onClose callback; 162 defaults.beforeClose.call(this); 163 } 164 165 function slickSetup(obj){ 166 167 var $container = $('.'+defaults.classContent,obj); 168 $(obj).addClass(defaults.location).addClass('align-'+defaults.align).css({position: 'fixed', zIndex: 10000}); 169 // Get slider border 170 var bdrTop = $slider.css('border-top-width'); 171 var bdrRight = $slider.css('border-right-width'); 172 var bdrBottom = $slider.css('border-bottom-width'); 173 var bdrLeft = $slider.css('border-left-width'); 174 // Get tab dimension 175 var $tab = $('.'+defaults.classTab,$slider); 176 var tabWidth = $tab.outerWidth(true); 177 var tabWidthPx = tabWidth+'px'; 178 var tabHeight = $tab.outerHeight(true); 179 var tabHeightPx = tabHeight+'px'; 180 // Calc max container dimensions 181 var containerH = $container.height(); 182 var containerPad = $container.outerHeight(true)-containerH; 183 var maxHeight = bodyHeight - tabHeight; 184 185 if(outerH > maxHeight){ 186 containerH = maxHeight - padH - containerPad; 187 heightPx = maxHeight+'px'; 188 } 189 $container.css({height: containerH+'px'}); 190 191 // Default params for location 'left' 192 var params = {marginLeft: '-'+widthPx, top: defaults.offset}; 193 var paramsTab = {marginRight: '-'+tabWidthPx} 194 195 if(defaults.location == 'right'){ 196 params = {marginRight: '-'+widthPx, top: defaults.offset}; 197 paramsTab = {marginLeft: '-'+tabWidthPx}; 198 } 199 200 if(defaults.location == 'top'){ 201 params = {marginTop: '-'+heightPx}; 202 paramsTab = {marginBottom: '-'+tabHeightPx}; 203 204 if(defaults.align == 'left'){ 205 params = {marginTop: '-'+heightPx, left: defaults.offset}; 206 paramsTab = {marginBottom: '-'+tabHeightPx, left: 0}; 207 } else { 208 params = {marginTop: '-'+heightPx, right: defaults.offset}; 209 paramsTab = {marginBottom: '-'+tabHeightPx, right: 0}; 210 } 211 } 212 213 if(defaults.location == 'bottom'){ 214 params = {marginBottom: '-'+heightPx}; 215 paramsTab = {marginTop: '-'+tabHeightPx}; 216 217 if(defaults.align == 'left'){ 218 params = {marginBottom: '-'+heightPx, left: defaults.offset}; 219 paramsTab = {marginTop: '-'+tabHeightPx, left: 0}; 220 } else { 221 params = {marginBottom: '-'+heightPx, right: defaults.offset}; 222 paramsTab = {marginTop: '-'+tabHeightPx, right: 0}; 223 } 224 } 225 $(obj).css(params); 226 $tab.css(paramsTab); 227 // onLoad callback; 228 defaults.onLoad.call(this); 229 } 230 231 }); 232 }; 233})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.