1var RSGoPro_OffersExt_timeout_id = 0; 2 3function RSGoPro_OffersExt_ChangeHTML($elementObj) { 4 var element_id = $elementObj.data('elementid'); 5 if( RSGoPro_OFFERS[element_id] ) { 6 // get all selected values 7 var arrFullChosed = new Object(); 8 $elementObj.find('.div_option.selected').each(function(index1){ 9 var $optionObj = $(this); 10 var code = $optionObj.parents('.offer_prop').data('code'); 11 var value = $optionObj.data('value'); 12 arrFullChosed[code] = value; 13 }); 14 15 // get offerID (key=ID) 16 var finedOfferID = 0; 17 var all_prop_true2 = true; 18 for(offerID in RSGoPro_OFFERS[element_id].OFFERS) { 19 all_prop_true2 = true; 20 for(pCode in arrFullChosed) { 21 if( arrFullChosed[pCode] != RSGoPro_OFFERS[element_id].OFFERS[offerID].PROPERTIES[pCode] ) { 22 all_prop_true2 = false; 23 break; 24 } 25 } 26 if(all_prop_true2) { 27 finedOfferID = offerID; 28 break; 29 } 30 } 31 32 // article 33 if( $elementObj.find('.offer_article') ) { 34 if( RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].ARTICLE ) { 35 $elementObj.find('.offer_article').html( RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].ARTICLE ).parent().css('visibility','visible'); 36 } else if( $elementObj.find('.offer_article').data('prodarticle') ) { 37 $elementObj.find('.offer_article').html( $elementObj.find('.offer_article').data('prodarticle') ).parent().css('visibility','visible'); 38 } else { 39 $elementObj.find('.offer_article').parent().css('visibility','hidden'); 40 } 41 } 42 43 // set price 44 if( RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].PRICES ) { 45 var PRICES = RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].PRICES; 46 for(var PRICE_CODE in PRICES) { 47 if( $elementObj.find('.price_pdv_'+PRICE_CODE) ) { 48 $elementObj.find('.price_pdv_'+PRICE_CODE).removeClass('new').html( PRICES[PRICE_CODE].PRINT_DISCOUNT_VALUE ); 49 if( parseInt(PRICES[PRICE_CODE].DISCOUNT_DIFF)>0 ) { 50 $elementObj.find('.price_pdv_'+PRICE_CODE).addClass('new'); 51 } 52 } 53 if( $elementObj.find('.price_pd_'+PRICE_CODE) ) { 54 if( parseInt(PRICES[PRICE_CODE].DISCOUNT_DIFF)>0 ) { 55 $elementObj.find('.price_pd_'+PRICE_CODE).html( PRICES[PRICE_CODE].PRINT_DISCOUNT ); 56 } else { 57 $elementObj.find('.price_pd_'+PRICE_CODE).html( '' ); 58 } 59 } 60 if( $elementObj.find('.price_pv_'+PRICE_CODE) ) { 61 if( parseInt(PRICES[PRICE_CODE].DISCOUNT_DIFF)>0 ) { 62 $elementObj.find('.price_pv_'+PRICE_CODE).html( PRICES[PRICE_CODE].PRINT_VALUE ); 63 } else { 64 $elementObj.find('.price_pv_'+PRICE_CODE).html( '' ); 65 } 66 } 67 } 68 } 69 70 var SKUProps = RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].DISPLAY_PROPERTIES; 71 for(var SKUProp in SKUProps) { 72 $elementObj.find('.prop_num'+SKUProp).find('.val_prop_sku').html(SKUProps[SKUProp].DISPLAY_VALUE); 73 } 74 75 // set ratio 76 if( RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].CATALOG_MEASURE_RATIO && $elementObj.find('.js-quantity') ) { 77 $elementObj.find('.js-quantity').data('ratio',RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].CATALOG_MEASURE_RATIO); 78 $elementObj.find('.js-quantity').val( $elementObj.find('.js-quantity').data('ratio') ); 79 } 80 if( RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].CATALOG_MEASURE_NAME && $elementObj.find('.js-measurename') ) { 81 $elementObj.find('.js-measurename').html( RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].CATALOG_MEASURE_NAME ); 82 } 83 84 // daysarticle & quickbuy 85 $elementObj.removeClass('qb da2'); 86 $elementObj.find('.timers .timer').hide(); 87 if( RSGoPro_OFFERS[element_id].ELEMENT.QUICKBUY || RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].QUICKBUY ) { 88 $elementObj.addClass('qb'); 89 if( $elementObj.find('.timers .qb.js-timer_id'+element_id).length>0 ) { 90 $elementObj.find('.timers .qb.js-timer_id'+element_id).css('display','inline-block'); 91 } else if ( $elementObj.find('.timers .qb.js-timer_id'+finedOfferID).length>0 ) { 92 $elementObj.find('.timers .qb.js-timer_id'+finedOfferID).css('display','inline-block'); 93 } 94 } 95 if( RSGoPro_OFFERS[element_id].ELEMENT.DAYSARTICLE2 || RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].DAYSARTICLE2 ) { 96 $elementObj.removeClass('qb').addClass('da2'); 97 if( $elementObj.find('.timers .da2.js-timer_id'+element_id).length>0 ) { 98 $elementObj.find('.timers .timer').hide(); 99 $elementObj.find('.timers .da2.js-timer_id'+element_id).css('display','inline-block'); 100 } else if ( $elementObj.find('.timers .da2.js-timer_id'+finedOfferID).length>0 ) { 101 $elementObj.find('.timers .timer').hide(); 102 $elementObj.find('.timers .da2.js-timer_id'+finedOfferID).css('display','inline-block'); 103 } 104 } 105 106 107 // change product id 108 $elementObj.find('.js-add2basketpid').val( finedOfferID ); 109 if(RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].CAN_BUY) { 110 $elementObj.find('.add2basketform').removeClass('cantbuy'); 111 } else { 112 $elementObj.find('.add2basketform').addClass('cantbuy'); 113 } 114 115 // stores 116 if( $elementObj.find('.stores') && finedOfferID>0 && $elementObj.find('.stores').find('.popupstores') ) { 117 if( RSGoPro_STOCK[element_id] ) { 118 if( $elementObj.find('.stores').hasClass('gopro_20') ) { 119 // change stores 120 for(storeID in RSGoPro_STOCK[element_id].JS.SKU[finedOfferID]) { 121 var stores = RSGoPro_STOCK[element_id].JS.SKU[finedOfferID]; 122 var quantity = stores[storeID]; 123 if( RSGoPro_STOCK[element_id].USE_MIN_AMOUNT==true ) { 124 if( quantity < 1 ) { 125 $elementObj.find('.stores').find('.store_'+storeID).find('.amount').css('color','#ff0000').html( RSGoPro_STOCK[element_id].MESSAGE_EMPTY ); 126 } else if( quantity < RSGoPro_STOCK[element_id].MIN_AMOUNT ) { 127 $elementObj.find('.stores').find('.store_'+storeID).find('.amount').css('color','').html( RSGoPro_STOCK[element_id].MESSAGE_LOW ); 128 } else { 129 $elementObj.find('.stores').find('.store_'+storeID).find('.amount').css('color','#00cc00').html( RSGoPro_STOCK[element_id].MESSAGE_ISSET ); 130 } 131 } else { 132 $elementObj.find('.stores').find('.store_'+storeID).find('.amount').html( quantity ); 133 } 134 if( RSGoPro_STOCK[element_id].SHOW_EMPTY_STORE==false && quantity<1 ) { 135 $elementObj.find('.stores').find('.store_'+storeID).hide(); 136 } else { 137 $elementObj.find('.stores').find('.store_'+storeID).show(); 138 } 139 } 140 } else { 141 console.warn( 'OffersExt_ChangeHTML -> old stores template version' ); 142 // change stores 143 $elementObj.find('.stores').find('.genamount').removeClass('cantopen'); 144 $elementObj.find('.stores').find('.popupstores').find('.offerstore').hide(); 145 if( $elementObj.find('.stores').find('.popupstores').find('.offer_'+finedOfferID).length>0 ) { 146 $elementObj.find('.stores').find('.popupstores').find('.offer_'+finedOfferID).show(); 147 } else { 148 $elementObj.find('.stores').find('.genamount').addClass('cantopen'); 149 } 150 } 151 // change general 152 if( RSGoPro_STOCK[element_id].QUANTITY[element_id] ) { 153 var quantity = parseInt( RSGoPro_STOCK[element_id].QUANTITY[finedOfferID] ); 154 if( RSGoPro_STOCK[element_id].USE_MIN_AMOUNT==true ) { 155 if( quantity < 1 ) { 156 $elementObj.find('.stores').find('.genamount span').css('color','#ff0000').html( RSGoPro_STOCK[element_id].MESSAGE_EMPTY ); 157 } else if( quantity < RSGoPro_STOCK[element_id].MIN_AMOUNT ) { 158 $elementObj.find('.stores').find('.genamount span').css('color','').html( RSGoPro_STOCK[element_id].MESSAGE_LOW ); 159 } else { 160 $elementObj.find('.stores').find('.genamount span').css('color','#00cc00').html( RSGoPro_STOCK[element_id].MESSAGE_ISSET ); 161 } 162 } else { 163 $elementObj.find('.stores').find('.genamount span').html( quantity ); 164 } 165 } 166 } else { 167 console.warn( 'OffersExt_ChangeHTML -> store not found' ); 168 } 169 } 170 171 // set buttons "in basket" and "not in basket" 172 RSGoPro_SetInBasket(); 173 174 // event 175 $(document).trigger('RSGoProOnOfferChange',[$elementObj]); 176 177 } 178} 179 180function RSGoPro_OffersExt_PropChanged($optionObj) 181{ 182 var element_id = $optionObj.parents('.js-element').data('elementid'); 183 var CURRENT_PROP_CODE = $optionObj.parents('.offer_prop').data('code'); 184 var value = $optionObj.data('value'); 185 if( RSGoPro_OFFERS[element_id] && !$optionObj.hasClass('disabled') ) { 186 // change styles 187 $optionObj.parents('.offer_prop').removeClass('opened').addClass('closed'); 188 $optionObj.parents('.offer_prop').find('.div_option').removeClass('selected'); 189 $optionObj.addClass('selected'); 190 191 // set current value 192 if( $optionObj.parents('.offer_prop').hasClass('color') ) { // color 193 $optionObj.parents('.offer_prop').find('.div_selected span').css({'backgroundImage':$optionObj.find('span').css('backgroundImage')}); 194 $optionObj.parents('.offer_prop').find('.div_selected span').attr('title', $optionObj.data('value')); 195 } else { 196 $optionObj.parents('.offer_prop').find('.div_selected span').html(value); 197 } 198 199 var next_index = 0; 200 var NEXT_PROP_CODE = ''; 201 var PROP_CODE = ''; 202 203 // get current values 204 var arCurrentValues = new Object(); 205 for(index in RSGoPro_OFFERS[element_id].SORT_PROPS) { 206 PROP_CODE = RSGoPro_OFFERS[element_id].SORT_PROPS[index]; 207 arCurrentValues[PROP_CODE] = $optionObj.parents('.js-element').find('.prop_'+PROP_CODE).find('.div_option.selected').data('value'); 208 // save next prop_code 209 if(PROP_CODE==CURRENT_PROP_CODE) { 210 var next_index = parseInt(index)+1; 211 if( RSGoPro_OFFERS[element_id].SORT_PROPS[next_index] ) 212 NEXT_PROP_CODE = RSGoPro_OFFERS[element_id].SORT_PROPS[next_index]; 213 else 214 NEXT_PROP_CODE = false;
215 break; 216 } 217 } 218 219 // get enabled values for next property 220 if(NEXT_PROP_CODE) { 221 var allPropTrue1 = true; 222 var arNextEnabledProps = new Array(); 223 for(offerID in RSGoPro_OFFERS[element_id].OFFERS) { 224 allPropTrue1 = true; 225 for(pCode1 in arCurrentValues) { 226 if( arCurrentValues[pCode1] != RSGoPro_OFFERS[element_id].OFFERS[offerID].PROPERTIES[pCode1] ) { 227 allPropTrue1 = false; 228 } 229 } 230 if(allPropTrue1) { 231 arNextEnabledProps.push( RSGoPro_OFFERS[element_id].OFFERS[offerID].PROPERTIES[NEXT_PROP_CODE] ); 232 } 233 } 234 235 // disable and enable values for NEXT_PROP_CODE 236 $optionObj.parents('.js-element').find('.prop_'+NEXT_PROP_CODE).find('.div_option').each(function(i){ 237 var $option = $(this); 238 var emptyInEnabled = true; 239 for(inden in arNextEnabledProps) { 240 if( $option.data('value') == arNextEnabledProps[inden] ) { 241 emptyInEnabled = false; 242 break; 243 } 244 } 245 $option.addClass('disabled'); 246 if(!emptyInEnabled) 247 $option.removeClass('disabled'); 248 }); 249 250 // call itself 251 var nextOptionObj; 252 if(!$optionObj.parents('.js-element').find('.prop_'+NEXT_PROP_CODE).find('.div_option.selected').hasClass('disabled')) { 253 nextOptionObj = $optionObj.parents('.js-element').find('.prop_'+NEXT_PROP_CODE).find('.div_option.selected'); 254 } else { 255 nextOptionObj = $optionObj.parents('.js-element').find('.prop_'+NEXT_PROP_CODE).find('.div_option:not(.disabled):first'); 256 } 257 RSGoPro_OffersExt_PropChanged(nextOptionObj); 258 } else { 259 RSGoPro_OffersExt_ChangeHTML( $optionObj.parents('.js-element') ); 260 } 261 } 262} 263 264$(document).ready(function(){ 265 266 // prop select -> click 267 $(document).on('click','.div_option',function(e){ 268 e.stopPropagation(); 269 clearTimeout( RSGoPro_OffersExt_timeout_id ); 270 var $optionObj = $(this); 271 var url_begin = $optionObj.parents('.js-element').data('detail'); 272 if(!$optionObj.hasClass('disabled')) { 273 var element_id = $optionObj.parents('.js-element').data('elementid'); 274 if( element_id > 0 ) { 275 var propCode = $optionObj.parents('.offer_prop').data('code'); 276 var value = $optionObj.data('value'); 277 if( RSGoPro_OFFERS[element_id] ) { 278 RSGoPro_OffersExt_PropChanged($optionObj); 279 } else { 280 RSGoPro_Area2Darken( $optionObj.parents('.js-element'), 'animashka' ); 281 var url = url_begin + '?AJAX_CALL=Y&action=get_element_json&element_id=' + element_id; 282 $.getJSON(url, {}, function(json){ 283 RSGoPro_OFFERS[element_id] = json; 284 RSGoPro_OffersExt_PropChanged($optionObj); 285 RSGoPro_Area2Darken( $optionObj.parents('.js-element') ); 286 }).fail(function(data){ 287 console.warn( 'Get element JSON -> fail request' ); 288 RSGoPro_Area2Darken( $optionObj.parents('.js-element') ); 289 }); 290 } 291 } else { 292 console.warn( 'Get element JSON -> element_id is empty' ); 293 } 294 } 295 return false; 296 }); 297 $(document).on('click','.div_selected',function(e){ 298 $('.offer_prop.opened:not(.prop_'+ $(this).parents('.offer_prop').data('code')+')').removeClass('opened').addClass('closed'); 299 if( $(this).parents('.offer_prop').hasClass('closed') ) { // was closed 300 $(this).parents('.offer_prop').removeClass('closed').addClass('opened'); 301 } else { // was opened 302 $(this).parents('.offer_prop').removeClass('opened').addClass('closed'); 303 } 304 return false; 305 }); 306 // close prop select by click outside 307 $(document).on('click',function(e){ 308 if( $(e.target).parents('.offer_prop').length>0 && !$(e.target).parents('.offer_prop').hasClass('color') ) { 309 310 } else { 311 $('.offer_prop').removeClass('opened').addClass('closed'); 312 } 313 }); 314 315 BX.addCustomEvent('onAjaxSuccess', function(data){ 316 if (typeof data === "undefined") { 317 if($("#err_del_tk").length > 0) { 318 $('.bx_ordercart_order_pay_center').css('display','none'); 319 $("#errGoods").html(''); 320 $("#errGoods").append($("#err_del_tk").html()); 321 $('.bg-modal-er-order').show(); 322 $('#orderError').show(); 323 } 324 if($("#err_del_order").length > 0) { 325 $('.bx_ordercart_order_pay_center').css('display','none'); 326 $("#errGoods").html(''); 327 $("#errGoods").append($("#err_del_order").html()); 328 $('.bg-modal-er-order').show(); 329 $('#orderError').show(); 330 } 331 if($("#err_del_tk_false").length > 0) { 332 $('.bx_ordercart_order_pay_center').css('display','block'); 333 $("#errGoods").html(''); 334 $('.bg-modal-er-order').hide(); 335 $('#orderError').hide(); 336 } 337 if($("#order_form_div").length > 0){ 338 $("input[name='ORDER_PROP_10']").mask("+7 (999) 999-99-99"); 339 $("input[name='ORDER_PROP_16']").mask("+7 (999) 999-99-99"); 340 $("input[name='ORDER_PROP_12']").mask("+7 (999) 999-99-99"); 341 } 342 } 343 }); 344 345 if($("#err_del_tk").length > 0) { 346 $('.bx_ordercart_order_pay_center').css('display','none'); 347 $("#errGoods").html(''); 348 $("#errGoods").append($("#err_del_tk").html()); 349 $('.bg-modal-er-order').show(); 350 $('#orderError').show(); 351 } 352 if($("#err_del_order").length > 0) { 353 $('.bx_ordercart_order_pay_center').css('display','none'); 354 $("#errGoods").html(''); 355 $("#errGoods").append($("#err_del_order").html()); 356 $('.bg-modal-er-order').show(); 357 $('#orderError').show(); 358 } 359 if($("#err_del_tk_false").length > 0) { 360 $('.bx_ordercart_order_pay_center').css('display','block'); 361 $("#errGoods").html(''); 362 $('.bg-modal-er-order').hide(); 363 $('#orderError').hide(); 364 } 365 366 $('#orderError').on('click', 'a', function(e){ 367 if($(this).attr('href')=='#delivery'){ 368 e.preventDefault(); 369 $('.bg-modal-er-order').hide(); 370 $('#orderError').hide(); 371 } 372 }); 373 374 $('#orderErrorBoxberry').on('click', 'a', function(e){ 375 if($(this).attr('href')=='#boxberry_set'){ 376 e.preventDefault(); 377 $('.bg-modal-er-order').hide(); 378 $('#orderErrorBoxberry').hide(); 379 $("label[for='ID_DELIVERY_ID_30']").find('a').trigger('click'); 380 } 381 }); 382 383 $('body').on('click', '.bg-modal-er-order', function(e){ 384 $('.bg-modal-er-order').hide(); 385 $('#orderErrorBoxberry').hide(); 386 $('#orderError').hide(); 387 }); 388 389});
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.