function ynbm_json_decode(str_json) { var json = this.window.JSON; if (typeof json === 'object' && typeof json.parse === 'function') { try { return json.parse(str_json); } catch (err) { if (!(err instanceof SyntaxError)) { throw new Error('Unexpected error type in json_decode()'); } this.php_js = this.php_js || {}; this.php_js.last_error_json = 4; // usable by json_last_error() return null; } } var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; var j; var text = str_json; cx.lastIndex = 0; if (cx.test(text)) { text = text.replace(cx, function(a) { return '\\u' + ('0000' + a.charCodeAt(0) .toString(16)) .slice(-4); }); } if ((/^[\],:{}\s]*$/) .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { j = eval('(' + text + ')'); return j; } this.php_js = this.php_js || {}; this.php_js.last_error_json = 4; // usable by json_last_error() return null; } var ynbmboot = { pt : [] , site_link : '//shoppinginterest.com.au/' , isLogined : '0' , widthFilter : '20' , heightFilter : '20' , displayFilter : '100' , imageType : '["jpg","jpeg","gif","png"]' , lang : {} , setLang: function(key,value){ ynbmboot.lang[key] = value; } , getLang: function(key){ if (typeof ynbmboot.lang[key] != "undefined"){ return ynbmboot.lang[key]; } return key; } , parent : null , overlayContainer : null , PBDRContainer : null , PBDRS : null , PBFrame : null , PBIFS : null , PBStuff : { html : '', bmWidth : 980, bmIFWidth : 980, bmIFHeight: 680, bgHeaderImg: '', LogoImg: '', closeImg: '//shoppinginterest.com.au/module/ynbookmarkme/static/image/btn-bookmark-close.png', title: '', 'url': '', 'vendor': '', 'price': '', dummyEnd:"" } , getTop: function(top) { if (top < 0){ return 0; } var maxBottom = document.body.clientHeight - 140; return (top >= maxBottom) ? maxBottom : top; } , getLeft: function(left) { if (left < 0) { return 0; } var maxRight = document.body.clientWidth - ynbmboot.PBStuff.bmWidth - 10; return (left >= maxRight ) ? maxRight : left; } , getScrollOffsets: function(w) { // This code is from the book JavaScript: The Definitive Guide, 6th Edition (ISBN #978-0596805524). Copyright 2011 by David Flanagan. w = w || window; if (w.pageXOffset != null) { return {x: w.pageXOffset, y: w.pageYOffset}; } var d = w.document; if (document.compatMode == "CSS1Compat"){ return {x: d.documentElement.scrollLeft, y: d.documentElement.scrollTop}; } return { x: d.body.scrollLeft, y: d.body.scrollTop }; } , PBDrag: function(elementToDrag, event) { var scroll = ynbmboot.getScrollOffsets(); var startX = event.clientX + scroll.x; var startY = event.clientY + scroll.y; var origX = elementToDrag.offsetLeft; var origY = elementToDrag.offsetTop; var deltaX = startX - origX; var deltaY = startY - origY; if (document.addEventListener) { document.addEventListener("mousemove", moveHandler, true); document.addEventListener("mouseup", upHandler, true); } else if (document.attachEvent) { elementToDrag.setCapture(); elementToDrag.attachEvent("onmousemove", moveHandler); elementToDrag.attachEvent("onmouseup", upHandler); elementToDrag.attachEvent("onlosecapture", upHandler); } if (event.stopPropagation) event.stopPropagation(); else event.cancelBubble = true; if (event.preventDefault) event.preventDefault(); else event.returnValue = false; function moveHandler(e) { if (!e) e = window.event; var scroll = ynbmboot.getScrollOffsets(); elementToDrag.style.left = ynbmboot.getLeft(e.clientX + scroll.x - deltaX,true) + "px"; elementToDrag.style.top = ynbmboot.getTop(e.clientY + scroll.y - deltaY,true) + "px"; if (e.stopPropagation) e.stopPropagation(); else e.cancelBubble = true; }; function upHandler(e) { if (!e) e = window.event; if (document.removeEventListener) { document.removeEventListener("mouseup", upHandler, true); document.removeEventListener("mousemove", moveHandler, true); } else if (document.detachEvent) { elementToDrag.detachEvent("onlosecapture", upHandler); elementToDrag.detachEvent("onmouseup", upHandler); elementToDrag.detachEvent("onmousemove", moveHandler); elementToDrag.releaseCapture(); } if (e.stopPropagation) e.stopPropagation(); else e.cancelBubble = true; }; } , createHtmlPBStuff: function() { var arrImages = document.images; var existImages = new Array(); var resultImages = new Array(); var count = 0; for(var i=0; i < arrImages.length; i++) { if(count == ynbmboot.displayFilter){ break; } var img = new Image(); img.src = arrImages[i].src; if(img.width > ynbmboot.widthFilter && img.height > ynbmboot.heightFilter) { var tmpExt = img.src.split('.').pop(); var isChoose = false; if(tmpExt.length > 0 || ynbmboot.imageType.indexOf(tmpExt) >= 0 ){ // push general image type or security image source isChoose = true; } if(isChoose) { if(existImages.indexOf(img.src) == -1 && img.src.indexOf("data:") == -1) { var obj = { src : arrImages[i].src, alt : arrImages[i].alt, title : arrImages[i].title, width : arrImages[i].width, height : arrImages[i].height, real_width : img.width, real_height : img.height } resultImages.push(obj); count ++; existImages.push(img.src); } } } } ynbmboot.PBStuff.resultImages = resultImages; ynbmboot.PBStuff.html = ''; } , removeContainer: function() { var cont = window.document.getElementById('PBDRContainer'); if(undefined != cont && null != cont){ cont.parentNode.removeChild(cont); } var cont2 = window.document.getElementById('overlayContainer'); if(undefined != cont2 && null != cont2){ cont2.parentNode.removeChild(cont2); } } , createOverlayContainer: function(){ ynbmboot.overlayContainer = document.getElementById('overlayContainer'); if (ynbmboot.overlayContainer == null) { ynbmboot.overlayContainer = document.createElement("div"); ynbmboot.overlayContainer.id = "overlayContainer"; document.body.appendChild(ynbmboot.overlayContainer); } } , createPBDRContainer: function(){ ynbmboot.PBDRContainer = document.getElementById('PBDRContainer'); if (ynbmboot.PBDRContainer == null) { ynbmboot.PBDRContainer = document.createElement("div"); ynbmboot.PBDRContainer.id = "PBDRContainer"; document.body.appendChild(ynbmboot.PBDRContainer); } ynbmboot.PBDRS = ynbmboot.PBDRContainer.style; ynbmboot.PBDRS.width = ynbmboot.PBStuff.bmWidth+"px"; ynbmboot.PBDRS.height="auto"; ynbmboot.PBDRS.position='absolute'; ynbmboot.PBDRS.zIndex=99999; ynbmboot.PBDRS.border='2px solid #ABABAB'; ynbmboot.PBDRS.top='60px'; ynbmboot.PBDRS.left='50%'; ynbmboot.PBDRS.marginLeft='-490px'; ynbmboot.PBDRContainer.innerHTML='