if( !!window.Shop ) {
    Shop.preinit = function() {
        var c = $$('#box_menu .innerbox li.current')[0];
        if(!!c) {
            while('li' == c.getParent().getParent().get('tag')) c = c.getParent().getParent();
            $$('#box_menu .innerbox > ul > li').filter(function(li) { return li != c; }).dispose();
        }

        $$('body .main .centercol .fewperrow td').each( function (td, idx) {
            var html = td.get('html');
            td.empty();
            new Element('div', {
                id : 'line',
                html : html
            }).inject(td);
        });

        Shop.basketHandler.implement({
            step_2 : function() {
                if(!$chk(this.options.containers.step2)) return;

                var i = this.options.containers.step2.getElements('input[type=text]')[0];
                if($chk(i)) i.focus();

                var f = (function myself(_form, _sub) {
                    myself._form = _form;
                    myself._sub = _sub;
                    var trs = myself._form.getElements(this.options.selectors.trdifferentaddress);
                    var i = myself._form.getElement(this.options.selectors.differentaddress);
                    /* mod by webcoders */
                    
                    var invoice = myself._form.getElement('input[name=additional_1]');
                    invoice.getParent('tr').addClass('none');
                    if($chk(i)) {
                        if(i.checked) {
                            trs.removeClass('none');
                            invoice.checked = true;
                        } else {
                            trs.addClass('none');
                            invoice.checked = false;
                        }
                    }
                    /* eof by webcoders */
                    var r = $(myself._form).getElement(this.options.selectors.companyaddress);
                    if($chk(r)) {
                        myself._sub(myself._form.getElement(this.options.selectors.formcompanyname), r.checked);
                        myself._sub(myself._form.getElement(this.options.selectors.formcompanyname2), i.checked);
                        myself._sub(myself._form.getElement(this.options.selectors.formtaxid2), i.checked);

                        //S-mod
                        /*var v = $(myself._form).getElement('#input_additional_1');
                        myself._sub(myself._form.getElement(this.options.selectors.formtaxid), v.checked);
                        myself._form.getElement('tr.coname td.label').getElements('em').dispose();
                        myself._form.getElement('tr.nip td.label').getElements('em').dispose();
                        if(r.checked && v.checked) {
                            myself._form.getElements('tr.coname td.label').each(function(td) {
                                new Element('em', { 'class' : 'color', 'html' : '*' }).inject(td, 'top');
                            });
                            myself._form.getElements('tr.nip td.label').each(function(td) {
                                new Element('em', { 'class' : 'color', 'html' : '*' }).inject(td, 'top');
                            });
                        }*/
                        //S-mod end
                    }
                }).pass([
                    this.options.containers.step2.getElements('form').pop(),
                    function(el, show) {
                        if($chk(el)) {
                            var p = $(el);
                            while('tr' != p.get('tag')) p = p.getParent();
                            if(true == show)
                                p.removeClass('none');
                            else
                                p.addClass('none');
                        }
                    }
                ], this);
                f();

                this.options.containers.step2.getElements(this.options.selectors.countryselect).each(function(el) {
                    el.addEvent('change', function(e) {
                        var v = this.get('value');
                        var chkbx = this._class.options.containers.step2.getElement(this._class.options.selectors.differentaddress);
                        if(!$chk(chkbx))
                            return;
                        /* fix by webcoders */
                        if(this._class.options.country2Shipping
                            && false == this._class.options.country2Shipping.contains(v) 
                        ) {
                            chkbx._can_change = false;
                            if(false == chkbx.checked) {
                                chkbx.checked = true;
                                chkbx.fireEvent('change');
                            }
                        } else {
                            chkbx._can_change = true;
                        }
                    });
                    el._class = this;
                    el.fireEvent('change');
                }, this);

                this.options.containers.step2.getElements(this.options.selectors.addresstyperadios).each(function(el) {
                    el._change = f;
                    el.addEvent('change', function(e) {
                        this._change();
                    })
                    if(Browser.ie) el.addEvent('click', function(e) { this.fireEvent('change', e); });
                });

                //S-mod
                this.options.containers.step2.getElements('#input_additional_1').each(function(el) {
                    el._change = f;
                    el.addEvent('change', function(e) {
                        this._change();
                    })
                    if(Browser.ie) el.addEvent('click', function(e) { this.fireEvent('change', e); });
                });
                //S-mod end

                this.options.containers.step2.getElements(this.options.selectors.differentaddress).each(function(el) {
                    el._change = f;
                    el.addEvent('change', function(e) {
                        if(false == this._can_change && false == this.checked) {
                            (function() {
                                alert( this._class.Shop.get('lang.basket.shipping_different_country') );
                                this.checked = true;
                                this.blur();
                                this._change();
                            }).delay(100, this);
                        } else {
                            this._change();
                        }
                    })
                    el._class = this;
                    if(Browser.ie) el.addEvent('click', function(e) { this.fireEvent('change', e); });
                    el._change();
                }, this);
                this.options.containers.step2.getElements(this.options.selectors.addressselectsubmit).addClass('none');

                this.options.containers.step2.getElements(this.options.selectors.addressselect).each(function(el) {
                    el.addEvent('change', function(e) {
                        var val = this.get('value').toInt();
                        if(val > 0) {
                            var req = new Request.JSON({
                                url : this._class.Shop.url(this._class.options.getaddressurl.substitute({ id : val})),
                                secure : true,
                                async : false,
                                noCache : true,
                                method : 'get',
                                onFailure : function(xhr) {
                                    if(200 != this.status)
                                        alert(this._class.Shop.get('lang.basket.address_request_error'));
                                },
                                onComplete : function(json) {
                                    if($chk(json) && $chk(json.name)) {
                                        var n = this._select.get('name').match(/2$/) ? '2' : '';
                                        for(var k in json) {
                                            var selector = this._class.options.selectors.addressinput.substitute({
                                                name : k + n
                                            });
                                            this._class.options.containers.step2.getElements(selector).set('value', json[k]);
                                        }
                                        this._class.options.containers.step2.getElements(this._class.options.selectors.countryselect).fireEvent('change');

                                        if('' == n) {
                                            if('' == json.nip && '' == json.coname) {
                                                $$(this._class.options.selectors.personaladdress).set('checked', true).fireEvent('change', null);
                                            } else {
                                                $$(this._class.options.selectors.companyaddress).set('checked', true).fireEvent('change', null);
                                            }
                                        }
                                    } else {
                                        alert(this._class.Shop.get('lang.basket.address_request_error'));
                                    }
                                }
                            });
                            req._select = this;
                            req._class = this._class;
                            req.send();
                        } else {
                            var keys = [ 'name','surname','phone','coname','nip','street','zip','city','country' ];
                            var n = this.get('name').match(/2$/) ? '2' : '';
                            for(var x = 0; x < keys.length; ++x) {
                                var selector = this._class.options.selectors.addressinput.substitute({
                                    name : keys[x] + n
                                });
                                this._class.options.containers.step2.getElements(selector).set('value', '');
                            }
                        }
                    });
                    if(Browser.ie) el.addEvent('click', function(e) { this.fireEvent('change', e); });
                    el._class = this;
                }, this);
            }
        });
    }
}
window.addEvent('domready', function() {
    $$('.ajaxSendable').addEvent(
        'click', function() {
            ajax_url = window.location.href;
            var myRequest = new Request.JSON(
                {url: ajax_url, method: 'post', 
                    onSuccess: function(responseText, responseXML){
                        response = JSON.decode(responseXML);
                        $$('.flash_message').destroy();
                        if (response.success) {
                            outerclass = 'success_message';
                            $('stockNoticeEmail').set('value', '');
                            $('stockNoticeForm').setStyle('display', 'none');
                            maindiv = new Element('div', {'class': 'avaliabilityMessage'});
                            maindiv.set('html', response.success);
                            $$('td.basket').grab(maindiv, 'bottom');
                        } else {
                            outerclass = 'error_message';
                            flash_msg = new Element('div', {'class': 'flash_message '+outerclass});
                            msg_cont = new Element('div', {'class': 'container'});
                            innerCont = new Element('p');
                            innerCont.set('html', response.error);
                            innerCont.inject(msg_cont);
                            msg_cont.inject(flash_msg);
                            $$('td.basket').grab(flash_msg, 'bottom');
                        }
                },
                onFailure: function(){
                    outerclass = 'error_message';
                    message = 'Wystąpił krytyczny błąd aplikacji';
                    if ($$('.flash_message').length) {
                        $('stockNoticeEmail').set('value', '');
                        $$('.flash_message').removeClass('error_message');
                        $$('.flash_message').removeClass('success_message');
                        $$('.flash_message').addClass(outerclass);
                        $$('.flash_message .container').set('html', '<p>'+message+'</p>');
                    } else {
                        flash_msg = new Element('div', {'class': 'flash_message '+outerclass});
                        msg_cont = new Element('div', {'class': 'container'});
                        innerCont = new Element('p');
                        innerCont.set('html', message);
                        innerCont.inject(msg_cont);
                        msg_cont.inject(flash_msg);
                        $('stockNoticeForm').grab(flash_msg, 'top');
                    }
                }
                
                })
                .post('notice_email='+$('stockNoticeEmail').get('value')+'&stock_id='+$('stockNoticeStockId').get('value'))
                .send();
            return false;
        }
    )
})
