Вход Регистрация
Файл: Luxe-Shop v6.0/templates/redbox/js/shop.js
Строк: 1457
<?php
function payFromBalance(obj){
    if(
confirm(obj.confirm.value)){
        new 
_uWnd('win-'+obj.id,obj.rem.value,-340,-120,{autosize:0,modal:1,closeonesc:1,resize:0},{form:obj.id,url:obj.action});
    }else{
        if(
typeof window.shop_redirect != 'undefined'){ location.href window.shop_redirectwindow.shop_redirect null; }
    }
    return 
false;
}

function 
shopSelectPeriod(obj){
    var 
tmp obj.options[obj.selectedIndex].value.split('|');
    var 
prefix '';
    if(
obj.id=='scdate'){
        
prefix 'c';
    }
    $(
'#'+prefix+'date1').attr('value'tmp[0]);
    $(
'#'+prefix+'date2').attr('value'tmp[1]);
}

function 
getDigitalGoods(i){
    if(
digital_goods[i][0] == 1)
        
location.href digital_goods[i][2];
    else if(
digital_goods[i][0] == 2)
        new 
_uWnd('getDigitalGoods'+i,digital_goods[i][1],350,60,{autosize:1,closeonesc:1,align:'center',icon:'/.s/img/icon/fm.png'},digital_goods[i][2]);

    return 
false;
}

function 
price2Basket(){
    if(
_shopLockButtons()) return false;
    
_uPostForm('shop-price-form',{type:'POST',url:'/shop/basket'});
    $(
'input.pinput').attr('disabled','disabled');
    return 
false;
}

function 
hideGoods(idssidpref){
    if(
_shopLockButtons()) return false;
    $(
'#'+pref+'-hib'+id).attr('src''/.s/img/fr/EmnAjax.gif');
    
_uPostForm('',{type:'POST',url:'/shop/' id '/edit',data:{'mode':'edit''method':'hide''id':id'pref':pref'ssid':ssid}});
    return 
false;
}

function 
deleteGoods(idssidpref){
    if(
_shopLockButtons()) return false;
    $(
'#'+pref+'-dib'+id).attr('src''/.s/img/fr/EmnAjax.gif');
    
_uPostForm('',{type:'POST',url:'/shop/' id '/edit',data:{'mode':'edit''method':'delete''id':id'pref':pref'ssid':ssid}});
    return 
false;
}

function 
shopCatBlocks(objcnamec1c2){
    var 
id = -1;
    var 
ti 0;
    var 
hb = $('.cat-blocks ul:visible');
    if(
hb.length){
        
ti = $(hb).prev().attr('id').split('blocks-rt-')[1];
    }
    if(
obj !== undefined){
        
id = $(obj).attr('id').split('blocks-rt-')[1];
        
//скрываем отображенный блок подкатегорий
        
if(hb.length){
            $(
hb).animate({height:'hide'}, 200).prev().addClass(c1).removeClass(c2);
        }
        
//показываем, если скрыт нужный блок подкатегорий
        
if(ti != id ){
            $(
'#blocks-ch-'+id).animate({height:'show'}, 200);
            $(
'#blocks-rt-'+id).removeClass(c1).addClass(c2);
        }
    }

    var 
page parseInt($('#cid-p-0').val());
    var 
cval '0=1|'+page;
    $(
'.cid-p').each(function(){
        var 
el_id = $(this).attr('id').replace('cid-p-''')
        
page = $(this).val();

        if((
el_id == id && ti != id) || (obj == undefined && el_id == ti)){
            
cval += ','+el_id+'=1|'+page;
        }else{
            if(
page 1){
                
cval += ','+el_id+'=0|'+page;
            }
        }
    });

    
uSetCookie(cnamecval3600*24*30'/');
}

function 
shopCatExpand(objcname){
    $(
obj).toggleClass('plus').toggleClass('minus').parent().children('ul').toggle();
    return 
_shopTreeStore(cname);
}

function 
categoryFilter(fv){

    if(
_shopLockButtons()) return false;
    
_shopFadeControl('goods_cont');
    
_uPostForm('',{type:'POST',url:location.href,data:{'mode':'filter''field':f'value':shop_filter_vals[v]}});
    return 
false;
}

function 
categorySort(columorder){

    if(
_shopLockButtons()) return false;
    
_shopFadeControl('goods_cont');
    
_uPostForm('',{type:'POST',url:location.href,data:{'mode':'sort''sort':colum'order':order}});
    return 
false;
}

function 
categoryGoodsStatus(pathstatus){
    if(
_shopLockButtons()) return false;
       if(
status){
        
status ';filterstatus='+status;
    }else{
        
status '';
    }

    
document.location path+status;

    return 
false;
}

function 
_shopTreeStore(cname){
    var 
cval '0=0|';
    var 
p0 = $('#cid-p-0');
    if(
p0.length 0){
        
cval += $('#cid-p-0').val();
    }else{
        
cval += '1';
    }
    $(
'li ul.cat-tree:visible').each(function(){
        var 
cat_id = $(this).parent().attr('id').split('cid-')[1];
        var 
page = $(this).parent().find('#cid-p-'+cat_id).val();
        
cval += ',' cat_id '=1|'+page;
    });

    
uSetCookie(cnamecval3600*24*30'/');

    return 
false;
}

var 
lock_categories 0;
/*
получение набора категорий
pid - id родительской категории, для которой нужно получить набор
cname - кука с которой нужно взять список раскрытых категорий
el_id - id элемента в DOM-дереве, после которого нужно вставить полученный набор
el_more - елемент ссылка "Показать еще"
*/
function shopCatShowMore(pidssidcnameel_idel_moresh_g){
    if(
lock_categories == 1){
        return 
false;
    }

    
lock_categories 1;

    var 
pageEl = $('#cid-p-'+pid);
    
pageEl.val(parseInt(pageEl.val())+1);

    if(
el_id.search(/blocks-rt-/) != -|| el_id.search(/blocks-ch-/) != -1){
        
shopCatBlocks(undefinedcname'''');
    }else{
        
_shopTreeStore(cname);
    }

    
el_more.html($('<div class="myWinLoad" style="margin:5px; height: 31px !important;"></div>'));

    
_uPostForm(
        
'',
        {
            
type:'POST',
            
url:'/shop/catalog',
            
data:{
                
cat_pidpid,
                
el_idel_id,
                
mode'cat_subblock',
                
cnamecname,
                
sh_gsh_g,
                
ssidssid
            
}
        }
    );

    $(
el_more).addClass('need_remove');
}

var 
lock_cats_catalog 0;
function 
shopCatsCatalogShowMore(columschildsshow_goods_countparentssidel_more) {
    if (
lock_cats_catalog == 1) {
        return 
false;
    }

    
lock_cats_catalog 1;

    var 
pageEl = $('#cats_catalog_cid-p-0');
    
pageEl.val(parseInt(pageEl.val()) + 1);

    
el_more.html($('<div class="myWinLoad" style="margin:5px; height: 31px !important;"></div>'));

    
_uPostForm(
        
'',
        {
            
type'POST',
            
url'/shop/catalog',
            
data: {
                
columscolums,
                
childschilds,
                
show_goods_countshow_goods_count,
                
parentparent,
                
pagepageEl.val(),
                
mode'cats_catalog_subblock',
                
ssidssid
            
}
        }
    );

    $(
"#show_cats_more_block").parent().addClass('show_cats_more_block_need_remove');
}

var 
lock_buttons 0;
function 
_shopLockButtons(){

    if(
lock_buttons) return true;

    
lock_buttons 1;

    return 
false;
}

function 
_dynform(valuesurl){

    if(
url==undefinedurl '';

    var 
fd '';
    for(
i in values){
        
fd += '<input type="hidden" name="'+i+'" value="'+values[i]+'">';
    }
    var 
obj = $('#dyn-post');
    if(
obj.length){
        $(
obj).html(fd).attr('action'url);

    }else{
        $(
'body').append('<form id="dyn-post" action="'+url+'" method="post">'+fd+'</form>');
    }
}

function 
uSetCookie (name,value,expir,path,domain,secure) {
    var 
today = new Date();
    var 
expires = new Date();
    
expires.setTime(today.getTime() + 1000*expir);

    
document.cookie name "=" escape (value) +
    ((
expires) ? "; expires=" expires.toGMTString() : "") +
    ((
path) ? "; path=" path "/") +
    ((
domain) ? "; domain=" domain "") +
    ((
secure) ? "; secure" "");
}

function 
editOrderFieldCancel(oidfidvalue) {
    $(
'.'+oid+'-field-value-'+fid+'-wrapper').html(value);
    
lock_buttons=0;
    
curr_send false;
}
        
function 
editOrderField(oidfield_idfield_namefield_typefield_values_listfield_valueupdate) {
    for(
key in _uWnd.all){
        if(
_uWnd.all[key] != null && _uWnd.all[key].name.search(/inv_wnd_(.+)/)!=-1inv_wnd_opened true;
    }
    if(
inv_wnd_opened && update!='popup') return;
    if(
_shopLockButtons() || curr_send) return;
    var 
inv_wnd_opened false;
    
    
curr_send oid+'_'+field_id;
    switch(
field_type) {
        case 
'phone':
        case 
'email':
        case 
'text':
        case 
'textarea':
        case 
'promo':
        case 
'gmaps':
            new 
_uWnd(
                
'wnd_'+field_id,
                
field_name,
                
550,
                
350,
                {
                    
autosize:1,
                    
resize:0,
                    
modal:0,
                    
closeonesc:1,
                    
icon:html_url+'/img/icon/pent.png',
                    
onclose:function(){lock_buttons=0curr_send=false;}
                },
                {
                    
url:'/shop/checkout',
                    
type:'POST',
                    
data:{
                        
'id':oid,
                        
'mode':'inv_chfld',
                        
'fid':field_id,
                        
'ftype':field_type,
                        
'fval':field_value,
                        
'ssid':ssid,
                        
'update':update
                    
},
                    
cache:1
                
}
            );
            break;
        case 
'checkbox':
            
editOrderFieldSend(oidfield_id''update)
            break;
        case 
'radio':
        case 
'select':
            
_uPostForm('', {url:'/shop/checkout'type:'POST'data:{mode:'inv_chfld'id:oidfid:field_idftype:field_typeupdate:updatessid:ssid}});
            var 
load_img '/img/icon/ajsml.gif';
            if(
update == 'order'load_img '/img/ma/m/i3.gif';
            $(
'.'+oid+'-field-value-'+field_id+'-wrapper').attr('old_val', $('.'+oid+'-field-value-'+field_id+'-wrapper').html()).html('<img alt="" id="inote-'+oid+'-wait" src="'+html_url+load_img+'">');
            break;
        default:
            
//console.log("DEFAULT IN AJAX");
            
curr_send false;
            
lock_buttons 0;
            break;
    };
    return 
false;
};
        
function 
editOrderFieldSend(idfield_idfield_valueupdate) {
    if(
curr_send != id+'_'+field_id){
        
//_uButtonEn('inote-form-'+id,1);
    
}else{
        var 
formid = (field_value !== undefined '' 'order-field-'+field_id);
        if(
update == 'order')
            $(
'.'+id+'-field-value-'+field_id+'-wrapper').hide().after('<img alt="" id="inote-'+id+'-wait" src="'+html_url+'/img/ma/m/i3.gif">');
        else
            $(
'.'+id+'-field-value-'+field_id+'-wrapper').hide().after('<img alt="" id="inote-'+id+'-wait" src="'+html_url+'/img/icon/ajsml.gif">');

        
field_value = (field_value field_value document.getElementById('fval').value);

        
_uPostForm(formid,{type:'POST',url:'/shop/checkout',data:{id:idfid:field_idfval:field_value,mode:'inv_chfld_save',ssid:ssid,update:update}});
        
_uWnd.close('wnd_'+field_id);
        
curr_send false;
    }
    return 
false;
}

// Maps
function create_map(idtypelatlngz){
    if(
type == undefined || type == '' || type == null){
        
plog('Type of maps undefined''MAPS');
        return 
false;
    };
    $(
'#'+id+'-canvas').attr('style''height:450px;overflow:hidden;').next('div').removeAttr('style');
    switch(
type){
        case 
'gmap'create_gmap(idlatlngz);break;
        case 
'ymap'create_ymap(idlatlngz);break;
    }
    return 
1;
}

function 
create_gmap(idlatlngz){
    
plog('GMAP START''MAPS');
    
    var 
myOptions = {
       
zoomparseInt(z),
       
mapTypeIdgoogle.maps.MapTypeId.ROADMAP
    
};
    
gmaps[id].map = new google.maps.Map(document.getElementById(id+'-canvas'), myOptions);
    
    
    if(
gmaps[id].options == undefinedgmaps[id].options = {};
    if(
gmaps[id].options.is_editable == undefinedgmaps[id].options.is_editable false;
    if(
gmaps[id].options.placemarks == undefined){
        
gmaps[id].latlng = new google.maps.LatLng(latlng);
        
gmaps[id].placemark = new google.maps.Marker({
            
positiongmaps[id].latlng
            
mapgmaps[id].map
            
draggablegmaps[id].options.is_editable true false
        
});
        
gmaps[id].map.setCenter(gmaps[id].latlng);
        
gmaps[id].placemark.inner_id id;
        if(
gmaps[id].options.is_editable) {
            
google.maps.event.addListener(gmaps[id].placemark'dragstart', function() {
                if(
gmaps[this.inner_id].placemark_info != undefined)
                
gmaps[this.inner_id].placemark_info.close();
            });
            
google.maps.event.addListener(gmaps[id].placemark'dragend', function() {
                
gmap_set_data(this.inner_id);
                
gmap_get_address(this.inner_id);
            });
        }
        
gmap_get_address(id);
        
google.maps.event.addListener(gmaps[id].placemark'click', function() {
            
gmaps[this.inner_id].placemark_info = new google.maps.InfoWindow({content:$('#'+this.inner_id+'-addr').val()});
            
gmaps[this.inner_id].placemark_info.open(gmaps[this.inner_id].mapgmaps[this.inner_id].placemark);
        });
        
    }else{
        
gmaps[id].placemarks = {};
        
gmaps[id].geopoints = [];
        
gmaps[id].bounds = new google.maps.LatLngBounds();
        for(
key in gmaps[id].options.placemarks){
            var 
point = new google.maps.LatLng(gmaps[id].options.placemarks[key].latgmaps[id].options.placemarks[key].lng);
            
gmaps[id].bounds.extend(point);
            
gmaps[id].geopoints.push(point);
            
gmaps[id].placemarks[key] = new google.maps.Marker({
                
positionpoint
                
mapgmaps[id].map
            
});
            
gmaps[id].placemarks[key].inner_key key;
            
gmaps[id].placemarks[key].inner_id id;
            
google.maps.event.addListener(gmaps[id].placemarks[key], 'click', function() {
                
gmaps[this.inner_id].placemarks[this.inner_key].description = new google.maps.InfoWindow({content:gmaps[this.inner_id].options.placemarks[this.inner_key].balloon});
                
gmaps[this.inner_id].placemarks[this.inner_key].description.open(gmaps[this.inner_id].mapgmaps[this.inner_id].placemarks[this.inner_key]);
            });
        };
        
gmaps[id].rect = new google.maps.Rectangle({
            
map:gmaps[id].map,
            
bounds:gmaps[id].bounds,
            
strokeColor"#FF0000",
            
strokeOpacity0.8,
            
strokeWeight3,
            
fillColor"#FF0000",
            
fillOpacity0.35
        
});
        
//gmaps[id].map.setCenter(gmaps[id].bounds.getCenter());
        
gmaps[id].map.fitBounds(gmaps[id].bounds);
        
    }
}

function 
gmap_set_data(id) {
    $(
'#'+id+'-lat').val(gmaps[id].placemark.getPosition().lat());
    $(
'#'+id+'-lng').val(gmaps[id].placemark.getPosition().lng());
}

function 
gmap_get_address(id) {
    var 
geocoder = new google.maps.Geocoder();
    var 
latlng gmaps[id].placemark.getPosition();
    
geocoder.geocode({'latLng'latlng}, function (resultsstatus) {
        if (
status != google.maps.GeocoderStatus.OK && (results[1] == undefined || results[1] == null)) {
            
_uWnd.alert("Error while geolocating. Status Code:" status);
        } else {
            
gmaps[id].map_addr results[1].formatted_address;
            $(
'#'+id+'-addr').val(results[1].formatted_address).trigger('onchange');;
        }
    });
}

function 
create_ymap(idlatlngz){
    
plog('YANDEXMAP START''MAPS');
    
YMaps.jQuery(function () {
        
ymaps[id].map = new YMaps.Map(YMaps.jQuery("#"+id+"-canvas")[0]);
        
ymaps[id].map.enableScrollZoom();
        
ymaps[id].map.addControl(new YMaps.TypeControl());
        
ymaps[id].map.addControl(new YMaps.ToolBar());
        
ymaps[id].map.addControl(new YMaps.Zoom());
        
ymaps[id].map.addControl(new YMaps.MiniMap());
        
ymaps[id].map.addControl(new YMaps.ScaleLine());
        if(
ymaps[id].options == undefinedymaps[id].options = {};
        if(
ymaps[id].options.is_editable == undefinedymaps[id].options.is_editable false;
        if(
ymaps[id].options.placemarks == undefined){
            
ymaps[id].geopoint = new YMaps.GeoPoint(lnglat);
            
ymaps[id].map.setCenter(ymaps[id].geopointz);
            
ymaps[id].placemark = new YMaps.Placemark(ymaps[id].geopoint, {draggableymaps[id].options.is_editable});
            if(
ymaps[id].options.is_editable){
                
YMaps.Events.observe(
                    
ymaps[id].placemark,
                    
ymaps[id].placemark.Events.DragEnd,
                    function (
placemark) {
                        
ymap_get_adress(id);
                        
ymap_set_data(id);
                    }
                );
            }
            
ymap_get_adress(id);
            
ymaps[id].map.addOverlay(ymaps[id].placemark);
        }else{
            
ymaps[id].placemarks = {};
            
ymaps[id].geopoints = [];
            for(
key in ymaps[id].options.placemarks){
                var 
point = new YMaps.GeoPoint(ymaps[id].options.placemarks[key].lngymaps[id].options.placemarks[key].lat);
                
ymaps[id].geopoints.push(point);
                
ymaps[id].placemarks[key] = new YMaps.Placemark(point);
                
ymaps[id].placemarks[key].description ymaps[id].options.placemarks[key].balloon;
                
ymaps[id].map.addOverlay(ymaps[id].placemarks[key]);
            };
            
bounds = new YMaps.GeoCollectionBounds(ymaps[id].geopoints);
            var 
style = new YMaps.Style();
            
style.polygonStyle = new YMaps.PolygonStyle();
            
style.polygonStyle.fill 1;
            
style.polygonStyle.outline 1;
            
style.polygonStyle.strokeWidth 10;
            
style.polygonStyle.strokeColor "ffff0088";
            
style.polygonStyle.fillColor "ff000055";
            var 
polygon = new YMaps.Polygon([bounds.getLeftTop(), bounds.getRightTop(), bounds.getRightBottom(), bounds.getLeftBottom()], {style:style});
            
ymaps[id].map.setBounds(bounds);
            
ymaps[id].map.addOverlay(polygon);
        }
        
    })
}

function 
ymap_set_data(id) {
    $(
'#'+id+'-lat').val(ymaps[id].placemark.getGeoPoint().getY()).trigger('onchange');
    $(
'#'+id+'-lng').val(ymaps[id].placemark.getGeoPoint().getX()).trigger('onchange');
}

function 
ymap_get_adress(id) {
    var 
geocoder = new YMaps.Geocoder(ymaps[id].placemark.getGeoPoint(), {results1});
    
YMaps.Events.observe(geocodergeocoder.Events.Load, function () {
        if (
this.length()) {
            
ymaps[id].placemark.setBalloonContent(this.get(0).text);
            if(
ymaps[id].options.is_editable){
                $(
'#'+id+'-addr').val(this.get(0).text).trigger('onchange');
            }
            return 
true;
        }else{
            
plog('Place not found''MAPS-GEOCODER');
            return 
false;
        }
    });
}

// ImageList

var image_list={
    
ajaxloadingmsg'<div style="background:url(/.s/img/ma/m/i3.gif) no-repeat center bottom; height:50px;" ></div>',
    
defaultbuttonsfade:0.3// fade degree for disabled nav buttons (0=completely transparent, 1=completely opaque)
    
configholder: {},

    
getCSSValue:function(val){ //Returns either 0 (if val contains 'auto') or val as an integer
        
return (val=="auto")? parseInt(val)
    },

    
getoffset:function(whatoffsettype){
        return (
what.offsetParent)? what[offsettype]+this.getoffset(what.offsetParentoffsettype) : what[offsettype]
    },

    
fadebuttons:function(configcurrentpanel){
        
config.$leftnavbutton.fadeTo('fast'currentpanel==0this.defaultbuttonsfade 1)
        
config.$rightnavbutton.fadeTo('fast'currentpanel==config.lastvisiblepanelthis.defaultbuttonsfade 1)
    },

    
addnavbuttons:function(configcurrentpanel){
        $(
'#image-lnav').remove();
        $(
'#image-rnav').remove();
        
config.$leftnavbutton=$('<img id="image-lnav" src="'+config.defaultbuttons.leftnav[0]+'">').css({zIndex:50position:'absolute'left:/* config.offsets.left+ */config.defaultbuttons.leftnav[1]+'px'top:/* config.offsets.top+ */config.defaultbuttons.leftnav[2]+'px'cursor:'hand'cursor:'pointer'}).appendTo('#image-list-cont')
        
config.$rightnavbutton=$('<img id="image-rnav" src="'+config.defaultbuttons.rightnav[0]+'">').css({zIndex:50position:'absolute'right:/* left:config.offsets.left+config.$gallery.get(0).offsetWidth+ */config.defaultbuttons.rightnav[1]+'px'top:/* config.offsets.top+ */config.defaultbuttons.rightnav[2]+'px'cursor:'hand'cursor:'pointer'}).appendTo('#image-list-cont')
        
config.$leftnavbutton.bind('click', function(){ //assign nav button event handlers
            
image_list.stepBy(config.galleryid, -config.defaultbuttons.moveby)
        })
        
config.$rightnavbutton.bind('click', function(){ //assign nav button event handlers
            
image_list.stepBy(config.galleryidconfig.defaultbuttons.moveby)
        })
        if (
config.panelbehavior.wraparound==false){ //if carousel viewer should stop at first or last panel (instead of wrap back or forth)
            
this.fadebuttons(configcurrentpanel)
        }
        return 
config.$leftnavbutton.add(config.$rightnavbutton)
    },

    
alignpanels:function(config){
        var 
paneloffset=0
        config
.paneloffsets=[paneloffset//array to store upper left offset of each panel (1st element=0)
        
config.panelwidths=[] //array to store widths of each panel
        
config.$panels.each(function(index){ //loop through panels
            
var $currentpanel=$(this)
            
$currentpanel.css({float'none'position'absolute'leftpaneloffset+'px'}) //position panel
            
$currentpanel.bind('click', function(e){return config.onpanelclick(e.target)}) //bind onpanelclick() to onclick event
            
paneloffset+=image_list.getCSSValue($currentpanel.css('marginRight')) + parseInt($currentpanel.get(0).offsetWidth || $currentpanel.css('width')) //calculate next panel offset
            
config.paneloffsets.push(paneloffset//remember this offset
            
config.panelwidths.push(paneloffset-config.paneloffsets[config.paneloffsets.length-2]) //remember panel width
        
})
        
config.paneloffsets.pop() //delete last offset (redundant)
        
var addpanelwidths=0
        
var lastpanelindex=config.$panels.length-1
        config
.lastvisiblepanel=lastpanelindex
        
for (var i=config.$panels.length-1i>=0i--){
            
addpanelwidths+=(i==lastpanelindexconfig.panelwidths[lastpanelindex] : config.paneloffsets[i+1]-config.paneloffsets[i])
            if (
config.gallerywidth>addpanelwidths){
                
config.lastvisiblepanel=//calculate index of panel that when in 1st position reveals the very last panel all at once based on gallery width
            
}
        }
        
//alert(paneloffset+' - '+config.currentpanel);
        
config.$belt.css({widthpaneloffset+'px'}) //Set Belt DIV to total panels' widths
        
config.currentpanel=(typeof config.currentpanel=="number" && config.currentpanel<config.$panels.length)? config.currentpanel 0
        
if (config.currentpanel!=0){
            var 
endpoint=config.paneloffsets[config.currentpanel]+(config.currentpanel==0config.beltoffset)
            
config.$belt.css({left: -endpoint+'px'})
        }
        if (
config.defaultbuttons.enable==true){ //if enable default back/forth nav buttons
            
var $navbuttons=this.addnavbuttons(configconfig.currentpanel)
            $(
window).bind("load resize", function(){ //refresh position of nav buttons when page loads/resizes, in case offsets weren't available document.oncontentload
                
config.offsets={left:image_list.getoffset(config.$gallery.get(0), "offsetLeft"), top:image_list.getoffset(config.$gallery.get(0), "offsetTop")}
                
config.$leftnavbutton.css({left:/* config.offsets.left+ */config.defaultbuttons.leftnav[1]+'px'top:/* config.offsets.top+ */config.defaultbuttons.leftnav[2]+'px'})
                
config.$rightnavbutton.css({right:/* left:config.offsets.left+config.$gallery.get(0).offsetWidth+ */config.defaultbuttons.rightnav[1]+'px'top:/* config.offsets.top+ */config.defaultbuttons.rightnav[2]+'px'})
            })
        }

        
this.statusreport(config.galleryid)
        
config.oninit()
        
config.onslideaction(this)
    },

    
stepTo:function(galleryidpindex){ /*User entered pindex starts at 1 for intuitiveness. Internally pindex still starts at 0 */
        
var config=image_list.configholder[galleryid]
        if (
typeof config=="undefined"){
            
alert("There's an error with your set up of Carousel Viewer ""+galleryid+ ""!")
            return
        }
        var 
pindex=Math.min(pindex-1config.paneloffsets.length-1)
        var 
endpoint=config.paneloffsets[pindex]+(pindex==0config.beltoffset)
        if (
config.panelbehavior.wraparound==false && config.defaultbuttons.enable==true){ //if carousel viewer should stop at first or last panel (instead of wrap back or forth)
            
this.fadebuttons(configpindex)
        }
        
config.$belt.animate({left: -endpoint+'px'}, config.panelbehavior.speed, function(){config.onslideaction(this)})
        
config.currentpanel=pindex
        this
.statusreport(galleryid)
    },

    
stepBy:function(galleryidsteps){ //isauto if defined indicates stepBy() is being called automatically
        
var config=image_list.configholder[galleryid]
        if (
typeof config=="undefined"){
            
alert("There's an error with your set up of Carousel Viewer ""+galleryid+ ""!")
            return
        }
        
//alert(config.currentpanel);
        
var direction=(steps>0)? 'forward' 'back' //If "steps" is negative, that means backwards
        
var pindex=config.currentpanel+steps //index of panel to stop at
        
if (config.panelbehavior.wraparound==false){ //if carousel viewer should stop at first or last panel (instead of wrap back or forth)
            
pindex=(direction=="back" && pindex<=0)? : (direction=="forward")? Math.min(pindexconfig.lastvisiblepanel) : pindex
            
if (config.defaultbuttons.enable==true){ //if default nav buttons are enabled, fade them in and out depending on if at start or end of carousel
                
image_list.fadebuttons(configpindex)
            }
        }
        else{ 
//else, for normal stepBy behavior
            
if (pindex>config.lastvisiblepanel && direction=="forward"){
                
//if destination pindex is greater than last visible panel, yet we're currently not at the end of the carousel yet
                
pindex=(config.currentpanel<config.lastvisiblepanel)? config.lastvisiblepanel 0
            
}
            else if (
pindex<&& direction=="back"){
                
//if destination pindex is less than 0, yet we're currently not at the beginning of the carousel yet
                
pindex=(config.currentpanel>0)? config.lastvisiblepanel /*wrap around left*/
            
}
        }
        var 
endpoint=config.paneloffsets[pindex]+(pindex==0config.beltoffset//left distance for Belt DIV to travel to
        
if (pindex==&& direction=='forward' || config.currentpanel==&& direction=='back' && config.panelbehavior.wraparound==true){ //decide whether to apply "push pull" effect
            
config.$belt.animate({left: -config.paneloffsets[config.currentpanel]-(direction=='forward'100 : -30)+'px'}, 'normal', function(){
                
config.$belt.animate({left: -endpoint+'px'}, config.panelbehavior.speed, function(){config.onslideaction(this)})
            })
        }
        else
            
config.$belt.animate({left: -endpoint+'px'}, config.panelbehavior.speed, function(){config.onslideaction(this)})
        
config.currentpanel=pindex
        this
.statusreport(galleryid)
    },

    
statusreport:function(galleryid){
        var 
config=image_list.configholder[galleryid]
        var 
startpoint=config.currentpanel //index of first visible panel
        
var visiblewidth=0
        
for (var endpoint=startpointendpoint<config.paneloffsets.lengthendpoint++){ //index (endpoint) of last visible panel
            
visiblewidth+=config.panelwidths[endpoint]
            if (
visiblewidth>config.gallerywidth){
                break
            }
        }
        
startpoint+=//format startpoint for user friendiness
        
endpoint=(endpoint+1==startpoint)? startpoint endpoint //If only one image visible on the screen and partially hidden, set endpoint to startpoint
        
var valuearray=[startpointendpointconfig.panelwidths.length]
        for (var 
i=0i<config.statusvars.lengthi++){
            
window[config.statusvars[i]]=valuearray[i//Define variable (with user specified name) and set to one of the status values
            
config.$statusobjs[i].text(valuearray[i]+" "//Populate element on page with ID="user specified name" with one of the status values
        
}
    },

    
setup:function(config){
        
//Disable Step Gallery scrollbars ASAP dynamically (enabled for sake of users with JS disabled)
        
document.write('<style type="text/css">n#'+config.galleryid+'{overflow: hidden;}n</style>')
        
jQuery(document).ready(function($){
            
config.$gallery=$('#'+config.galleryid)
            
config.gallerywidth=config.$gallery.width()
            
config.offsets={left:image_list.getoffset(config.$gallery.get(0), "offsetLeft"), top:image_list.getoffset(config.$gallery.get(0), "offsetTop")}
            
config.$belt=config.$gallery.find('.'+config.beltclass//Find Belt DIV that contains all the panels
            
config.$panels=config.$gallery.find('.'+config.panelclass//Find Panel DIVs that each contain a slide
            
config.panelbehavior.wraparound=config.panelbehavior.wraparound //if auto step enabled, set "wraparound" to true
            
config.onpanelclick=(typeof config.onpanelclick=="undefined")? function(target){} : config.onpanelclick //attach custom "onpanelclick" event handler
            
config.onslideaction=(typeof config.onslide=="undefined")? function(){} : function(beltobj){$(beltobj).stop(); config.onslide()} //attach custom "onslide" event handler
            
config.oninit=(typeof config.oninit=="undefined")? function(){} : config.oninit //attach custom "oninit" event handler
            
config.beltoffset=image_list.getCSSValue(config.$belt.css('marginLeft')) //Find length of Belt DIV's left margin
            
config.statusvars=config.statusvars || []  //get variable names that will hold "start", "end", and "total" slides info
            
config.$statusobjs=[$('#'+config.statusvars[0]), $('#'+config.statusvars[1]), $('#'+config.statusvars[2])]
            
config.currentpanel=0
            image_list
.configholder[config.galleryid]=config //store config parameter as a variable
            
image_list.alignpanels(config//align panels and initialize gallery
        
}) //end document.ready
        
jQuery(window).bind('unload', function(){ //clean up
            
jQuery.each(config, function(aioi){
                
oi=null
            
})
            
config=null
        
})
    }
}

///////////////////////////////////////////////////////////////////////////////////////////////////

function plog(msgmodule){
    
//if(console != undefined) console.log((module == undefined ? '' : module+' - ')+msg);
    
return;
}

function 
checkPromo(id){
    $(
'#res'+id).show();

    var 
formData formToObj(document.forms["checkout-form"]);
    
formData['mode'] = 'apply-promo';
    
formData['code'] = $('[name=fld'+id+']').val();
    
formData['fid'] = id;
    
delete formData['fld'+id];

    
//_uPostForm('', {type: 'POST', url: location.href, data:{'mode': 'apply-promo', 'code': $('[name=fld'+id+']').val(), 'fid': id, 'ssid':$('input[name=ssid]').val()}});
    
_uPostForm('', {type'POST'urllocation.hrefdata:formData});
}

/*
* Вывод информационных сообщения пользователям.
* Данная функция принимает следующий набор параметров:
*  wnd_msgs - сообщение, которое будет выведено пользователю. Сообщение может содержать HTML-теги форматирования.
*  wnd_title - заголовок окна сообщения, отображающегося в шапке.
*  wnd_type - тип сообщения. Может быть: «error» - ошибка, «warning» - предупреждение, «info» - информационное сообщение. Если тип не указан или указан тип, отличный от перечисленных, то считается, что сообщение общее, а не какого-то типа.
*  wnd_w - ширина окна.
*  wnd_h - высота окна.
*  wnd_opt - дополнительные параметры окна сообщения. Полный список параметров аналогичен списку параметров, принимаемых _uWnd() (http://helper.ucoz.ru/publ/coding/ujs/2-1-0-4).
*  wnd_name - уникальное имя окна. Нигде не отображается. Используется для дальнейшей работы с информационным окном с помощью функций _uWnd.
* */
function shop_alert(wnd_msgswnd_titlewnd_typewnd_wwnd_hwnd_optwnd_name){
    var 
wnd_content '';

    if(
wnd_type == 'error'){
        
wnd_content += '<div id="shop_wnd_error"></div><div id="shop_wnd_text">';
    }else{
        if(
wnd_type == 'warning'){
            
wnd_content += '<div id="shop_wnd_warning"></div><div id="shop_wnd_text">';
        }else{
            if(
wnd_type == 'info'){
                
wnd_content += '<div id="shop_wnd_info"></div><div id="shop_wnd_text">';
            }else{
                
wnd_content += '<div>';
            }
        }
    }

    if(
typeof wnd_name != 'string' || wnd_name == ''){
        
wnd_name 'shop_alert_window';
    }

    if(
typeof wnd_msgs == 'string'){
        
wnd_content += wnd_msgs;
    }else{
        if(
typeof wnd_msgs == 'object'){
            
wnd_content += '<ul>';
            for(
msg in wnd_msgs) {
                
wnd_content += '<li>'+wnd_msgs[msg]+'</li>';
            }
            
wnd_content += '</ul>';
        }else{
            return;
        }
    }

    
wnd_content += '</div>';

    
wnd_opt = $.extend({
        
align'left',          //выравнивание
        
shadow1,              //тень
        
header1,              //отображать ли шапку
        
close1,               //отображать ли кнопку Close (закрыть).
        
modal1,               //модальное окно
        
popup1,               //закрывать ли окно при клике на пространстве вне окна.
        
resize0,              //разрешить изменение размеров окна пользователем
        
fixed0,               //разрешить изменение размеров окна пользователем
        
closeonesc1,          //разрешить изменение размеров окна пользователем
        
close1,
        
icon'',
        
tm0,
        
align'left'
    
}, wnd_opt || {});

    var 
= new _uWnd(
        
wnd_name,
        
wnd_title,
        
wnd_w,
        
wnd_h,
        
wnd_opt,
        
wnd_content
    
);

    if (
wnd_opt.tm 0) {
        
setTimeout("var w=_uWnd.all[" l.idx "];if(w)w.close();"wnd_opt.tm);
    }

    return 
l;
}

function 
formToObj(form) {
    var 
els form form.elements ''map = {}, el0;
    while (
el els[i++]){
        if (
el.name != '' && !el.disabled){    // Элементы без имени и disabled не successful-controls
            
switch (el.type.toLowerCase()) {
                case 
'checkbox':
                case 
'radio':                       // Только выбранные (checked) checkbox'ы и
                    
if (el.checked)               // radio-элементы считаются successful-controls
                        
map[el.name] = el.value;
                    break;
                case 
'select-multiple':
                    var 
opt el.optionslst = [], 0o;
                    while (
opt[j++])
                        if (
o.selected)                         // Только выбранные (selected) опции (options)
                            
lst[lst.length] = o.value || o.text;  // считаются successful-controls
                    
if (lst.length)                             // Добавляем масссив значений опции если он не пустой
                        
map[el.name] = lst;
                    break;
                case 
'select-one':                                // select-one добавляем скаляром (не в масссив)
                    
if (!el.value) break;
                default:
                    
map[el.name] = el.value;
                case 
'reset':                                     // reset не отправляется даже если имеет name
                    
break;
            }
        }
    }

    return 
map;
}

function 
priceFilter(fv){
    if(
_shopLockButtons()) return false;
    
_shopFadeControl('goods_cont');
    
_uPostForm('',{type:'POST',url:location.href,data:{'mode':'filter''field':f'value':v}});
    return 
false;
}
?>
Онлайн: 1
Реклама