if(!window.iCart)
  var iCart=new Object();
iCart.Methods={
  title:'Add to Cart',
  width:500,
  overlay:false,
  overlayClose:false,
  autoFocusing:false,
  confirmDelete:'Are you sure you would like to remove this item from the shopping cart?',
  init:function(options){
    Object.extend(this,options||{});
  },
  updateLinks:function(){
    var links=$$('a');
    links.each(function(link){
      if(!link.href.match(/iCart\./)&&link.href.match(/\/checkout\/cart\/delete\//)){
        $(link).writeAttribute('onclick','iCart.updateCart(\''+link.href+'\', $(this)); return false;');
        $(link).writeAttribute('href','javascript:iCart.updateCart("'+link.href+'");');
      }
    });
  if(typeof productAddToCartForm!='undefined'){
    productAddToCartForm.submit=function(){
      if(this.validator.validate()) {
        var _link = window.baseRegistryLink || '';
        if (this.form.action != _link) {
          iCart.submitForm(this.form,'post');
        }
        else {
          this.form.submit();
        }
      }
    }.bind(productAddToCartForm);
}
},
updateCart:function(url,el){
  if(confirm(this.confirmDelete)){
    try{
      if(el){
        row=$(el).up('tr')?$(el).up('tr'):$(el).up('li');
        $(row).fade({
          duration:0.3,
          from:1,
          to:0.2
        });
      }
    }catch(e){}
  url=url.replace('/cart','/icart');
  new Ajax.Request(url,{
    method:'get',
    onSuccess:function(transport){
      var response=new String(transport.responseText);
      this._eval(response);
      this.updateLinks();
    }.bind(this)
    });
}
},
updateBlock:function(elements,json)
{
  try{
    elements.first().update(json);
    this._eval(json);
  }catch(e){}
},
replaceBlock:function(elements,json)
{
  try{
    elements.first().replace(json);
    this._eval(json);
  }catch(e){}
},
_eval:function(scripts){
  try{
    if(scripts!=''){
      var script='';
      scripts=scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi,function(){
        if(scripts!==null)script+=arguments[1]+'\n';
        return'';
      });
      if(script)(window.execScript)?window.execScript(script):window.setTimeout(script,0);
    }
    return false;
  }
  catch(e)
  {
    alert(e);
  }
},
setLocation:function(url){
  if(url.match(/\/checkout\/i?cart\/add\//)){
    url=url.replace('/cart','/icart');
    this.open(url);
  }
  else window.location.href=url;
},
setPLocation:function(url,setFocus){
  if(url.match(/\/checkout\/i?cart\/add\//)){
    url=url.replace('/cart','/icart');
    this.open(url);
  }
  else{
    if(setFocus){
      window.opener.focus();
    }
    window.opener.location.href=url;
  }
},
submitForm:function(form,method){
  this.open(form.action.replace('/cart','/icart'),{
    params:form.serialize(),
    method:method
  });
},
open:function(url,params){
  Modalbox.setOptions({
    title:this.title,
    width:this.width,
    overlay:this.overlay,
    overlayClose:this.overlayClose,
    autoFocusing:this.autoFocusing
    });
  Modalbox.show(url,params);
},
close:function(){
  Modalbox.hide({
    transitions:true
  });
},
autoClose:function(seconds){
  if(seconds>0)
    Modalbox.autoHide(seconds,{
      transitions:true
    });
}
};

Object.extend(iCart,iCart.Methods);
setLocation=function(url){
  iCart.setLocation(url);
};

setPLocation=function(url,setFocus){
  iCart.setPLocation(url,setFocus);
};
