var httpbase = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'www.bookschina.co.uk';
function CartAnalysis() {
var reg = /product\/[^_\/]*_(\d+)\.s?html/ig
var map_element = {};
var element_obj = [];
var download_count = 0;
var last_offset = -1;
var doc_body;
var doc_element;
var ua = navigator.userAgent.toLowerCase();
var searchId, openId;
function initVar() {
doc_body = document.body;
doc_element = document.compatMode == 'BackCompat' ? doc_body : document.documentElement;
};
function initElementMap() {
var products = jQuery("body").html().match(reg);
if (products != null) {
var hreflist={}
for ( var i = 0; i < products.length; i++) {
href=products[i];
if (hreflist[href] != null) {
continue;
}
var oo = $("a[href*='"+href+"']");
if (oo.length>0 && oo.find("img").length>0) {
hreflist[href] = 1;
map_element[i] = oo[0];
download_count++;
}
}
}
}
;
function initDownloadListen() {
if (!download_count)
return;
var offset = Math.max(document.body.scrollTop, document.documentElement.scrollTop);
var visio_offset = offset + doc_element.clientHeight;
last_offset = visio_offset;
var visio_height = doc_element.clientHeight;
var img_show_height = visio_height + offset;
var productIds = "";
for (var key in map_element) {
var t_o = map_element[key];
if ($(t_o).is(":hidden")) {
continue;
}
var o_img = $(t_o).find("img")[0];
var o_top = getAbsoluteTop(o_img)
if (img_show_height > o_top) {
var href = t_o.getAttribute("href");
var pid = href.replace(/^.*?_(\d+).html/ig, "$1");
productIds += pid + ","
delete map_element[key];
download_count--;
}
}
if (productIds.length > 0) {
saveProductShow(productIds);
}
var elementEmpty = true;
for (var key in map_element) {
elementEmpty = false;
break;
}
if (!elementEmpty) {
setTimeout(initDownloadListen, 200);
}
}
;
function getAbsoluteTop(element) {
if (arguments.length != 1 || element == null) {
return null;
}
var offsetTop = element.offsetTop;
while (element = element.offsetParent) {
offsetTop += element.offsetTop;
}
return offsetTop;
}
function initProductShow() {
initVar();
initElementMap();
setTimeout(initDownloadListen, 1000);
}
function saveVisit() {
var params = {};
if (document) {
params.domain = document.domain || '';
params.url = document.URL || '';
params.title = document.title || '';
params.referrer = document.referrer || '';
}
if (window && window.screen) {
params.sh = window.screen.height || 0;
params.sw = window.screen.width || 0;
params.cd = window.screen.colorDepth || 0;
}
if (navigator) {
params.lang = navigator.language || '';
}
if (_fdq) {
for ( var i in _fdq) {
switch (_fdq[i][0]) {
case '_setAccount':
params.account = _fdq[i][1];
break;
default:
break;
}
}
}
if (typeof (cartAnalysisSaveProduct) != "undefined"
&& cartAnalysisSaveProduct != null) {
params.saveProduct = cartAnalysisSaveProduct;
params.productId = cartAnalysisSaveProduct.productId;
}
if (typeof (cartAnalysisSaveOrder) != "undefined"
&& cartAnalysisSaveOrder != null) {
params.saveOrder = cartAnalysisSaveOrder.ordersinfo;
}
// search
if (typeof (cartAnalysisSaveSearch) != "undefined"
&& cartAnalysisSaveSearch != null) {
params.saveSearch = cartAnalysisSaveSearch;
}
if (typeof (cartAnalysisSaveRegist) != "undefined"
&& cartAnalysisSaveRegist != null) {
params.registerId = cartAnalysisSaveRegist.userId;
}
if (typeof (cartAnalysisSaveBuyer) != "undefined"
&& cartAnalysisSaveBuyer != null) {
params.buyerId = cartAnalysisSaveBuyer.buyerId;
}
if (typeof (cartAnalysisSaveStore) != "undefined"
&& cartAnalysisSaveStore != null) {
params.storeId = cartAnalysisSaveStore.storeId;
if (cartAnalysisSaveStore.pageIndex != null) {
params.pageIndex = cartAnalysisSaveStore.pageIndex;
}
}
jQuery.getJSON(httpbase + "/stat/action/statistics.VisitStatAction?"
+ Math.random() + "&jsoncallback=?", params, function(data) {
searchId = data.result;
openId = data.openId;
initProductShow();
});
}
function clickProd(productId, p) {
if (searchId == 0) {
return;
}
var params = "?url=" + encodeURIComponent(document.location);
params = params + "&sid=" + searchId + "&productId=" + productId + "&p=" + p;
var url = httpbase + "/stat/action/statistics.ClickSearchProductAction";
jQuery.getScript(url + params + "&r=" + Math.random());
}
function visitLogin(userId) {
var params = "?referer=" + encodeURIComponent(document.referrer)
+ "&url=" + encodeURIComponent(document.location) + "&userId="
+ userId;
var url = httpbase + "/stat/action/statistics.SaveBuyerStatAction";
jQuery.getScript(url + params + "&r=" + Math.random());
}
function visitRegister(userId) {
var params = "?referer=" + encodeURIComponent(document.referrer)
+ "&url=" + encodeURIComponent(document.location) + "®User="
+ userId;
var url = httpbase + "/stat/action/statistics.SaveBuyerStatAction";
jQuery.getScript(url + params + "&r=" + Math.random());
}
function saveSearch(keywords, pageSize, pageIndex, resultCount) {
var params = "?url=" + encodeURIComponent(document.location);
params = params + "&keywords=" + encodeURIComponent(keywords);
params = params + "&pageSize=" + encodeURIComponent(pageSize);
params = params + "&pageIndex=" + encodeURIComponent(pageIndex);
params = params + "&resultCount=" + encodeURIComponent(resultCount);
var url = httpbase + "/stat/action/statistics.SaveSearchAction"
+ params + "&r=" + Math.random();
jQuery.getScript(url);
}
function saveOrder(ordersinfo, cb) {
var params = "?url=" + encodeURIComponent(document.location);
params = params + "&ordersinfo=" + encodeURIComponent(ordersinfo);
var url = httpbase + "/stat/action/statistics.OrderStatAction";
var cb = cb || function() {
};
jQuery.getScript(url + params + "&r=" + Math.random(), cb);
}
function saveProduct(productIds, cart) {
var params = "?url=" + encodeURIComponent(document.location);
params = params + "&productIds=" + productIds + "&cart=" + cart;
var url = httpbase + "/stat/action/statistics.ProductStatAction";
jQuery.getScript(url + params + "&r=" + Math.random());
}
function saveProductShow(productIds) {
var params = "?url=" + encodeURIComponent(document.location);
params = params + "&productIds=" + productIds + "&openId=" + openId;
var url = httpbase + "/stat/action/statistics.SaveProductShowAction";
jQuery.getScript(url + params + "&r=" + Math.random());
}
return {
clickProd : clickProd,
visitLogin : visitLogin,
visitRegister : visitRegister,
saveProductShow : saveProductShow,
saveVisit : saveVisit
}
}
var cartAnalysis = new CartAnalysis();
jQuery("document").ready(function() {
cartAnalysis.saveVisit()
});
function clickProd(productId, p) {
cartAnalysis.clickProd(productId, p);
}