﻿document.getElementsByClassName = function(cl) {
	var retnode = [];
	var myclass = new RegExp('\\b'+cl+'\\b');
	var elem = this.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) {
		var classes = elem[i].className;
		if (myclass.test(classes)) retnode.push(elem[i]);
	}
	return retnode;
};

var isMSIE = document.attachEvent != null;
var isGecko = !document.attachEvent && document.addEventListener;

DIY = {
    helpers : function() {
        if(!DIY._helpers) throw "Core helpers module isn't loaded.";
            return DIY._helpers;
    },
    css : function() {
        if(!DIY._cssFactory) throw "Core css module isn't loaded.";
        return DIY._cssFactory;
    },
    events : function() {
        if(!DIY._eventsFactory) throw "Core events module isn't loaded.";
        return DIY._eventsFactory;
    },
    coordinates : function() {
        if(!DIY._coordinatesFactory) throw "Core coordinates module isn't loaded.";
        return DIY._coordinatesFactory;
    },
    autoport : function() {
        if(!DIY._autoport) throw "Autoport module isn't loaded.";
        return DIY._autoport;
    },
    ehsop : function() {
        if(!DIY._eshop) throw "EShop module isn't loaded.";
        return DIY._eshop;
    },
    ui : function() {
        if(!DIY._ui) throw "UI module isn't loaded.";
        return DIY._ui;
    }    
}

var uid = (
    function(){
    var id=0;
    return function(){
    return id++ ;
    };
    }
    )();

DIY.ui.opacity = {
    // private members
     _oRules : new Array()
    ,_aProc : new Array()
    ,_defaultDelay : 30
    //
    ,addRule : function(ruleName, startOpacity, endOpacity, delay) {
        this._oRules[ruleName] = {'from':startOpacity, 'to':endOpacity, 'delay':(delay, this._defaultDelay), 'sign':(endOpacity-startOpacity>0?1:-1)};        
    }
    ,fadeOpacity : function(object, ruleName, backward) {    
        if(!object || !this._getOpacityProperty() || !this._oRules[ruleName]) return;                
                
        var rule = this._oRules[ruleName];
        var opacity = rule.from;
                
        if(this._aProc[object.id]) {
            clearInterval(this._aProc[object.id].tId);
            opacity = this._aProc[object.id].opacity;
        }
        
        if((opacity==rule.from && backward) || (opacity==rule.to && !backward))
            return;
        
        this._aProc[object.id] = {'opacity':opacity, 'tId':setInterval('DIY.ui.opacity._run("'+object.id+'")', this._oRules[ruleName].delay), "ruleName":ruleName, "backward":Boolean(backward)};
                                
    }
    ,increaseOpacity : function(object) {        
        this.fadeOpacity(object,this._aProc[object.id].ruleName,true);
    }
    // private methods
    ,_run : function(id) {        
        var proc = this._aProc[id];
        var rule = this._oRules[proc.ruleName];        
        proc.opacity = Math.round((proc.opacity + .1*rule.sign*(proc.backward?-1:1))*10)/10;
        this._setElementOpacity(DIY.helpers().g(id), proc.opacity);
        if(proc.opacity == rule.from || proc.opacity == rule.to) {            
            clearInterval(this._aProc[id].tId);        
        }
    }
    ,_getOpacityProperty : function() {        
        var p;
        if (typeof document.body.style.opacity == 'string') p = 'opacity';
        else if (typeof document.body.style.MozOpacity == 'string') p = 'MozOpacity';
        else if (typeof document.body.style.KhtmlOpacity == 'string') p = 'KhtmlOpacity';
        else if (document.body.filters && navigator.appVersion.match(/MSIE ([\d.]+);/)[1]>=5.5) p =  'filter';
        
        return (this._getOpacityProperty = new Function("return '" + p + "';"))();
    }
    ,_setElementOpacity : function(object, opacity) {
        var p = this._getOpacityProperty();                
        (setElementOpacity = p=="filter"?new Function('oElem', 'nOpacity', 'nOpacity *= 100; var oAlpha = oElem.filters["DXImageTransform.Microsoft.alpha"] || oElem.filters.alpha;	if (oAlpha) oAlpha.opacity = nOpacity; else oElem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+")";'):p?new Function('oElem', 'nOpacity', 'oElem.style.'+p+' = nOpacity;'):new Function)(object, opacity);
    }
}

DIY.tehnomania = {
    wr: null,
    act: null,
    fxShow: null,
    fxHide: null,
    stockSlideShowInit: function(wrapper) {
        this.wr = $(wrapper);
        this.act = this.wr.parentNode.getElementsByTagName('div');

        this.fxHide = new Fx.Tween('stock_asistant_wr');
        this.fxShow = new Fx.Tween('stock_asistant_wr');

        this.fxHide.onComplete = this._moveNext;
        window.setInterval(this._hide, 20000);

    },
    _hide: function() {
        DIY.tehnomania.fxHide.start('opacity', '1', '0');
    },
    _moveNext: function() {
        for (var i = 0, n = DIY.tehnomania.act.length; i < n; i++) {            
            if (DIY.tehnomania.act[i].className == 'a') {
                DIY.tehnomania.act[i].className = '';
                if (DIY.tehnomania.act.length-1 > i) {
                    DIY.tehnomania.act[i + 1].className = 'a';
                    DIY.tehnomania.wr.innerHTML = DIY.tehnomania.act[i + 1].innerHTML;
                }
                else {
                    DIY.tehnomania.act[0].className = 'a';
                    DIY.tehnomania.wr.innerHTML = DIY.tehnomania.act[0].innerHTML;
                }
                break;
            }
        }
        DIY.tehnomania.fxShow.start('opacity', '0', '1');
    }
}

DIY.ui.feedback = {
    def_feedback_icon: 'feedback_icon'
    , def_feedback_form: 'feedback_layout'
    , init: function(feedback_icon, feedback_form) {        
        this.feedbackLink = $(feedback_icon ? feedback_icon : DIY.ui.feedback.def_feedback_icon);
        this.feedbackForm = $(feedback_form ? feedback_form : DIY.ui.feedback.def_feedback_form);
        this.attachEvents();
    }
    , attachEvents: function() {
        var that = this;

        this.feedbackLink.addEvent('mouseover', function() {
            that.feedbackLink.toggleClass('hover');
            return false;
        });

        this.feedbackLink.addEvent('mouseout', function() {
            that.feedbackLink.toggleClass('hover');
            return false;
        });


        //        var myFx = new Fx.Slide(that.feedbackForm.id, {
        //            duration: 500
        //            , transition: Fx.Transitions.Pow.easeOut
        //            , onComplete: function() {
        //                that.feedbackLink.toggleClass('active');
        //            }
        //        });

        this.feedbackLink.addEvent('click', function() {
            that.feedbackLink.toggleClass('active');
            //myFx.toggle();
            if (that.feedbackForm.getStyles('display').display == 'block')
                that.feedbackForm.setStyle('display', 'none');
            else
                that.feedbackForm.setStyle('display', 'block');
            return false;
        });
    }
}

DIY.ui.loginForm = {
      def_login_form: 'login_layout'
    , def_login_icon: 'login_icon'
    , loginLink: null
    , loginForm: null
    , init: function(login_icon, login_form) {
        this.loginLink = $(login_icon ? login_icon : this.def_login_icon);
        this.loginForm = $(login_form ? login_form : this.def_login_form);
        this.attachEvents();
    }
    , attachEvents: function() {
        var that = this;
        this.loginLink.addEvent('mouseover', function() {
            that.loginLink.toggleClass('hover');
        });
        this.loginLink.addEvent('mouseout', function() {
            that.loginLink.toggleClass('hover');
        });
        this.loginLink.addEvent('click', function() {
            that.loginLink.toggleClass('active');
            if (that.loginForm.getStyles('display').display == 'block')
                that.loginForm.setStyle('display', 'none');
            else
                that.loginForm.setStyle('display', 'block');
        });
    }
}

DIY.ui.tabsheet = {
    arrTab: null
    , init: function(tabsheet) {
        var tabsheet = document.getElementById(tabsheet);
        this.arrTab = tabsheet.getElementsByTagName('dt');
        for (var i = 0, n = this.arrTab.length; i < n; i++) {
            this.arrTab[i].className = 'tab';

            var tabContent = this.arrTab[i];

            do {
                tabContent = tabContent.nextSibling;
            } while (tabContent && tabContent.nodeType != 1 && tabContent.tagName != 'DD');

            if (tabContent) {
                this.arrTab[i].tabContent = tabContent;
                this.arrTab[i].tabContent.className = "tab-content";
            }


            var that = this;

            this.arrTab[i].onclick = function() {
                for (var i = 0, n = that.arrTab.length; i < n; i++) {
                    that.arrTab[i].className = that.arrTab[i].className.replace(' on', '');
                    that.arrTab[i].tabContent.className = that.arrTab[i].tabContent.className.replace(' active', '');
                }
                this.className += ' on';
                this.tabContent.className += ' active';
            }

        }
        
        this.arrTab[0].className += ' on';
        this.arrTab[0].tabContent.className += ' active';

    }
}

DIY.ui.imageSelector = {
    imageSelector: null
    , loadedImage: new Array()
    , bigImg: null
    , prewiews: null
    , prewImg: new Array()
    , working: false
    , fx: null
    , currHref: null
    , canDrag: false
    , handle: null
    , shift_x: 0
    , cWidth: 0
    , hWidth: 0
    , inWidth: 0
    , reducer: null
    , scroll: null
    , scrollWidth: 0
    , init: function(image_selector, addLink) {

        this.imageSelector = $(image_selector);

        this.bigImg = $('big_img');
        this.prewiews = $$('.prewiew');

        this.bigImg.onclick = this._nextImage;

        this.handle = $$('.handler')[0];
        this.reducer = $$('.reducer')[0];
        this.scroll = $('scroll');

        if (this.handle) {
            this.cWidth = this.prewiews.getWidth();
            this.inWidth = this.reducer.getWidth();
            this.scrollWidth = this.scroll.getWidth() - 44;

            this.hWidth = Math.round((this.cWidth * this.scrollWidth) / this.inWidth);
            this.hWidth = (this.inWidth < this.scrollWidth) ? this.scrollWidth : this.hWidth;

            if (this.hWidth != this.scrollWidth) {

                this.handle.setStyle('width', (this.hWidth) + 'px');
                this.handle.setStyle('display', 'block');

                this.handle.get("morph").onComplete = this._scrollPrewiews;

                this.handle.addEvent('mousedown', this._drag);
                $(window.document).addEvent('mousemove', this._move);
                $(window.document).addEvent('mouseup', this._drop);
                var getter = $$('.getter')[0];
                getter.addEvent('mouseup', this._scroll);

                this.scroll.className += ' a';
            }
        }

        this.bigImg.onload = function() { DIY.ui.imageSelector.bigImg.fade('in'); DIY.ui.imageSelector.working = false; }

        this.fx = new Fx.Tween(this.bigImg);

        this.prewImg = this.imageSelector.getElementsByTagName('a');
        if (typeof (addLink) != 'undefined') {
            this.prewImg[this.prewImg.length] = $(addLink);
        }

        for (var i = 0, n = this.prewImg.length; i < n; i++) {
            var item = $(this.prewImg[i]);
            item.onclick = function() {
                if (DIY.ui.imageSelector.working || this.className == 'selected')
                    return false;
                DIY.ui.imageSelector._proceedAction(this); return false;
            };
        }
    }
    , _nextImage: function() {
        for (var i = 0, n = DIY.ui.imageSelector.prewImg.length; i < n; i++) {
            if (DIY.ui.imageSelector.prewImg[i].className == 'selected') {
                if (i == [DIY.ui.imageSelector.prewImg.length - 1]) {
                    DIY.ui.imageSelector.prewImg[0].onclick();
                }
                else {
                    DIY.ui.imageSelector.prewImg[i + 1].onclick();
                }
            }
        }
    }
    , _drag: function(event) {
        if (!event)
            event = window.event;
        DIY.ui.imageSelector.canDrag = true;
        DIY.ui.imageSelector.shift_x = event.client.x - parseInt(DIY.ui.imageSelector.handle.getStyle('left'));
        return false;
    }
    , _move: function(event) {
        if (!event)
            event = window.event;
        if (DIY.ui.imageSelector.canDrag) {
            DIY.ui.imageSelector._setPosition(event.client.x - DIY.ui.imageSelector.shift_x);

        }
        return false;
    }
    , _drop: function(event) {
        if (!event)
            event = window.event;
        DIY.ui.imageSelector.canDrag = false;
    }
    , _scroll: function(event) {
        if (!event)
            event = window.event;

        var x = DIY.ui.imageSelector.handle.getPosition().x;

        var left = parseInt(DIY.ui.imageSelector.handle.getStyle('left'), 10);
        if (event.client.x <= x) {
            if (left > 0) {
                if ((left - DIY.ui.imageSelector.hWidth) >= 0) {
                    DIY.ui.imageSelector.handle.morph({ left: left + (DIY.ui.imageSelector.hWidth) * (-1) });
                }
                else
                    DIY.ui.imageSelector.handle.morph({ left: 0 });
            }
        }
        else if (event.client.x >= x) {
            if ((left + DIY.ui.imageSelector.hWidth) <= DIY.ui.imageSelector.scrollWidth) {
                if ((left + DIY.ui.imageSelector.hWidth * 2) <= DIY.ui.imageSelector.scrollWidth) {
                    //DIY.ui.imageSelector.handle.style.left = (left + DIY.ui.imageSelector.hWidth) + 'px';
                    DIY.ui.imageSelector.handle.morph({ left: left + (DIY.ui.imageSelector.hWidth) });
                }
                else {
                    DIY.ui.imageSelector.handle.morph({ left: (DIY.ui.imageSelector.scrollWidth - DIY.ui.imageSelector.hWidth) });
                    //DIY.ui.imageSelector.handle.style.left = (DIY.ui.imageSelector.scrollWidth - DIY.ui.imageSelector.hWidth) + 'px';
                }
            }
        }
    }
    , _scrollPrewiews: function() {
        offset = (DIY.ui.imageSelector.inWidth - DIY.ui.imageSelector.cWidth) * ((parseInt(DIY.ui.imageSelector.handle.style.left, 10)) / (DIY.ui.imageSelector.scrollWidth - DIY.ui.imageSelector.hWidth));
        DIY.ui.imageSelector.reducer.morph({ 'margin-left': offset * (-1) });
        //DIY.ui.imageSelector.reducer.setStyle('margin-left', offset * (-1) + "px");
    }
    , _setPosition: function(newPosition) {
        if ((newPosition <= (DIY.ui.imageSelector.scrollWidth - DIY.ui.imageSelector.hWidth)) && (newPosition >= 0)) {
            DIY.ui.imageSelector.handle.style.left = newPosition + 'px';
        }
        else if (newPosition > DIY.ui.imageSelector.scrollWidth - DIY.ui.imageSelector.hWidth) {
            DIY.ui.imageSelector.handle.style.left = (DIY.ui.imageSelector.scrollWidth - DIY.ui.imageSelector.hWidth) + "px";
        }
        else
            DIY.ui.imageSelector.handle.style.left = '0px';

        offset = (DIY.ui.imageSelector.inWidth - DIY.ui.imageSelector.cWidth) * ((parseInt(DIY.ui.imageSelector.handle.style.left, 10)) / (DIY.ui.imageSelector.scrollWidth - DIY.ui.imageSelector.hWidth));
        DIY.ui.imageSelector.reducer.setStyle('margin-left', offset * (-1) + "px");

        //window.status = ((parseInt(DIY.ui.imageSelector.handle.style.left, 10)) / (DIY.ui.imageSelector.scrollWidth - DIY.ui.imageSelector.hWidth));
        //DIY.ui.imageSelector.reducer.setStyle('margin-left', Math.round(parseInt(DIY.ui.imageSelector.handle.style.left) * (-1)) + "px");
    }
    , _proceedAction: function(preview) {
        DIY.ui.imageSelector.working = true;

        for (var i = 0, n = DIY.ui.imageSelector.prewImg.length; i < n; i++) {
            if (DIY.ui.imageSelector.prewImg[i].className == 'selected') {
                DIY.ui.imageSelector.prewImg[i].className = '';
                break;
            }
        }
        preview.className = 'selected';

        if (!DIY.ui.imageSelector.loadedImage[preview.href]) {
            var loadingImage = new Image();
            loadingImage.onload = function() { DIY.ui.imageSelector._changeImage(preview) };
            loadingImage.src = preview.href;
        }
        else
            DIY.ui.imageSelector._changeImage(preview);
    }
    , _changeImage: function(preview) {
        DIY.ui.imageSelector.loadedImage[preview.href] = true;
        DIY.ui.imageSelector.currHref = preview.href;

        DIY.ui.imageSelector.fx.addEvent('complete', DIY.ui.imageSelector._showImage);
        DIY.ui.imageSelector.fx.start('opacity', '1', '0');
    }
    , _showImage: function() {
        DIY.ui.imageSelector.bigImg.src = DIY.ui.imageSelector.currHref;
    }
}

DIY.ui.select = {
    zIndex: 1
    , optRef: new Array()
    , replaceSelectMulpiple: function(arr_list) {
        for (var i = 0, n = arr_list.length; i < n; i++)
            this.replaceSelect(arr_list[i]);
    }
    , replaceSelect: function(list) {
        var select = document.createElement('div');
        //select.style.zIndex = this.zIndex++;

        select.id = 'replaced_html_select';
        var list = DIY.helpers().g(list);
        list.style.display = 'none';
        select.lnk = list;
        list.parentNode.insertBefore(select, list);
        select.className = 'html-select';
        var text = (list.selectedIndex > -1) ? list.options[list.selectedIndex].text : "&nbsp;"
        select.innerHTML = '<b><span>' + text + '</span></b>';
        var options = $(document.createElement('div'));
        options.id = 'options';
        options.className = 'options';
        options.style.display = 'none';

        for (var i = 0, n = list.options.length; i < n; i++) {
            var li = document.createElement('span');
            li.className = 'li';
            li.innerHTML = list.options[i].text;
            options.appendChild(li);
            li.onmouseover = function() { this.className += ' over'; }
            li.onmouseout = function() { this.className = this.className.replace(' over', ''); };
            li.selectedIndex = i;
            li.onclick = this._selectListItem;
            //if(list.options[i].selected)
        }

        select.appendChild(options);

        this.optRef.push(options);

        $(select.firstChild).onclick = this._toogleOptions;
        document.body.onclick = function() { DIY.ui.select._hideOptions(); }
    }
    , _toogleOptions: function(e) {
        var e = (e == null) ? window.event : e;
        var options = this.parentNode.childNodes[1];
        DIY.ui.select._hideOptions(options);
        options.style.display = (options.style.display == 'none') ? 'inline' : 'none';
        e.cancelBubble = true;
        e.returnValue = false;
        if (e.cancelable) {
            e.preventDefault();
            e.stopPropagation();
        }
        return false;
    }
    , _hideOptions: function(options) {
        for (var i = 0, n = DIY.ui.select.optRef.length; i < n; i++) {
            if (DIY.ui.select.optRef[i] != options)
                DIY.ui.select.optRef[i].style.display = 'none';
        }
    }
    , _selectListItem: function() {
        this.parentNode.style.display = 'none';
        this.parentNode.parentNode.childNodes[0].childNodes[0].innerHTML = this.innerHTML;
        //this.className += ' selected';

        var sIndexChanged = true;
        for (var i = 0, n = this.parentNode.parentNode.lnk.options.length; i < n; i++) {
            if (this.selectedIndex == i) {
                if (!this.parentNode.parentNode.lnk.options[i].selected) {
                    this.parentNode.parentNode.lnk.options[i].selected = true;
                }
                else {
                    sIndexChanged = false;
                    break;
                }
            }
            else {
                this.parentNode.parentNode.lnk.options[i].selected = false;
            }
        }
        if (sIndexChanged)
            this.parentNode.parentNode.lnk.onchange();
    }
}

DIY.ui.checkFeedback = {
    init: function(submit_button) {
        this.submitButton = $(submit_button);
        this.submitButton.setAttribute('disabled', 'disabled');
    }
}

DIY.ui.checkLoginForm = {
    submitButton: null
    , loginInput: null
    , pwdInput: null
    , init: function(submit_button, login_input, pwd_input) {
        var that = this;
        this.submitButton = $(submit_button);
        this.submitButton.setAttribute('disabled', 'disabled');

        this.loginInput = $(login_input);
        this.pwdInput = $(pwd_input);

        if (this.loginInput && this.pwdInput)
            setInterval(function() { that.checkForm() }, 1000);


    }
    , checkForm: function() {
        if (this.loginInput.value.length > 0 && this.pwdInput.value.length > 0)
            this.submitButton.removeAttribute('disabled');
        else
            this.submitButton.setAttribute('disabled', 'disabled');
    }
}

DIY._ui = {
    fileMax: 10,
    createMultiUploader: function(aploaderName) {
        var uploader = DIY.helpers().g(aploaderName);
        if (!uploader) return;
        uploader.onchange = function f() { DIY.ui()._addUploaderFile(this, this.fileMax) };
    },
    _addUploaderFile: function(obj, fm) {
        obj.name = 'optpict*' + DIY.helpers().uid();
        obj.id = obj.name;
        obj.style.display = 'none';

        var files_list = document.getElementById('optFiles');

        if (!files_list) return;

        var v = obj.value;
        var fileInf = document.createElement('p');
        fileInf.className = 'p';
        fileInf.innerHTML = v.substring(v.lastIndexOf("\\") + 1);
        files_list.appendChild(fileInf);

        var imgSize = document.createElement('select');
        imgSize.name = 'size_' + obj.name;
        imgSize.options[0] = new Option("Логотип", "3");
        imgSize.options[1] = new Option("Маленькое лого", "4");
        imgSize.options[0].selected = 'selected';

        fileInf.appendChild(imgSize);

        var delBtn = document.createElement('input');
        delBtn.type = 'button';
        delBtn.value = 'Удалить';
        delBtn.className = 'delbtn_varoptimg';
        delBtn.style.marginLeft = '10px';
        delBtn.style.fontSize = 'small';
        delBtn.onclick = function f() { delBtn.disabled = 'true'; obj.parentNode.removeChild(obj); this.parentNode.parentNode.removeChild(this.parentNode); }


        fileInf.appendChild(delBtn);

        var uploader = document.createElement('input');
        uploader.type = 'file';
        uploader.id = 'f_uploader';
        uploader.className = 'upload';
        uploader.name = 'fileX[]';
        uploader.size = '20';
        uploader.accept = 'image/jpg,image/gif,image/bmp';
        uploader.onchange = function f() { DIY.ui()._addUploaderFile(this, this.fileMax) };
        obj.parentNode.insertBefore(uploader, obj);

    }
    , DisableBeforeAction: function(action, source) {
        var source = DIY.helpers().g(source);
        if (source.selectedIndex < 0) {
            var a = new Array();
            for (var i = 2, n = arguments.length; i < n; i++) {
                var btn = DIY.helpers().g(arguments[i]);
                btn.className += ' Disabled';
                a.push(arguments[i]);
                //DIY.events().attach(btn, 'click', new Function("alert(''); return DIY.ui()._warningIfNotSelected();"));
                btn.onclick = new Function("return DIY.ui()._warningIfNotSelected('" + source.id + "');")
            }
            DIY.events().attach(source, action, function f() { DIY.ui()._enableButtons(a) });
        }
    }
    , _enableButtons: function(a) {
        for (var i = 0, n = a.length; i < n; i++) {
            var btn = DIY.helpers().g(a[i]);
            btn.className = btn.className.replace(' Disabled', '');
        }
    }
    , _warningIfNotSelected: function(source) {
        var source = DIY.helpers().g(source);
        if (source.selectedIndex == -1) {
            alert('Необходимо выбрать вид товара');
            return false;
        }
        return true;
    }
    , TabMenuSelecyedIndexChanged: function(sender, index) {

        if (sender.className == 'active') return false;

        var list = null;
        var parent = sender.parentNode;

        while (parent) {
            if (parent.tagName.toLowerCase() == 'ul') {
                list = parent;
                break;
            }
            parent = parent.parentNode;
        }

        var items = list.getElementsByTagName('a');
        for (var i = 0, n = items.length; i < n; i++)
            items[i].className = '';
        sender.className = 'active';

        var content = DIY.helpers().g('tab-menu-content');

        if (content) {
            var items = content.getElementsByTagName('table');
            for (var i = 0, n = items.length; i < n; i++) {
                if (i != index)
                    items[i].style.display = 'none';
                else
                    items[i].style.display = 'block';
            }
        }

        return false;
    },
    initSlideshow: function(container) {
        var conainer = DIY.helpers().g(container);
        if (!conainer) return;

        var images = conainer.getElementsByTagName('img');
        for (var i = 0; i < images.length; i++) {
            if (images[i].className.match(/(^|\s)slideshow($|\s)/)) {
                new this.slideshowItem(images[i]);
            }
        }
    },
    slideshowItem: function(image) {
        var layer = document.createElement('ins');
        layer.className = 'slideshow';
        image.parentNode.insertBefore(layer, image);
        layer.appendChild(document.createElement('ins'));
        layer.firstChild.appendChild(document.createElement('ins'));
        layer.firstChild.appendChild(image);
        this.image = image;
        this.slides = [image.src];
        var slides = image.onclick();
        var path = image.src.replace(/[^\/]+$/, '');
        for (var i = 0; i < slides.length; i++) {
            this.slides[i + 1] = (slides[i].indexOf('/') < 0 ? path : '') + slides[i];
        }
        this.i = 0;
        var t = this;
        image.onclick = layer.firstChild.firstChild.onclick = function() {
            t.i = t.i >= t.slides.length - 1 ? 0 : t.i + 1;
            t.image.src = t.slides[t.i];
        }
    },
    FlashPanels: function(panel, count) {
        _count = (count << 1) + 1;
        panel.style.visibility = 'hidden';
        window.setTimeout(function f() { DIY.ui()._tooglePanelsVisibility(panel, count) }, 150);
    },
    _tooglePanelsVisibility: function(panel, count) {
        panel.style.visibility = (panel.style.visibility == 'hidden') ? 'visible' : 'hidden';
        if (--count > 0)
            window.setTimeout(function f() { DIY.ui()._tooglePanelsVisibility(panel, count) }, 150);
    },
    _delCartItemIndicate: function(btn, tagNm) {
        btn.style.visibility = 'hidden';
        var parent = btn.parentNode;
        while (parent) {
            if (parent.tagName.toLowerCase() == tagNm.toLowerCase())
                break;
            else
                parent = parent.parentNode;
        }
        if (parent)
            parent.className = 'transparent';
    },
    _emptyCartIndicate: function(btnClear, btnOrder, id) {
        var cart = DIY.helpers().g(id);
        if (cart) {
            cart.className += ' transparent';
        }

        var btnClear = DIY.helpers().g(btnClear);
        var btnOrder = DIY.helpers().g(btnOrder);

        if (btnClear)
            btnClear.disabled = true;
        if (btnOrder)
            btnOrder.disabled = true;
    },
    _initAddCartRequest: function(btn, id) {
        if (!document._hash_btns)
            document._hash_btns = new Object();
        document._hash_btns[id] = btn;
        btn.disabled = true;
        btn.className += ' disabled';
    },
    initKeyFilter: function(id, action, pattern) {
        var obj = DIY.helpers().g(id);
        if (!obj) return;
        if (obj.attachEvent)
            obj.attachEvent('on' + action, function f() { DIY.ui().keyFilter(obj, pattern) });
        else if (obj.addEventListener)
            obj.addEventListener(action, function f() { DIY.ui().keyFilter(obj, pattern) }, false);
    },
    keyFilter: function(sender, pattern) {
        var re = new RegExp(pattern);
        if (sender.value.match(re))
            sender.value = sender.value.replace(re, '');
    }
}

DIY._eventsFactory = {
    attach : function(element, type, func) {
        if(isMSIE) {
            element.attachEvent('on' + type, func);
            //window.event.cancelBubble = true;
		    //window.event.returnValue = false;
        }
        if(isGecko) {
            element.addEventListener(type, func, true);
            //event.preventDefault();
        }
    }
}

DIY._eshop = {
    requiredFields: Array(),
    valideteEditProductForm: function() {
        for (i = 0, n = this.requiredFields.length; i < n; i++) {
            obj = DIY.helpers().g(this.requiredFields[i]);
            if (obj != null && obj.value == "") {
                obj.focus();
                alert('Не заполнено обязательное поле!');
                return false;
            }
        }
        return true;
    },
    addRequiredField: function(name) {
        this.requiredFields[this.requiredFields.length] = name;
        var o = this.requiredFields
    },
    showImage: function(title, imagePath) {
        newWin = open("", "displayWindow",
        "width=600,height=450,status=yes,toolbar=no,menubar=no,left=400,top=300");

        // открыть объект document для последующей печати 
        newWin.focus();
        newWin.document.open();

        // генерировать новый документ 
        newWin.document.write("<html><head><style type='text/css'>* { margin : 0px; padding: 0px; cursor: pointer; }</style><title>" + title + "");
        newWin.document.write("</title></head><body onclick='window.close();'>");
        //newWin.document.write("<script src='/Site/js/DIYCore.js' type='text/javascript'></script>");
        newWin.document.write("<img id='img' onload='window.resizeTo(this.width,this.height)' alt='" + title + "' src='" + imagePath + "'></img>");
        newWin.document.write("</body></html>");

        // закрыть документ - (но не окно!)
        newWin.document.close();
        return false;
    },
    updateImage: function(sender) {
        sender.src = "VirtImg/RndImg.ashx?rndid=" + Math.floor(Math.random(101) * 100);
    },
    SendData_OptPictEdit: function(sender, e) {
        var delBtns = document.getElementsByClassName('delbtn_varoptimg');
        for (var i in delBtns) {
            delBtns[i].disabled = "true";
        }

        var delImgStatus = document.createElement("span");
        delImgStatus.innerHTML = "<font style='color: #F20; margin-left: 10px; font-size: 90%;'>Файл удаляется...</font>";
        sender.parentNode.appendChild(delImgStatus);
        CallServer_OptPictEditor(e);
    },
    ReceiveServerData_OptPictEdit: function(args, context) {
        objImgInfo = DIY.helpers().g(args);

        if (objImgInfo)
            objImgInfo.parentNode.removeChild(objImgInfo);

        var delBtns = document.getElementsByClassName('delbtn_varoptimg');
        for (var i in delBtns) {
            delBtns[i].removeAttribute("disabled");
        }

    },
    FilterAlias: function(e, regex) {

        var isIE = (document.all) ? 1 : 0;

        var chr = (isIE) ? e.keyCode : e.which;

        var ch = String.fromCharCode(chr);

        if (isIE && chr == 189)
            return;

        if (chr != 13 && chr != 8 && chr != 0 && chr != 39 && chr != 37 && chr != 46 && chr != 36 && chr != 35) {
            var re = new RegExp(regex);

            if (ch.search(re) == -1) {
                if (isIE)
                    e.returnValue = false;
                else
                    e.preventDefault();
            }
        }
    },
    ReceiveServerData_OrderProduct: function(args, context) {
        var shopCart = DIY.helpers().g(context);
        if (!shopCart) return;
        shopCart.innerHTML = args;

        var addedItem = DIY.helpers().g('cart_added_item_id');
        if (addedItem) {
            var btn = document._hash_btns[addedItem.value];
            if (btn) {
                btn.src = btn.src.substring(0, btn.src.lastIndexOf('/') + 1) + 'order-btn-incart.gif';
                btn.removeAttribute("disabled");
                btn.className = btn.className.replace('disabled', '');
            }
        }

        if (DIY.helpers().g('shopping_card_added_row'))
            DIY.ui().FlashPanels(DIY.helpers().g('shopping_card_added_row'), 5)
        else
            DIY.ui().FlashPanels(DIY.helpers().g('ShoppingCartForm'), 5)
    },
    ReceiveServerData_ShoppingCart: function(args, context) {
        var shopCart = DIY.helpers().g(context);
        if (!shopCart) return;
        shopCart.innerHTML = args;
        //DIY.ui().FlashPanels(DIY.helpers().g('ShoppingCartForm'), 5)
    }
}

DIY._helpers = {
    AttachEvent : function (objId, eventTypes, func){
        var obj = DIY.helpers().g(objId);
        if(obj==null) return;
        var arrEventType = eventTypes.split(',');
        for(i=0, n = arrEventType.length; i < n; i++){
            var eventType = arrEventType[i];
            if(document.addEventListener){
                obj.addEventListener(eventType, func, false);	    
            }
            else if (document.attachEvent){
                obj.attachEvent('on' + eventType, func);
            }
        }    
    },
    g : function(id) {
        return document.getElementById(id);
    },
    pictRequestCancel : function(){
        var m = document.uniqueID && document.compatMode && !window.XMLHttpRequest && document.execCommand;
        try {
            if(!!m){
                m("BackgroundImageCache", false, true)
            }
        }
        catch(oh){};
    },
    digitFiltering : function(sender, e){
        return true;
        var key;
        var keychar;        
        if (window.event)
            key = window.event.keyCode;
        else if (e)
            key = e.which;
        else
            return true;
        keychar = String.fromCharCode(key);
        // control keys
        if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27))
            return true;
        else if ((("0123456789").indexOf(keychar) > -1))
            return true;          
        else
            return false;            
    },
    fixPNG : function(element) {
        if (/MSIE (5\.5|6).+Win/.test(navigator.userAgent)) {
		var src;
		if (element.tagName == 'IMG') {
			if (/\.png$/.test(element.src)) {
				src = element.src;
				element.src = "./i/e.gif";
		    }
		} else {
			src = element.currentStyle.backgroundImage
					.match(/url\("(.+\.png)"\)/i)
			if (src) {
				src = src[1];
				element.runtimeStyle.backgroundImage = "none";
			}
		}
		var re_scale_mode = /iesizing\-(\w+)/;
		var m = re_scale_mode.exec(element.className);
		var scale_mode = (m) ? m[1] : 'crop';
		if (src)
			element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"
					+ src + "',sizingMethod='" + scale_mode + "')";
	    }     
    },
    setCookie : function(name, value, expires) {
    if (!expires) {
        expires = new Date();
        }
        document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString() +  "; path=/";
    },
    getCookie : function(name) {
        cookie_name = name + "=";
        cookie_length = document.cookie.length;
        cookie_begin = 0;
        while (cookie_begin < cookie_length) {
            value_begin = cookie_begin + cookie_name.length;
            if (document.cookie.substring(cookie_begin, value_begin) == cookie_name) {
                var value_end = document.cookie.indexOf (";", value_begin);
                if (value_end == -1) {
                value_end = cookie_length;
                }
            return unescape(document.cookie.substring(value_begin, value_end));
            }
            cookie_begin = document.cookie.indexOf(" ", cookie_begin) + 1;
            if (cookie_begin == 0) {
                break;
            }
        }
        return null;
        },
    uid : function() {
        return uid();
    }
}

DIY._autoport = {
    slidingMenuShowBtn : function (obj){
        objBtnL = DIY.helpers().g('btn-scroll-left');
        objBtnR = DIY.helpers().g('btn-scroll-right');        
        if(objBtnL && objBtnR) {
            objBtnL.style.display = 'block';
            objBtnR.style.display = 'block';
        }
        obj.isBtnVis = 1;
    },
    slidingMenuInitObject : function (id){
        var obj = DIY.helpers().g(id);
        if (obj) {
            obj.state = 0;
            obj.timer = null;
            obj.maxVert = obj.scrollWidth - obj.offsetWidth;
        }
    },
    slidingMenuScrollLeft : function(id, timer) {
        var obj = DIY.helpers().g(id);
        if(obj){
            if (!obj.maxVert) this.slidingMenuInitObject(id);
            if(!obj.isBtnVis) this.slidingMenuShowBtn(obj);
            
            if (timer == undefined) obj.state = 1;
            if ((obj.maxVert > obj.scrollLeft) && (obj.state == 1)) {
                obj.scrollLeft = obj.scrollLeft + 10;
                obj.timer = setTimeout('DIY.autoport().slidingMenuScrollLeft(\''+id+'\',true)', 16);                
            }
            else {
                objBtn = DIY.helpers().g('btn-scroll-left');
                if(objBtn) {
                    objBtn.style.display = 'none';
                    obj.isBtnVis = 0;
                }
            }
        }
    },
    slidinMenuScrollRight : function(id,timer) {
        var obj = DIY.helpers().g(id);
        if (!obj.maxVert) this.slidingMenuInitObject(id);
        if(!obj.isBtnVis) this.slidingMenuShowBtn(obj);
        
        if (timer == undefined) obj.state = -1;
        if ((obj.scrollLeft > 0) && (obj.state == -1)) {
            obj.scrollLeft = obj.scrollLeft > 10 ? obj.scrollLeft - 10 : 0;
            obj.timer = setTimeout('DIY.autoport().slidinMenuScrollRight(\''+id+'\',true)', 16);
        }
        else {
            objBtn = DIY.helpers().g('btn-scroll-right');
            if(objBtn) {
               objBtn.style.display = 'none'; 
               obj.isBtnVis = 0;
            }
        }
    },    
    slidinMenuScrollStop : function(id) {
        var obj = DIY.helpers().g(id);
        if (obj) {
            if (obj.timer) clearTimeout(obj.timer);
            obj.state = 0;
                        
            expires = new Date();
            expires.setTime(expires.getTime() + (1000 * 86400 * 365));            
            DIY.helpers().setCookie("sMenuPos", obj.scrollLeft, expires);
        }        
    },
    initSlidingMenu : function (id){
        objBtnL = DIY.helpers().g('btn-scroll-left');
        objBtnR = DIY.helpers().g('btn-scroll-right');
        
        var obj = DIY.helpers().g(id);
        if(obj) {
            obj.scrollLeft = parseInt(DIY.helpers().getCookie("sMenuPos"), 10);            
            if(objBtnL && objBtnR) {
                var v1 = obj.scrollWidth - obj.offsetWidth;
                if(v1 > obj.scrollLeft)
                    objBtnL.style.display = 'block';                                    
                if(v1 >= obj.scrollLeft && obj.scrollLeft != 0) {
                    objBtnR.style.display = 'block';
                }
            }
        }
    }
}

function KeyUpHandler(senderID, controlID)
{
    sender = document.getElementById(senderID);
    
    if(null != senderID)
		sender.focus();
    
    if (event.keyCode != 13)
		return;
		
	event.returnValue = false;
	event.cancelBubble = true;
	event.keyCode = 0;

	if (null != controlID)
	{
		control = document.getElementById(controlID);

		if (null != control)
			control.click();
	}
	else
		return false;
}