Файл: Luxe-Shop v6.0/templates/redbox/js/shop_utils.js
Строк: 213
<?php
/*
various functions for basket, shop informers, etc
*/
function str_repeat(i, m) {
for (var o = []; m > 0; o[--m] = i);
return o.join('');
}
function sprintf() {
var i = 0, a, f = arguments[i++], o = [], m, p, c, x, s = '';
while (f) {
if (m = /^[^x25]+/.exec(f)) {
o.push(m[0]);
}
else if (m = /^x25{2}/.exec(f)) {
o.push('%');
}
else if (m = /^x25(?:(d+)$)?(+)?(0|'[^$])?(-)?(d+)?(?:.(d+))?([b-fosuxX])/.exec(f)) {
if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) {
throw('Too few arguments.');
}
if (/[^s]/.test(m[7]) && (typeof(a) != 'number')) {
throw('Expecting number but found ' + typeof(a));
}
switch (m[7]) {
case 'b': a = a.toString(2); break;
case 'c': a = String.fromCharCode(a); break;
case 'd': a = parseInt(a); break;
case 'e': a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break;
case 'f': a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a); break;
case 'o': a = a.toString(8); break;
case 's': a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a); break;
case 'u': a = Math.abs(a); break;
case 'x': a = a.toString(16); break;
case 'X': a = a.toString(16).toUpperCase(); break;
}
a = (/[def]/.test(m[7]) && m[2] && a >= 0 ? '+'+ a : a);
c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' ';
x = m[5] - String(a).length - s.length;
p = m[5] ? str_repeat(c, x) : '';
o.push(s + (m[4] ? a + p : p + a));
}
else {
throw('Huh ?!');
}
f = f.substring(m[0].length);
}
return o.join('');
}
function getCookie(c_name){
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++){
x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
x=x.replace(/^s+|s+$/g,"");
if (x==c_name){
return unescape(y);
}
}
}
function formatPrice(price, currObj){
var data = price*currObj.rate;
var znak = '';
if(data<0){
data*=-1;
znak = '-';
}
data = sprintf(uCoz.shop_price_f[0], data);
if(uCoz.shop_price_f[1] != ''){
data = data.replace('.', uCoz.shop_price_f[1]);
}
return currObj.dpos ? znak+""+currObj.disp+""+data : znak+""+data+""+currObj.disp;
}
function optChangePrice(obj, event){
var id = $(obj).attr('id').split('-')[1];
var pref = $(obj).attr('id').split('-')[0];
if(obj.nodeName=='INPUT'){
pref = pref.replace(/^q/, '');
}
if(uCoz==undefined || uCoz.sh_goods[id] == undefined) return;
var pos = undefined;
var sum = 0;
var sum_old = 0;
var o_val = 0;
$.each($("[id^="+pref+"-"+id+"-oval-]"), function(){
o_val = 0;
if(this.tagName == 'INPUT' && this.checked){
var mar_class = $(this).attr('class');
sum+=parseFloat($(this).attr('class').match(/mar(-?d+)/)[1]);
o_val = $(this).attr('data-o-val');
if(o_val.search('%') != -1){
o_val = uCoz.sh_goods[id].old_price*parseFloat(o_val)/100;
}
}
if(this.tagName == 'SELECT'){
sum+=parseFloat($(this).children(":selected").attr('class'));
o_val = $(this).children(":selected").attr('data-o-val');
if(o_val.search('%') != -1){
o_val = uCoz.sh_goods[id].old_price*parseFloat(o_val)/100;
}
}
sum_old+=parseFloat(o_val);
var match = $(this).attr('class').match(/pos(d+)/);
if(match && (parseInt(match[1])<pos || pos == undefined)) pos = parseInt(match[1]);
});
if($(obj).hasClass("pos"+pos) && uCoz.sh_goods[id].imgs != undefined && uCoz.sh_goods[id].imgs.length>1 && uCoz.sh_goods[id].imgs[obj.options.selectedIndex] != undefined){
// var selector = pref != 'id' ? 'ipreview' : pref+'-gphoto-'+id;
var selector = pref+'-gphoto-'+id;
if(pref == 'id' && $('img#ipreview').length) selector='ipreview';
$('img#'+selector).attr('src', uCoz.sh_goods[id].imgs[obj.options.selectedIndex]).attr('idx', obj.options.selectedIndex);
}
var cnt = $('#q'+pref+'-'+id+'-basket').val();
if(cnt=='' || cnt==undefined) cnt=1;
var curr = getCookie(uCoz.mf+'uShopCu') ? getCookie(uCoz.mf+'uShopCu') : uCoz.sh_curr_def;
var price = formatPrice((sum+parseFloat(uCoz.sh_goods[id].price))*cnt, uCoz.sh_curr[curr]);
$("."+pref+"-good-"+id+"-price").html(price);
if(uCoz.sh_goods[id].old_price != '0.00') $("."+pref+"-good-"+id+"-oldprice").html(formatPrice((sum_old+parseFloat(uCoz.sh_goods[id].old_price))*cnt, uCoz.sh_curr[curr]));
}
function checkNumber(obj, event, changePrice) {
var err_msg = '';
var obj_id = $(obj).attr('id').split('-');
var pref = obj_id[0].replace(/^q/, '');
var id = obj_id[1];
$('#'+pref+'-'+id+'-options-selectors').find('input:checked, select').each(function(){
if($(this).val() === ''){
err_msg += '<li>'+$(this).parent().parent().find('span.opt').html().replace(':', '')+'</li>';
}
});
if(err_msg !== ''){
err_msg = checkNumber_err.replace('%err_msg%', err_msg);
shop_alert('<div class="MyWinError">'+err_msg+'<div>',checkNumber_header,'warning',350,100,{tm:8000,align:'left',icon:'/.s/img/icon/warning.png'});
return false;
}else{
event = (event)?event:window.event;
var code = (event.charCode) ? event.charCode : event.keyCode;
var el = event.target || event.srcElement;
if((code >=48 && code <=57) || (code == 37 ) || (code == 45) || (code==8) || (code==46)){
if(parseInt(changePrice)) setTimeout(function(){optChangePrice(obj)}, 100);
return true;
}else{
return false
}
}
}
function wishlist(obj) {
if(lock_buttons) return false; else lock_buttons = 1;
var id = null;
id = obj.id.split('-')[1];
$(obj).removeClass().addClass('wish').addClass('wait');
_uPostForm('',{type:'POST',url:'/shop/wishlisth',data:{'goods_id':id}});
return false;
}
function changeOptions(url, pref, goods_id, obj) {
var wrapObj;
if(pref == 'id'){
wrapObj = $('#id-'+goods_id+'-options-selectors').parents('div.list-item').length ? $('#id-'+goods_id+'-options-selectors').parents('div.list-item') : $('#id-'+goods_id+'-options-selectors').parents('table:eq(1)');
}else if((pref == 'last_view') || (pref == 'top_view') || (pref == 'last_add')){
wrapObj = $('#'+pref+'-'+goods_id+'-options-selectors').parents('table:first');
}else if(pref.search('inf') == 0){
wrapObj = $('#'+pref+'-'+goods_id+'-options-selectors').parents('div.goods-list');
}else {
try{
wrapObj = uCoz.shop_goods_wrappers(pref, goods_id);
}catch(e){
}
}
_shopFadeControl(pref+'-'+goods_id+'-options-selectors', 1, wrapObj);
var opt = new Array();
var opt_id = $(obj).attr('id').split('-').pop();
$('#'+pref+'-'+goods_id+'-options-selectors').find('input:checked, select').each(function(){
if(this.value !== ''){
opt.push(this.id.split('-')[3]+(parseInt(this.value) ? '-'+this.value :''));
}
});
var cnt = $('#q'+pref+'-'+goods_id+'-basket').val() || 1;
_uPostForm('', {url:url, data:{mode:'opt-sel', pref:pref, opt:opt.join(':'), opt_id:opt_id, cnt:cnt}, type:'POST'});
}
function _shopFadeControl(id, pos, obj){
var el = (typeof(obj) == 'object') ? obj : $('#'+id);
var top = 0;
var left = 0;
if(pos && el.length){
top = el.position().top;
left = el.position().left;
}
if(el.length){
var g=document.createElement("div");
var height = $(el).height();
var scrollHeight = $(el)[0].scrollHeight;
if(height < scrollHeight){
height = scrollHeight;
}
$(g).addClass('myWinGrid').attr("id",id+'-fade').css({"left":left,"top":top,"position":"absolute","border":"#CCCCCC 1px solid","width":$(el).width()+'px',"height":height+'px',"z-index":11}).hide().bind('mousedown',function(e){e.stopPropagation();e.preventDefault();_uWnd.globalmousedown();}).html('<div class="myWinLoad" style="margin:5px;"></div>');
$(el).append(g);
$(g).show();
}
}
function ga_event(event_name) {
var events = {
'basket_add':'/shop/basket/add_ushop_',
'basket_buynow':'/shop/basket/quick_ushop_',
'basket_clear':'/shop/basket/clear_ushop_',
'checkout_done':'/shop/checkout/done_ushop_',
'checkout':'/shop/checkout_ushop_',
'shop_autoreg':'/shop/user/autoreg_ushop_'
};
if(window._gaq !== undefined){
_gaq.push(['_trackPageview', events[event_name]]);
}
}
?>