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(); }} 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}; //__DEBUG //alert(url+'\n::\n'+this.shop_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 = ''; 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(){ if(!/MSIE/.test(navigator.userAgent)){ var objBase = document.createElement("div"); objBase.style.visibility = 'hidden'; }else{ this.objDiv.innerHTML += ''; var objBase = document.getElementById('myBase'); } setStyle(objBase, 'zIndex:95'); if(!/MSIE/.test(navigator.userAgent)){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();}}; 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();}}; 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'); 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.offsetLeft+parentObject.offsetWidth-22; var top = parentObject.offsetTop-25; setStyle(objCloseButton, 'position:absolute; top:'+top+'; left:'+left+'; 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();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+'; left:'+left+'; width:'+width+'px; height:'+height+'px; border: '+border_width+'px solid #efefef'); 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; } } /* playback timings (ms): LoadShardBlock: 36.863 (3) esindex: 0.007 captures_list: 54.59 CDXLines.iter: 12.226 (3) PetaboxLoader3.datanode: 84.581 (5) exclusion.robots: 0.2 exclusion.robots.policy: 0.186 RedisCDXSource: 2.564 PetaboxLoader3.resolve: 116.319 (2) load_resource: 171.897 */