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:#005d87; 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 += '<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(!/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(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.3);
  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.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(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+'; 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;
}


}

