1 2(function($) { 3 4 5 var stomWF = {}; 6 7 8 stomWF.getItem = function(data) { 9 return window.localStorage.getItem(data + '_' + stomWF_siteIdentify); 10 } 11 12 stomWF.setItem = function(data) { 13 return window.localStorage.setItem(data + '_' + stomWF_siteIdentify, JSON.stringify(stomWF.storage)); 14 } 15 16 17 function displayMessage($parent, message, status) { 18 if (!$parent) 19 return false; 20 21 22 if (undefined === window.stomWFMessageTimer) 23 window.stomWFMessageTimer = {}; 24 25 if (window.stomWFMessageTimer[$parent.attr('data-product-id')]) 26 window.clearTimeout(window.stomWFMessageTimer[$parent.attr('data-product-id')]); 27 28 if ($('.stomWF-message', $parent).length) 29 $('.stomWF-message', $parent).remove(); 30 31 $parent.prepend('<div class="stomWF-message stomWF-' + status + '"><p>' + message + '</p></div>'); 32 $('.stomWF-message', $parent).fadeIn(200); 33 34 window.stomWFMessageTimer[$parent.attr('data-product-id')] = window.setTimeout(function() { 35 $('.stomWF-message', $parent).fadeOut(300, function() { 36 $('.stomWF-message', $parent).remove(); 37 }); 38 }, 3000); 39 } 40 41 42 function displayAddedToFavourites(productId) { 43 if (typeof productId === 'undefied') 44 return false; 45 46 if (!stomWF.generatedData.hasOwnProperty(productId)) 47 return false; 48 49 if (!$('.stomWF-favourites-list-link .favourites-added-list').length) 50 return false; 51 52 53 $('.stomWF-favourites-list-link').addClass('list-open'); 54 55 if ($('[data-stomwf-product-id="' + productId + '"]').length) 56 return false; 57 58 59 $('.stomWF-favourites-list-link .favourites-added-list').css('display', '').append(stomWF.addedToList[productId]); 60 } 61 62 63 function displayRemovedFromFavourites(productId) { 64 if (typeof productId === 'undefied') 65 return false; 66 67 if (!$('.stomWF-favourites-list-link .favourites-added-list').length) 68 return false; 69 70 71 if ($('.stomWF-favourites-list-link [data-stomwf-product-id="' + productId + '"]').length) 72 $('.stomWF-favourites-list-link [data-stomwf-product-id="' + productId + '"]').remove(); 73 74 75 if (!$('.stomWF-favourites-list-link .favourites-added-list .added-item').length) 76 $('.stomWF-favourites-list-link .favourites-added-list-close').click(); 77 } 78 79 80 function onAddedToFavourites(showMessage, $favouritesBtn) { 81 var svg = $favouritesBtn.find('svg').get(0).outerHTML; 82 83 if ($favouritesBtn.parents('#product-' + $favouritesBtn.attr('data-product-id')).length) 84 $favouritesBtn.addClass('current-favourite').children('a').html(svg); 85 else 86 $favouritesBtn.addClass('current-favourite'); 87 88 if (showMessage) { 89 displayMessage($favouritesBtn, 'Vare gemt som favorit', 'success'); 90 91 displayAddedToFavourites($favouritesBtn.attr('data-product-id')); 92 } 93 } 94 95 96 function onRemovedFromFavourites(showMessage, $favouritesBtn) { 97 var svg = $favouritesBtn.find('svg').get(0).outerHTML; 98 99 if ($favouritesBtn.parents('#product-' + $favouritesBtn.attr('data-product-id')).length) 100 $favouritesBtn.removeClass('current-favourite').children('a').html(svg); 101 else 102 $favouritesBtn.removeClass('current-favourite'); 103 104 if (showMessage) { 105 displayMessage($favouritesBtn, 'Vare fjernet fra favoritter', 'success'); 106 107 displayRemovedFromFavourites($favouritesBtn.attr('data-product-id')); 108 } 109 } 110 111 112 function updateFavouritesCount() { 113 var favouritesStorage = stomWF.getItem('stomWF') ? JSON.parse(stomWF.getItem('stomWF')) : false; 114 if (favouritesStorage.constructor === Object && Object.keys(favouritesStorage).length !== 0) 115 $('.display, .filler', '.stomWF-favourites-list-link').text(Object.keys(favouritesStorage).length); 116 else 117 $('.display, .filler', '.stomWF-favourites-list-link').text(0); 118 } 119 updateFavouritesCount(); 120 121 122 123 function handleAddToFavouritesButtons() { 124 $('.stom-add-to-favourites:not(.handled)').each(function() { 125 var productId = $(this).attr('data-product-id'); 126 127 if (!stomWF.generatedData.hasOwnProperty(productId)) { 128 var $stomWF_generatedData = $('.stomWF-generated-data[data-product-id=' + productId + ']'); 129 stomWF.generatedData[productId] = $stomWF_generatedData.attr('data-product-html'); 130 stomWF.addedToList[productId] = $stomWF_generatedData.attr('data-product-added-html'); 131 // $stomWF_generatedData.remove(); 132 } 133 134 if (stomWF.storage.hasOwnProperty(productId)) 135 onAddedToFavourites(false, $(this)); 136 137 $(this).addClass('handled'); 138 }); 139 } 140 window.handleAddToFavouritesButtonsFunc = handleAddToFavouritesButtons; 141 142 143 144 $(window).on('load', function() { 145 stomWF.generatedData = {}; 146 stomWF.addedToList = {}; 147 stomWF.storage = stomWF.getItem('stomWF') ? JSON.parse(stomWF.getItem('stomWF')) : {}; 148 149 handleAddToFavouritesButtons(); 150 }); 151 152 153 154 $('body').on('click', '.stom-add-to-favourites', function(e) { 155 e.preventDefault(); 156 e.stopPropagation(); 157 158 var productId = $(this).attr('data-product-id'); 159 160 if (!$(this).hasClass('current-favourite')) { 161 stomWF.storage = stomWF.getItem('stomWF') ? JSON.parse(stomWF.getItem('stomWF')) : {}; 162 stomWF.storage[productId] = stomWF.generatedData[productId]; 163 164 stomWF.setItem('stomWF', JSON.stringify(stomWF.storage)); 165 166 onAddedToFavourites(true, $(this)); 167 } else { 168 delete stomWF.storage[productId]; 169 170 stomWF.setItem('stomWF', JSON.stringify(stomWF.storage)); 171 172 onRemovedFromFavourites(true, $(this)); 173 } 174 175 updateFavouritesCount(); 176 }); 177 178 179 180 if ($('#stomWF-favourites-list-wrap').length) { 181 var favouritesStorage = stomWF.getItem('stomWF') ? JSON.parse(stomWF.getItem('stomWF')) : false; 182 if (Object.keys(favouritesStorage).length === 0 && favouritesStorage.constructor === Object) 183 favouritesStorage = false; 184 185 var favouritesListHTML = ''; 186 187 if (favouritesStorage) { 188 $.each(favouritesStorage, function(productID, productHTML) { 189 favouritesListHTML += productHTML; 190 }); 191 } else { 192 favouritesListHTML = '<p class="message no-products">Du har ingen produkter på din favoritliste</p>'; 193 } 194 195 $('#stomWF-favourites-list').html(favouritesListHTML); 196 } 197 198 199 200 $('ul#stomWF-favourites-list .item-close').on('click', function(e) { 201 e.preventDefault(); 202 e.stopPropagation(); 203 204 stomWF.storage = stomWF.getItem('stomWF') ? JSON.parse(stomWF.getItem('stomWF')) : {}; 205 206 delete stomWF.storage[$(this).attr('data-product-id')]; 207 208 stomWF.setItem('stomWF', JSON.stringify(stomWF.storage)); 209 210 $(this).parent().remove(); 211 212 displayMessage($('#stomWF-favourites-list'), 'Vare fjernet fra favoritter', 'success'); 213 214 updateFavouritesCount(); 215 216 if (Object.keys(stomWF.storage).length === 0 && stomWF.storage.constructor === Object) 217 $('#stomWF-favourites-list').append('<p class="message no-products">Du har ingen produkter på din favoritliste</p>'); 218 }); 219 220 221 222 $(document.body).on('click', '.stomWF-favourites-list-link .favourites-added-list-close', function() { 223 $('.stomWF-favourites-list-link .favourites-added-list').fadeOut(250, function() { 224 $('.stomWF-favourites-list-link').removeClass('list-open'); 225 $(this).css('display', ''); 226 }); 227 }); 228 229 230})(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.