﻿var ProductPop = {
lastTarget:null,
lastItemNo:null,
activeTarget:null,
hoverMS:2000,
contentContainerId: "ajaxPopup",
show: function(target,itemno) {
try {
if(this.lastTarget != target) {
this.lastTarget = target; 
this.lastItemNo = itemno;
target.onmouseout = ProductPop.cancelShow;
setTimeout("ProductPop.hover()", this.hoverMS);
} else {
JBSPopup.hide();
}
} catch (e) {
ProductPop.logit("error show:" + e); 
}
},
cancelShow: function(event) {
if(ProductPop.lastTarget)
ProductPop.lastTarget.onmouseout=null;
if(document.getElementById(ProductPop.contentContainerId))
document.getElementById(ProductPop.contentContainerId).onmouseout = null;
if(ProductPop.activeTarget)
ProductPop.activeTarget.onmouseout = null;
ProductPop.lastTarget=null;
ProductPop.lastItemNo=null;
},
hover: function() {
try {
JBSPopup.hide();
if(this.lastItemNo && this.lastTarget) {
JBS.SiteManager.UI.Public.Ajax.Product.Listing.ProductUtility.getProductOverviewPopup(this.lastItemNo, ProductPop.showCallback);
this.activeTarget = this.lastTarget; // remember
this.cancelShow(null);
}
} catch (e) {
ProductPop.logit("error hover:" + e);
}
},
setupPopup: function() {
JBSPopup.pendingMessage = "";
JBSPopup.parseIFrameScript=false;
JBSPopup.displayType = JBSPopup.DIV_POPUP;
JBSPopup.useIFrameBelow=true;
JBSPopup.startHidden=true;
JBSPopup.initialize( ProductPop.activeTarget, 0, 0); //
JBSPopup.useAutoHeight=true;
JBSPopup.useAutoWidth=true;
},
showCallback: function(response) {
try {
if(response!=null&&response!="") {
JBSPopup.addMouseOut = false;
ProductPop.setupPopup();
var top = JBSPopup.top;
var left = JBSPopup.left;
JBSPopup.move(-500, -500);
JBSPopup.display(response);
JBSPopup.setVisibility(true);
// get the size of the output:
var h = document.getElementById(ProductPop.contentContainerId).offsetHeight;
var w = document.getElementById(ProductPop.contentContainerId).offsetWidth;
JBSPopup.setVisibility(false);
JBSPopup.top = top;
JBSPopup.left = left;
// adjust if scrolling/window position a problem
if( (JBSPopup.top + h) > ( f_clientHeight() + f_scrollTop() )) {
JBSPopup.top = ( f_clientHeight() + f_scrollTop() ) - h;
}
if( (JBSPopup.left + w) > ( f_clientWidth() + f_scrollLeft() )) {
JBSPopup.left = ( f_clientWidth() + f_scrollLeft() ) - w;
}
ProductPop.logit(JBSPopup.top);
ProductPop.logit("left=" + JBSPopup.left);
JBSPopup.moveWithIFrameUnderBuffer(JBSPopup.left,JBSPopup.top,w,h,20,0,5,10);
JBSPopup.setVisibility(true);
document.getElementById(ProductPop.contentContainerId).onmouseout = ProductPop.mouseOutCheck;
ProductPop.activeTarget.onmouseout = ProductPop.mouseOutCheck;
}
} catch (e) {
ProductPop.logit("error showCallback:" + e.message);
}
},
mouseOutCheck: function(evt) {
try {
var current, related;
if (window.event && document.all) {
current = this;
related = window.event.toElement;
} else {
current = evt.currentTarget;
related = evt.relatedTarget;
}
if(related == ProductPop.activeTarget || related == document.getElementById(ProductPop.contentContainerId) || ProductPop.contains(ProductPop.activeTarget,related) || ProductPop.contains(document.getElementById(ProductPop.contentContainerId),related) ) {
} else {
ProductPop.cancelShow(null);
JBSPopup.hide();
}
} catch(e) {
ProductPop.logit("mouseOutCheckException: " + e);
}
},
contains: function(a, b) {
// Return true if node a contains node b.
while (b.parentNode)
if ((b = b.parentNode) == a)
return true;
return false;
},
logit: function(msg) {
//populate in debug
//document.getElementById("logme").innerHTML += msg;
}
};
function f_clientWidth() {
return f_filterResults (
window.innerWidth ? window.innerWidth : 0,
document.documentElement ? document.documentElement.clientWidth : 0,
document.body ? document.body.clientWidth : 0
);
}
function f_clientHeight() {
return f_filterResults (
window.innerHeight ? window.innerHeight : 0,
document.documentElement ? document.documentElement.clientHeight : 0,
document.body ? document.body.clientHeight : 0
);
}
function f_scrollLeft() {
return f_filterResults (
window.pageXOffset ? window.pageXOffset : 0,
document.documentElement ? document.documentElement.scrollLeft : 0,
document.body ? document.body.scrollLeft : 0
);
}
function f_scrollTop() {
return f_filterResults (
window.pageYOffset ? window.pageYOffset : 0,
document.documentElement ? document.documentElement.scrollTop : 0,
document.body ? document.body.scrollTop : 0
);
}
function f_filterResults(n_win, n_docel, n_body) {
var n_result = n_win ? n_win : 0;
if (n_docel && (!n_result || (n_result > n_docel)))
n_result = n_docel;
return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}
