
if (!sswgt_CartManager) {

    var sswgt_CartManager = {
        'prefix': 'my_',
        'mode': 'frame',
        'add2cart': function(objA){
            this.shop_url = objA.getAttribute('rel');
            sizes = getPageSize();
            this.show(objA.href + '&widgets=1', sizes[2] * 0.7, sizes[3] * 0.7);
            return false;
        },
        'go2cart': function(objA){
            this.shop_url = objA.getAttribute('rel');
            sizes = getPageSize();
            this.show(objA.href, sizes[2] * 0.7, sizes[3] * 0.7);
            return false;
        },
        '_show': function(width, height){
        
            this.hide(true);
            hideSelectBoxes();
            hideFlash();
            this.div();
            this.base();
            
            if (this.mode == 'frame') {
                this.frame(this.params.url, width, height);
            }
            else 
                if (this.mode == 'layer') {
                    this.layer(this.params.layer_id, width, height);
                }
            
            this.border(this.objMain);
			
            this.closeButton(this.objBorder);
            
            var old_onresize = window.onresize;
            window.onresize = function(){
            
                with (sswgt_CartManager) {
                
                    if (!(objOverlay && objDiv)) {
                        return;
                    }
                    
                    var arrayPageSize = getPageSize();
                    objOverlay.style.width = arrayPageSize[2] + 'px';
                    objOverlay.style.height = arrayPageSize[3] + 'px';
                    objBase.style.width = arrayPageSize[2] + 'px';
                    objBase.style.height = arrayPageSize[3] + 'px';
                    if (sswgt_CartManager.mode == 'frame') {
                        sswgt_CartManager.frame(null, frameWidth, frameHeight);
                    }
                    else {
                        if (sswgt_CartManager.mode == 'layer') {
                            this.layer(sswgt_CartManager.params.layer_id, frameWidth, frameHeight);
                        }
                    }
                    border(sswgt_CartManager.objMain);
                    closeButton(objBorder);
                };
                if (old_onresize) {
                    old_onresize();
                }
            };
            var old_onkeydown = document.onkeydown;
            document.onkeydown = function(event){
            
                event = event ? event : window.event;
                if (event) {
                    switch (event.keyCode ? event.keyCode : event.which ? event.which : null) {
                        case 0x1B:
                            sswgt_CartManager.hide(true);
                    }
                }
                if (old_onkeydown) {
                    old_onkeydown();
                }
            };
        },
        'showLayer': function(layer_id, width, height){
            this.mode = 'layer';
            this.params = {
                'layer_id': layer_id
            };
            this._show(width, height);
            showSelectBoxes();
        },
        'show': function(url, width, height){
            this.mode = 'frame';
            this.params = {
                'url': url
            };
            this._show(width, height);
        },
        'resizeFrame': function(width, height){
            if (width != null) {
                this.frameWidth = width;
            }
            if (height != null) {
                this.frameHeight = height;
            }
            
            this.frame(null, this.frameWidth, this.frameHeight);
            this.border(this.objFrame);
            this.closeButton(this.objBorder);
        },
        'div': function(){
        
            this.objDiv = document.createElement('div');
            setStyle(this.objDiv, 'zIndex:100; position: absolute; left:0; top: 0;');// background:url("n.gif") no-repeat; backgroundAttachment:fixed');
            var objBody = document.getElementsByTagName("body").item(0);
            objBody.appendChild(this.objDiv);
            this.objDiv.style.backgroundAttachment = 'fixed';
        },
        'layer': function(layer_id, width, height){
        
            var objLayer = getLayer(layer_id);
            setStyle(objLayer, 'visibility:hidden; display: block');
            if (!width) {
                width = objLayer.offsetWidth;
            }
            if (!height) {
                height = objLayer.offsetHeight;
            }
            
            this.frameWidth = width;
            this.frameHeight = height;
            var page = getPageSize();
            var left = (page[2] - width) / 2;
            if (left < 0) {
                left = 0;
            }
            var top = (page[3] - height) / 2;
            if (top < 10) {
                top = 10;
            }
            
            this.objBase.appendChild(objLayer);
            setStyle(objLayer, 'top:' + top + 'px; left:' + left + 'px; width:' + width + 'px; height:' + height + 'px;overflow: auto;zIndex:121; position:absolute;visibility:visible');
            
            this.objBase.style.visibility = 'visible';
            this.objMain = objLayer;
        },
        'frame': function(url, width, height){
        
            this.frameWidth = width;
            this.frameHeight = height;
            var page = getPageSize();
            var left = (page[2] - width) / 2;
            if (left < 0) {
                left = 0;
            }
            var top = (page[3] - height) / 2;
            if (top < 10) {
                top = 10;
            }
            var objFrame = document.getElementById(this.prefix + 'frame');
            if (!objFrame) {
            
                var objT = document.createElement('div');
                objT.style.display = 'none';
                objT.innerHTML = '<iframe id="' + this.prefix + 'frame" frameborder="0"></iframe>';
                this.objBase.appendChild(objT);
                objFrame = document.getElementById(this.prefix + 'frame');
                this.objBase.appendChild(objFrame);
                this.objBase.removeChild(objT);
                setStyle(objFrame, 'zIndex:120; position:absolute; backgroundColor:#ffffff');
                
                var objLoading = document.createElement('div');
                this.objBase.appendChild(objLoading);
                
                setStyle(objLoading, 'backgroundColor:#ffffff; zIndex:121; position:absolute; padding:20px; left:' + (page[2] / 2 - 50 + 20) + 'px; top:' + (page[3] / 2 - 50) + 'px;visibility: visible;');
                var objImgLoading = document.createElement('img');
                //			objImgLoading.src = this.shop_url+'published/SC/html/scripts/images_common/loading.gif';
                objImgLoading.src = ((window.CONF_ON_WEBASYST || (this.shop_url.search('webasyst.net') != -1)) ? (this.shop_url.replace(/shop\//, '') + 'shop/') : (this.shop_url + 'published/SC/html/scripts/')) + 'images_common/loading.gif';
                objLoading.appendChild(objImgLoading);
                
                setTimeout(function(){
                    objFrame.src = url;
                }, 100);
                var objBase = this.objBase;
                
                function objFrame_onload(){
                    if (objFrame.style.visibility != 'visible') {
                        var objLoading1 = objLoading;
                        var objBase1 = objBase;
                        setTimeout(function(){
                            if (objLoading1 && objLoading1.parentNode) {
                                objLoading1.parentNode.removeChild(objLoading1);
                                objLoading1 = null;
                            }
                            objBase1.style.visibility = 'visible';
                        }, 800);
                    }
                };
                
                if (objFrame.addEventListener) 
                    objFrame.addEventListener("load", objFrame_onload, false);
                else 
                    if (objFrame.attachEvent) 
                        objFrame.attachEvent("onload", objFrame_onload);
                
                this.objFrame = objFrame;
                this.objMain = this.objFrame;
            }
            setStyle(objFrame, 'top:' + top + 'px; left:' + left + 'px; width:' + width + 'px; height:' + height + 'px');
        },
        'base': function(){
			var brauserVersion = 10;
			var regularVersion = navigator.appVersion.match(/MSIE\u0020([.\d]+);/);
		
			if(regularVersion) {
				brauserVersion = regularVersion[1];
			}
			
			
		
			
            if (brauserVersion >= 7) {
                var objBase = document.createElement("div");
                objBase.style.visibility = 'hidden';
            }
            else {
					this.objDiv.innerHTML += '<div' + ' id="myBase" style=\'z-index:95; position:absolute; visibility:hidden; top: expression(parseInt(document.documentElement.scrollTop || document.body.scrollTop, 10)+"px"); left: expression(parseInt(document.documentElement.scrollLeft || document.body.scrollLeft, 10)+"px");\'></div>';
					var objBase = document.getElementById('myBase');
            }
            setStyle(objBase, 'zIndex:95');
            if (brauserVersion >= 7) {
                setStyle(objBase, 'top:0; left:0; position: fixed');
            }
            
            var arrayPageSize = getPageSize();
            objBase.style.width = arrayPageSize[2] + 'px';
            objBase.style.height = arrayPageSize[3] + 'px';
            
            objBase.onclick = function(ev){
                if (getEventObject(ev).target.id && getEventObject(ev).target.id == this.id) {
                    sswgt_CartManager.hide(true);
                }
            };
            
            this.objDiv.insertBefore(objBase, this.objDiv.firstChild);
            this.objBase = objBase;
            this.overlay();
        },
        'overlay': function(){
            var objOverlay = document.getElementById(this.prefix + 'overlay');
            if (!objOverlay) {
                objOverlay = document.createElement('div');
                objOverlay.id = this.prefix + 'overlay';
                this.objBase.appendChild(objOverlay);
            }
            
            var left = 0;
            var top = 0;
            var width = this.objBase.offsetWidth;
            var height = this.objBase.offsetHeight;
            setStyle(objOverlay, 'position:absolute; visibility: visible; top:' + top + '; left:' + left + '; width:' + width + 'px; height:' + height + 'px; backgroundColor:#000000');
            setOpacity(objOverlay, 0.7);
            objOverlay.onclick = function(ev){
                if (getEventObject(ev).target.id && getEventObject(ev).target.id == this.id) {
                    sswgt_CartManager.hide(true);
                }
            };
            
            this.objOverlay = objOverlay;
        },
        'hide': function(remove){
            if (this.objDiv && this.objDiv.parentNode) {
                if (this.objOverlay) {
                    this.objDiv.appendChild(this.objOverlay);
                }
                this.objDiv.style.display = "none";
                
                if (remove) {
                    if (this.mode == 'layer') {
                        setStyle(this.objMain, 'display:none');
                        setStyle(this.objMain, 'visibility:hidden');
                        document.body.appendChild(this.objMain);
                    }
                    this.objDiv.parentNode.removeChild(this.objDiv);
                    this.objDiv = null;
                    this.objOverlay = null;
                }
                showSelectBoxes();
                showFlash();
            }
        },
        'closeButton': function(parentObject){
        
            with (this) {
                var objCloseButton = document.getElementById(prefix + 'closeButton');
                if (!objCloseButton) {
                    objCloseButton = document.createElement('img');
                    objCloseButton.id = prefix + 'closeButton';
                }
                var left = parentObject.left + parentObject.width - 22;
                var top = parentObject.top - 25;
                setStyle(objCloseButton, 'position:absolute; top:' + top + 'px; left:' + left + 'px; cursor:pointer; cursor:hand');
                //DEBUG:
                //alert(this.shop_url);
                //objCloseButton.src = ((window.CONF_ON_WEBASYST||(this.shop_url.search('webasyst.net')!=-1))?(this.shop_url.replace(/shop\//,'')):(this.shop_url+'published/SC/html/scripts/'))+'images_common/close.gif';
                objCloseButton.src = ((window.CONF_ON_WEBASYST || (this.shop_url.search('webasyst.net') != -1)) ? (this.shop_url.replace(/shop\//, '') + 'shop/') : (this.shop_url + 'published/SC/html/scripts/')) + 'images_common/close.gif';
                //			objCloseButton.src = this.shop_url+'published/SC/html/scripts/images_common/close.gif';
                objCloseButton.onclick = function(){
                    sswgt_CartManager.hide(true);
                    return false;
                };
                objBase.appendChild(objCloseButton);
            };
                    },
        'border': function(parentObj){
            var objBorder = document.getElementById(this.prefix + 'border');
            if (!objBorder) {
                objBorder = document.createElement('div');
                objBorder.id = this.prefix + 'border';
                this.objBase.appendChild(objBorder);
            }
            
            var border_width = 0;
            var left = parseInt(parentObj.style.left, 10) - border_width;
            var top = parseInt(parentObj.style.top, 10) - border_width;
            var width = parentObj.offsetWidth;
            var height = parentObj.offsetHeight;
            if (/MSIE/.test(navigator.userAgent)) {
                width += border_width * 2;
                height += border_width * 2;
            }
			
            setStyle(objBorder, 'position:absolute; top:' + top + 'px; left:' + left + 'px; width:' + width + 'px; height:' + height- + 'px; border: ' + border_width + 'px solid #efefef');
			objBorder.left = left;
			objBorder.width = width;
			objBorder.top = top;
            this.objBorder = objBorder;
        }
    };
    
    function showSelectBoxes(){
        var selects = document.getElementsByTagName("select");
        for (i = 0; i != selects.length; i++) {
            selects[i].style.visibility = "visible";
        }
    }
    
    function hideSelectBoxes(){
        var selects = document.getElementsByTagName("select");
        for (i = 0; i != selects.length; i++) {
            selects[i].style.visibility = "hidden";
        }
    }
    
    function showFlash(){
        var flashObjects = document.getElementsByTagName("object");
        for (i = 0; i < flashObjects.length; i++) {
            flashObjects[i].style.visibility = "visible";
        }
        var flashEmbeds = document.getElementsByTagName("embed");
        for (i = 0; i < flashEmbeds.length; i++) {
            flashEmbeds[i].style.visibility = "visible";
        }
    }
    
    function hideFlash(){
        var flashObjects = document.getElementsByTagName("object");
        for (i = 0; i < flashObjects.length; i++) {
            flashObjects[i].style.visibility = "hidden";
        }
        var flashEmbeds = document.getElementsByTagName("embed");
        for (i = 0; i < flashEmbeds.length; i++) {
            flashEmbeds[i].style.visibility = "hidden";
        }
    }
    
    function getPageSize(){
    
        var xScroll, yScroll;
        
        if (window.innerHeight && window.scrollMaxY) {
            xScroll = window.innerWidth + window.scrollMaxX;
            yScroll = window.innerHeight + window.scrollMaxY;
        }
        else 
            if (document.body.scrollHeight > document.body.offsetHeight) { // all but Explorer Mac
                xScroll = document.body.scrollWidth;
                yScroll = document.body.scrollHeight;
            }
            else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
                xScroll = document.body.offsetWidth;
                yScroll = document.body.offsetHeight;
            }
        
        var windowWidth, windowHeight;
        
        if (self.innerHeight) { // all except Explorer
            if (document.documentElement.clientWidth) {
                windowWidth = document.documentElement.clientWidth;
            }
            else {
                windowWidth = self.innerWidth;
            }
            windowHeight = self.innerHeight;
        }
        else 
            if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
                windowWidth = document.documentElement.clientWidth;
                windowHeight = document.documentElement.clientHeight;
            }
            else 
                if (document.body) { // other Explorers
                    windowWidth = document.body.clientWidth;
                    windowHeight = document.body.clientHeight;
                }
        
        // for small pages with total height less then height of the viewport
        if (yScroll < windowHeight) {
            pageHeight = windowHeight;
        }
        else {
            pageHeight = yScroll;
        }
        
        // for small pages with total width less then width of the viewport
        if (xScroll < windowWidth) {
            pageWidth = xScroll;
        }
        else {
            pageWidth = windowWidth;
        }
        
        arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight);
        return arrayPageSize;
    }
    
    function setOpacity(element, value){
    
        if (value == 1) {
            element.style.opacity = (/Gecko/.test(navigator.userAgent) && !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? 0.999999 : null;
            if (/MSIE/.test(navigator.userAgent)) {
                element.style.filter = element.style.filter.replace(/alpha\([^\)]*\)/gi, '');
            }
        }
        else {
            if (value < 0.00001) {
                value = 0;
            }
            element.style.opacity = value;
            if (/MSIE/.test(navigator.userAgent)) {
                element.style.filter = element.style.filter.replace(/alpha\([^\)]*\)/gi, '') + 'alpha(opacity=' + value * 100 + ')';
            }
        }
    }
    
    function setStyle(obj, style_str){
    
        var styles = style_str.split(";");
        with (obj) {
            for (var k = styles.length - 1; k >= 0; k--) {
                var _style = styles[k].split(':', 2);
                if (!_style[1]) {
                    continue;
                }
                _style[0] = _style[0].replace(/^\s|\s$/, '');
                _style[1] = _style[1].replace(/^\s|\s$/, '');
                style[_style[0]] = _style[1];
            }
        };
            }
    
    function getEventObject(ev){
    
        var my_ev = {};
        ev = ev ? ev : window.event;
        if (ev.srcElement) {
            my_ev.target = ev.srcElement;
        }
        else {
            my_ev.target = ev.target;
        }
        
        my_ev.ev = ev;
        return my_ev;
    }
    
    
}

