if($chk(window.Shop)) {


Shop.implement({
    selectorFunctions : {
        gotourl : {
            selector : '.gotourl',
            domready : function(el) {
                el.removeEvents('change').addEvent('change', function(e) {
                    new Event(e).stop();
                    if(this.value.length)
                        window.location.href = this.value;
                });
            }
        },

        bottest : {
            selector : '.bottest',
            domready : function(el) {
                el.destroy();
            }
        },

        clickhide : {
            selector : '.clickhide',
            domready : function(el) {
                el.removeEvents('click').addEvent('click', function(e) {
                    $(this).fade(0);
                });
            }
        },

        titlealert : {
            selector : '.titlealert',
            domready : function(el) {
                el.removeEvents('click').addEvent('click', function(e) {
                    new Event(e).stop();
                    this.blur();
                    alert(this.get('title'));
                });
            }
        },

        titlequestion : {
            selector : '.titlequestion',
            domready : function(el) {
                el.removeEvents('click').addEvent('click', function(e) {
                    new Event(e).stop();
                    this.blur();
                    if(confirm(this.get('title')))
                        window.location.href = this.get('href');
                });
            }
        },

        nojs : {
            selector : 'input[name=nojs]',
            domready : function(el) {
                el.set('value', 0);
            }
        },

        box_producers_select : {
            selector : '#box_producers_select',
            domready : function(el) {
                var href = window.location.pathname;
                if(el.getElements('option').get('value').contains(href))
                    el.set('value', href);
            }
        },

        resetsubmit : {
            selector : 'button.resetsubmit',
            domready : function(el) {
                if($chk(el.form)) {
                    el.removeEvents('click').addEvent('click', function(e) {
                        new Event(e).stop();
                        var f = $(this.form);
                        f.getElements('input[type=text]').each(function(el) { el.set('value', ''); });
                        f.getElements('input[type=checkbox]').each(function(el) { el.checked = false; });
                        f.getElements('select').each(function(el) { el.selectedIndex = 0; });
                        new Element('input', {
                            'type' : 'hidden',
                            'name' : 'reset',
                            'value' : 1
                        }).inject(f);
                        f.submit();
                    });
                }
            }
        },

        reset : {
            selector : 'button.reset',
            domready : function(el) {
                if($chk(el.form)) {
                    el.addEvent('click', function(e) {
                        new Event(e).stop();
                        var f = $(this.form);
                        f.getElements('input[type=text]').each(function(el) { el.set('value', ''); });
                        f.getElements('input[type=checkbox]').each(function(el) { el.checked = false; });
                        f.getElements('select').each(function(el) { el.selectedIndex = 0; });
                    });
                }
            }
        },

        flashmessageclose : {
            selector : '.flash_message a.close',
            domready : function(el) {
                el.addEvent('click', function(e) {
                    new Event(e).stop();
                    $(this).getParent().destroy();
                });
                el.setStyle('display', 'block');
            }
        },

        popupsmall : {
            selector : '.popupsmall',
            domready : function(el) {
                el.removeEvents('click').addEvent('click', function(e) {
                    new Event(e).stop();
                    $(this).blur();
                    window.open('/redirect.php?url='+escape(this.href), '', 'width=830,height=500,directories=no,location=no,menubar=no,resizable=yes,scrollbars=yes,status=no,toolbar=no');
                });
            },
            addelement : 'domready'
        },

        popup : {
            selector : '.popup',
            domready : function(el) {
                el.removeEvents('click').addEvent('click', function(e) {
                    new Event(e).stop();
                    $(this).blur();
                    window.open(this.href);
                });
            },
            addelement : 'domready'
        },

        basketsubmit : {
            selector : '#box_productfull form.basket',
            domready : function(el) {
                el.removeEvents('submit').addEvent('submit', function(e) {
                    new Event(e).stop();
                    var sid = $(this).getElements('input[name^=stock_id]').get('value').join('').toInt();
                    if(sid > 0)
                        $(this).submit();
                    else
                        alert(this.Shop.get('lang.common.product_select_stock'));
                });
                el.Shop = this;
            }
        },

        boxslider : {
            selector : '.box.slider',
            domready : function(slider) {
                var podlist = slider.getElements('.product');
                if(podlist.length > 1) {
                    slider.getElements('hr').setStyle('display', 'none');
                    podlist.setStyle('display', 'none');
                    podlist[0].setStyles({
                        display : 'block',
                        vibility : 'hidden'
                    });
                }
            },
            load : function(el) {
                if(el.getElements('.product').length < 2) return;

                el.getElements('hr').destroy();
                var innerbox = el.getElement('.innerbox');
                if(!$chk(innerbox)) return;

                var outterdiv = new Element('div', {
                    styles : {
                        overflow : 'hidden',
                        position : 'relative'
                    }
                }).inject(innerbox);

                var innerdiv = new Element('div').inject(outterdiv);
                var outter_size = outterdiv.getSize();
                var width = 0;
                var scroll_step = outter_size.x;

                el.getElements('.product')
                    .setStyle('display', 'block')
                    .inject(innerdiv)
                    .setStyle('width', outter_size.x + 'px')
                    .each(function(div) {
                    width += outter_size.x;
                });

                outterdiv.setStyle('width', outter_size.x + 'px');
                innerdiv.setStyle('width', width + 'px');
                innerdiv.getChildren('.product').setStyle('float', 'left');

                outter_size = outterdiv.getSize();
                outterdiv.setStyle('height', outter_size.y + 'px');
                innerdiv.setStyles({
                    height : outter_size.y + 'px',
                    position : 'absolute',
                    left : '0px',
                    top : '0px'
                });

                var left = new Element('img', {
                    src : this.url('public/images/1px.gif'),
                    'class' : 'arrow_left'
                }).inject(outterdiv);

                var right = new Element('img', {
                    src : this.url('public/images/1px.gif'),
                    'class' : 'arrow_right'
                }).inject(outterdiv);

                left._outter = right._outter = outterdiv;
                outterdiv._scroll_step = scroll_step;
                outterdiv._left = left;
                outterdiv._right = right;
                outterdiv._n = 0;
                outterdiv._max = innerdiv.getChildren('.product').length - 1;
                outterdiv._inner = innerdiv;
                outterdiv._fx = new Fx.Tween(innerdiv, {
                    duration: 200,
                    transition : 'linear'
                });


                left.fade('hide');
                right.fade('hide');
                outterdiv.addEvent('mouseenter', function(e) {
                    if(this._n > 0)
                        outterdiv._left.fade('in');
                    if(this._n < this._max)
                        outterdiv._right.fade('in');
                });

                outterdiv.fireEvent('mouseenter');

                if($chk(Shop.useroptions.slider) && true == Shop.useroptions.slider.fadearrows) {
                    outterdiv.addEvent('mouseleave', function(e) {
                        outterdiv._left.fade('out');
                        outterdiv._right.fade('out');
                    });
                }

                outterdiv.scrollToLeft = function() {
                    if(this._n > 0) {
                        this._n--;
                        this._fx.start('left', -1 * this._n * this._scroll_step + 'px');

                        this._right.fade('in');
                        if(0 == this._n)
                            this._left.fade('out');
                    }
                };

                outterdiv.scrollToRight = function() {
                    if(this._n < this._max) {
                        this._n++;
                        this._fx.start('left', -1 * this._n * this._scroll_step + 'px');

                        this._left.fade('in');
                        if(this._max == this._n)
                            this._right.fade('out');
                    }
                };

                left.addEvent('click', function(e) {
                    new Event(e).stop();
                    this._outter.scrollToLeft();
                });

                right.addEvent('click', function(e) {
                    new Event(e).stop();
                    this._outter.scrollToRight();
                });

                lh = left.getSize().y;
                if(lh < 1) lh = 10;
                rh = right.getSize().y;
                if(rh < 1) rh = 10;

                left.setStyle('top', Math.ceil( ( outter_size.y - lh ) / 2 ) + 'px');
                right.setStyle('top', Math.ceil( ( outter_size.y - rh ) / 2 ) + 'px');
            }
        },

        comment : {
            selector : '#box_productcomments',
            domready : function(el) {
                if($chk(el) && 0 == $$('#box_productcomments ul.input_error').length) {
                    $$('#box_productcomments form.comment').addClass('none');
                    if(0 == $$('#box_productcomments h5').length)
                        $('box_productcomments').addClass('none');
                }
            }
        },

        addcomment : {
            selector : '#box_productfull .additionalinfo .addcomment',
            domready : function(el) {
                el.addEvent('click', function(e) {
                    new Event(e).stop();
                    $$('#box_productcomments form.comment').removeClass('none');
                    $('box_productcomments').removeClass('none');
                    if($chk($('commentform'))) new Fx.Scroll(window).toElement($('commentform'));
                });
            }
        },

        productimg : {
            selector : 'img.productimg',
            load : function(img) {
                if(img.get('class').match(/gallery_[0-9]+/)) {
                    img.addEvent('click', function(e) {
                        new Event(e).stop();
                        var id = $(this).get('class').replace(/.*gallery_([0-9]+).*/, 'prodimg$1');
                        if(id.match(/^prodimg[0-9]+$/) && $(id)) {
                            var f = new Event(e);
                            f.target = $(id);
                            $(id).fireEvent('click', f);
                        }
                    }).setStyle('cursor', 'pointer');
                }
            }
        },

        minigalleryhover : {
            selector : '#box_productfull table.maininfo td.productimg div.smallgallery li img',
            load : function(el) {
                el.addEvent('mouseenter', function(e) {
                    var img = $$('#box_productfull table.maininfo td.productimg div.mainimg img.productimg').pop();
                    if(!$chk(img)) return;

                    var oid = img.get('class').replace(/.*gallery_([0-9]+).*/, '$1');
                    var olink = $('prodimg' + oid);
                    var nid = this.getParent().get('id').replace(/prodimg/, '');
                    var nlink = this.getParent();
                    if(oid == nid || !$chk(olink)) return;

                    olink.getParent().getParent().getElements('a.gallery').removeClass('current');
                    nlink.addClass('current');
                    img.removeClass('gallery_' + oid).addClass('gallery_' + nid);
                    img.set('src', this.get('alt'));
                    new Asset.image( nlink.get('href') );

                    if(img.hasClass('innerzoom') || img.hasClass('outerzoom')) {
                        img._zoomimage.destroy();
                        Shop.imageZoom.options = {
                            img: img,
                            inner: img.hasClass('innerzoom')
                        };
                        el.Shop.subclass('imageZoom');
                    }
                });
                el.Shop = this;
                var img = el.get('alt');
                if($chk(img) && img.length > 0)
                    new Asset.image( img );
            }
        },

        foldenbox : {
            selector : '#box_productsearch.folden',
            domready : function(el) {
                var FoldenBox = new Class({

                    box : false,
                    arrow : false,
                    folden : false,
                    innerbox : false,

                    initialize : function(box) {
                        this.box = $(box);

                        this.arrow = new Element('span', {
                            'class' : 'foldenbox_arrow',
                            html : '&#x25bc;'
                        }).inject( this.box.getElements('.boxhead').pop() );

                        this.arrow._class = this;

                        this.arrow.addEvent('click', function(e) {
                            new Event(e).stop();
                            var x = this._class.innerbox.getStyle('height').toInt();
                            if(0 === x) {
                                this._class.innerbox._fx.start('height', this._class.innerbox._height);
                                this.set('html', '&#x25b2');
                            } else {
                                this._class.innerbox._fx.start('height', 0);
                                this.set('html', '&#x25bc');
                            }
                        });

                        this.innerbox = this.box.getElements('.innerbox').pop();

                        this.innerbox._height = this.innerbox.getSize().y;
                        this.innerbox.setStyles({
                            height : '0px',
                            overflow : 'hidden',
                            'min-height' : '0px'
                        });

                        this.innerbox._fx = new Fx.Tween(this.innerbox, {
                            duration : 333,
                            transition : 'quad:out'
                        });
                    }

                });
                new FoldenBox(el);
            }
        },

        registration : {
            selector : '#box_register input[name=address_type]',
            domready : function(el) {
                el.addEvent('change', function() {
                    var c = !!$$('#box_register input[name=address_type][value=2]').get('checked')[0];
                    var r1 = $$('#box_register input[name=coname] ! tr')[0];
                    var r2 = $$('#box_register input[name=nip] ! tr')[0];
                    if(true == c) {
                        if(r1) r1.removeClass('none');
                        if(r2) r2.removeClass('none');
                    } else {
                        if(r1) r1.addClass('none');
                        if(r2) r2.addClass('none');
                    }
                });
                if(2 == el.get('value')) {
                    el.fireEvent('change');
                }
                if(Browser.ie) {
                    el.addEvent('click', function(e) { this.blur(); this.fireEvent('change', e); });
                }
            }
        }
    },

    perBrowserFix : {
        chrome : function() {
            $$('.centercol input', '.centercol button').each(function(el) {
                if(el.get('value').length > 0 && el.get('name').match(/(mail|pass|login)/)) {
                    el.focus();
                    el.blur();
                }
            });
        },

        /* layout fixes for IE6 and IE7 browsers (assuming IEs are browsers) */
        ie67 : function() {
            $$('select').each(function(el) {
                var mw = el.getStyle('min-width');
                if(mw && mw.toInt() && mw.toInt() > el.getSize().x)
                    el.setStyle('width', mw.toInt() + 'px');
            });

            $$('.shaded_inputwrap').each(function(el) {
                var nodes = [];
                var node = el.firstChild;
                while(node) {
                    if(3 == node.nodeType)
                        nodes.push(node);
                    node = node.nextSibling;
                }
                nodes.each(function(node) {
                    node.parentNode.removeChild(node);
                });
            });

            $$('.main .floatcenterwrap .paginator').each(function(el) {
                var sizes = el.getElements('li').getSize();
                var w = 0;
                for(var x = 0; x < sizes.length; ++x)
                    w += sizes[x].x;
                el.setStyle('left', 0);
                el.getParent().setStyle('margin-left',  -w + 'px');
            });

            $$('#box_productfull table.maininfo').each(function(table) {
                var dl = table.getElement('td.availability dl');
                var basket = table.getElement('td.basket');
                if($chk(dl) && $chk(basket)) {
                    var h = table.getComputedSize().totalHeight - dl.getComputedSize().totalHeight;
                    basket.setStyle('height', h - 20 + 'px');
                }
            });
        },

        ie6 : function() {
            $$('form').each(function(el) {
                var b = el.getElements('button');
                if(b.length > 1)
                    b.addEvent('click', function(e) {
                        new Event(e).stop();
                        $(this.form).getElements('button').set('disabled', true);
                        this.set('disabled', false);
                        $(this.form).submit();
                    });
            });

            $$('img', 'li').each(function(img) {
                if(!img.getStyle('filter') && img.getStyle('background-image').match(/^url\(".*\.png"\)$/)) {
                    var url = img.getStyle('background-image').replace(/^url\("(.*\.png)"\)$/, "$1");
                    img.setStyles({
                        'background-image' : 'none',
                        filter : 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + url + '",sizingMethod="crop")'
                    });
                }
            });

            document.body.style.behavior = 'url("' + this.urls.base + 'styles/csshover3.htc")';
        },

        ie7 : function() {
            $$('#box_order dl.details dd.parcel').each(function(dd) {
                if(dd.getElements('a').length > 1) {
                    var h = dd.setStyle('height', 'auto').getComputedSize({ styles : ['padding', 'border', 'margin']}).totalHeight;
                    var dth = dd.getParent().getElement('dt.parcel').getComputedSize({ styles : ['padding', 'border', 'margin']}).totalHeight;
                    dd.setStyle('height', h - dth);
                }
            });
        }
    }
});



Shop.skinPreviewBox.condition = function() {
    return !!('string' == typeOf(Cookie.read('skinpreview')) && Cookie.read('skinpreview').length);
}

Shop.imageSlider.condition = function() {
    var div = $$('#box_productfull .productimg .smallgallery')[0];
    if($chk(div)) {
        Shop.imageSlider.options = {
            container : div,
            left_arrow_img : this.url('images/so_left.png', true),
            right_arrow_img : this.url('images/so_right.png', true)
        };
        return true;
    } else {
        return false;
    };
}

Shop.imageZoom.condition = function() {
    var img = $$('img.innerzoom')[0];
    if(!$chk(img))
        img = $$('img.outerzoom')[0];
    if($chk(img)) {
        Shop.imageZoom.options = {
            img: img,
            inner: img.hasClass('innerzoom')
        };
        return true;
    } else {
        return false;
    };
}

Shop.basketHandler.condition = function() {
    if($chk($('box_basketlist'))) {
        Shop.basketHandler.options = {
            step : 1,
            containers : {
                step1 : $$('#box_basketlist table.productlist tfoot').pop()
            },
            selectors : {
                deliveryrow : 'tr.delivery',
                paymentrow : 'tr.payment',
                deliverychangelink : 'tr.deliveryhead em.fold a',
                paymentchangelink : 'tr.paymenthead em.fold a',
                paymentheadlabel : 'tr.paymenthead td.desc em.color',
                paymentrlabel : 'td.name label',
                paymentradios : 'tr.payment input[type=radio]',
                deliveryradios : 'tr.delivery input[type=radio]',
                deliveryheadlabel : 'tr.deliveryhead td.desc em.color',
                deliveryheadvalue : 'tr.deliveryhead td.value em.color',
                deliverytrlabel : 'td.name label',
                deliverytrvalue : 'td.value',
                trradio : 'input[type=radio]',
                countrytr : 'tr.deliverycountry',
                trcountryselect : 'select'
            },
            ordersumfield : $$('#box_basketlist table.productlist tfoot tr.sum td.value').pop()
        };
        return true;
    }

    if($chk($('box_basketaddress'))) {
        Shop.basketHandler.options = {
            step : 2,
            containers : {
                step2 : $('box_basketaddress')
            },
            selectors : {
                trdifferentaddress : 'tr.different',
                differentaddress : 'input[name=different]',
                personaladdress : '#address_type1',
                companyaddress : '#address_type2',
                formcompanyname : 'input[name=coname]',
                formtaxid : 'input[name=nip]',
                formcompanyname2 : 'input[name=coname2]',
                formtaxid2 : 'input[name=nip2]',
                countryselect : 'select[name=country]',
                addresstyperadios : 'input[type=radio][name^=address_type]',
                addressselectsubmit : '*[type=submit][name^=address_submit]',
                addressselect : 'select[name^=address]',
                addressinput : '*[name={name}]'
            },
            getaddressurl : 'panel/getaddress/id/{id}'
        };
        return true;
    }

    if($chk($('box_basketsummary'))) {
        Shop.basketHandler.options = {
            step : 3
        };
        return true;
    }

    return false;
}

Shop.productVoter.condition = function() {
    var span = $$('span.votestars')[0];
    return !!($chk(span) && span.get('id'));
}

Shop.fadingText.condition = Function.from(true);

Shop.stockDownloader.condition = Function.from(true);
Shop.stockDownloader.options = {
    getstockurl : 'product/getstock/stock/{sid}/imgwidth/{imgwidth}/imgheight/{imgheight}',
    selectors : {
        stockid : '#box_productfull form.basket input[name^=stock_id]',
        productimg : '#box_productfull td.productimg img.productimg',
        ddavailability : '#box_productfull td.availability dd.availability',
        dddelivery : '#box_productfull td.availability dd.delivery',
        dtdelivery : '#box_productfull td.availability dt.delivery',
        price : '#box_productfull table.maininfo div.price',
        nettoprice : '#box_productfull table.maininfo div.nettoprice',
        addtofav : '#box_productfull .additionalinfo a.addtofav',
        basketform : '#box_productfull form.basket fieldset',
        unit : '#box_productfull form.basket span.unit',
        smallgallery : '#box_productfull .smallgallery a img'
    }
}

Shop.stockHandler.condition = function() {
    if($chk(Shop.values.OptionsConfiguration)) {
        Shop.stockHandler.options = {
            selectstockselector : 'div.stocks select',
            inputselector : '#box_productfull form.basket input[name^=stock_id]'
        };
        return true;
    } else {
        return false;
    }
}

Shop.useroptions.slider = {
    fadearrows : false
}


Shop.pageSlider.condition = function() {
    return !!( $$('.pageslider ul.slides li').length > 0 );
}











window.addEvent('domready', function() {
    if(!$chk(Shop.useroptions.prevent) || true != Shop.useroptions.prevent) {
        window.ShopInstance = new Shop();
    } else {
        window.ShopInstance = false;
    }
});




} //$chk(window.Shop)

