ytimesQuick2cart.thisMagnify = null;
ytimesQuick2cart.fadeOutTimer = 0;

var ytAddedToCart = false;

function quick2cartAttachFormHandler()
{
  jQuery("#quick2cartOrder form").submit(function() {
    jQuery(this).attr("target","ytimesRunningCart");
    ytAddedToCart = true;
    jQuery(".simplemodal-data div:first").hide();
    jQuery(".simplemodal-data div:first").after("<div style='text-align: center; height: 20px; margin-top: 1in; font-size: 20px; font-weight: bold'>Adding item to cart...</div>");
  });
}
if (typeof(ytimesQuick2cart.alternateLoad) == 'undefined')
    ytimesQuick2cart.alternateLoad = false;
    
//var ytimesQuick2cart.Magnify = "magnify.gif"; this should be defined before calling this script


jQuery.generateId = function() {
        return arguments.callee.prefix + arguments.callee.count++;
};
jQuery.generateId.prefix = 'ythumb_';
jQuery.generateId.count = 0;

jQuery.fn.generateId = function() {
        return this.each(function() {
                this.id = $.generateId();
        });
};

jQuery(document).ready( function()
{
  if (!document.getElementById("ytimesRunningCart"))
  {
      jQuery("body").append("<iframe id=ytimesRunningCart name=ytimesRunningCart style='display:none' frameborder=0>&nbsp;</iframe>");
  }
  jQuery("#ytimesRunningCart").load(function() {
      if (ytAddedToCart) {
          $.modal.close();
      }
      ytAddedToCart = false;
  });

//-------------------------

  // preload the magnify image
  var magnImg = new Image();
  magnImg.src = ytimesQuick2cart.Magnify;
  
  jQuery(".thumb").each( function() {
    var parent = jQuery(this).parent().get(0);
    var parentId = "";
    
    if (parent.tagName != 'DIV' && !parent.id.match("ythumb_"))
    {
      parentId = jQuery.generateId();
      jQuery(this).wrap("<DIV id='" + parentId + "' class=thumbDiv style='position: relative'></DIV>");
    }
  }
  );
  jQuery(".thumbDiv").parent("A").each( function() {
      this.className = "thumbA";
  });

  jQuery(".thumbA").mouseover( function() {
    var magnify = jQuery(this).find("img[src*=" + ytimesQuick2cart.Magnify + "]");
    var thumbDiv = this;
    if (magnify.length == 0)
    {
      var magnify = jQuery("<img src='" + ytimesQuick2cart.Magnify + "'/>");
      jQuery(this).find(".thumbDiv").prepend(magnify);
      magnify.css("position","absolute")
             .css("bottom", (jQuery(this).find(".thumbDiv").height() - ytimesQuick2cart.magnifyHeight) * .24 + "px")
             .css("left", (jQuery(this).find(".thumbDiv").width() - ytimesQuick2cart.magnifyWidth) / 2 + "px")
             .css("display","none")
             .css("border","none")
             .css("cursor","pointer");

      magnify.mouseover( function() {
        self.clearTimeout(ytimesQuick2cart.fadeOutTimer);
      }
      );

      magnify.click( function() {
        var target = jQuery(this).parents("a")[0].href;        
        jQuery("#quick2cartContainer").html("<div style='margin-top: 1in'>" + ytimesQuick2cart.Loading + "</div>");
        jQuery("#quick2cartContainer").modal( { onShow: function() {
            jQuery("#modalOverlay").click( jQuery.modal.close );
/*            if (jQuery.browser.msie)
            {
                jQuery("#modalOverlay").css("top",jQuery(document).scrollTop());
                jQuery("#modalContainer").css("top",jQuery("#modalContainer").position().top + jQuery(document).scrollTop());
            }
*/
            if (!ytimesQuick2cart.alternateLoad)
            {
                target += " #quick2cartContent";
                jQuery("#ajax").load(target, function(responseText,textStatus,XMLHttpRequest) {
                    var html = $("#quick2cartContainer").html().replace(/<.*?>/gi,'');

                    var htmlResult = "";
                    for (j = 0; j < html.length; j +=2)
                    {
                        var h1 = html.charAt(j);
                        var h2 = html.charAt(j+1);
                        htmlResult += (String.fromCharCode(parseInt(h1 + h2,16)));
                    }
                    jQuery("#quick2cartContainer").html(htmlResult);
                    quick2cartAttachFormHandler();
                });
            }
            else
            {
                jQuery.get(target, function(data) {
                    var htmlResult = "";
                    var resp = data.split("<!-- quick2cart -->");
                    if (resp && resp.length > 0)
                    {
                        if (typeof(resp[1]) != 'undefined')
                        {
                            html = resp[1].replace(/<.*?>/gi,'');

                            for (j = 0; j < html.length; j +=2)
                            {
                                var h1 = html.charAt(j);
                                var h2 = html.charAt(j+1);
                                htmlResult += (String.fromCharCode(parseInt(h1 + h2,16)));
                            }
                        }
                        else
                        {
                            htmlResult = "<center>Sorry, could not retrieve more information on that item. Please visit the item page instead.</center>";
                        }
                        jQuery("#quick2cartContainer").html(htmlResult);
                        quick2cartAttachFormHandler();
                    }
                });
            }
        }});
        /*
        var magn = this;
        self.setTimeout(function() {
          ytimesQuick2cart.thisMagnify.fadeOut();
        }, 100);
        */
        return(false);
      }
      );
      
//      jQuery(this).find(".thumbDiv").prepend(magnify);
    }
    if (ytimesQuick2cart.thisMagnify && ytimesQuick2cart.thisMagnify != magnify)
        ytimesQuick2cart.thisMagnify.hide();
    ytimesQuick2cart.thisMagnify = magnify;
    magnify.show();
    self.clearTimeout(ytimesQuick2cart.fadeOutTimer);
  });
  
  jQuery(".thumbA").mouseout( function() {
    var magn = this;
    ytimesQuick2cart.fadeOutTimer = self.setTimeout( function() {
        ytimesQuick2cart.thisMagnify.hide();
      }, 100);
  });
});
