var _____WB$wombat$assign$function_____ = function(name) {return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name)) || self[name]; }; if (!self.__WB_pmw) { self.__WB_pmw = function(obj) { this.__WB_source = obj; return this; } } { let window = _____WB$wombat$assign$function_____("window"); let self = _____WB$wombat$assign$function_____("self"); let document = _____WB$wombat$assign$function_____("document"); let location = _____WB$wombat$assign$function_____("location"); let top = _____WB$wombat$assign$function_____("top"); let parent = _____WB$wombat$assign$function_____("parent"); let frames = _____WB$wombat$assign$function_____("frames"); let opener = _____WB$wombat$assign$function_____("opener"); var trackbar = { archive : {}, getObject : function(id) { if (typeof this.archive[id] == "undefined") { this.archive[id] = new this.hotSearch(id); } return this.archive[id]; } }; trackbar.hotSearch = function(id) { // Constructor // Vars this.id = id; this.leftWidth = 0; // px this.rightWidth = 0; // px this.width = 0; // px this.intervalWidth = 0; // px this.leftLimit = 0; this.leftValue = 0; this.rightLimit = 0; this.rightValue = 0; this.valueInterval = 0; this.widthRem = 6; this.valueWidth = 0; this.roundUp = 0; this.x0 = 0; this.y0 = 0; this.blockX0 = 0; this.rightX0 = 0; this.leftX0 = 0; // Flags this.dual = true; this.moveState = false; this.moveIntervalState = false; this.debugMode = false; this.clearLimits = false; this.clearValues = false; this.nodeInit = false; // Handlers this.onMove = null; // Nodes this.leftBlock = null; this.rightBlock = null; this.leftBegun = null; this.rightBegun = null; this.centerBlock = null; this.itWasMove = false; } trackbar.hotSearch.prototype = { // Const /* WHAT IS IT??? IE does not work with it ERRORS : { 1 : "Ошибка при инициализации объекта", 2 : "Левый бегунок не найден", 3 : "Правый бегунок не найден", 4 : "Левая область ресайза не найдена", 5 : "Правая область ресайза не найдена", 6 : "Не задана ширина области бегунка", 7 : "Не указано максимальное изменяемое значение", 8 : "Не указана функция-обработчик значений", 9 : "Не указана область клика" }, */ LEFT_BLOCK_PREFIX : "leftBlock_", RIGHT_BLOCK_PREFIX : "rightBlock_", LEFT_BEGUN_PREFIX : "leftBegun_", RIGHT_BEGUN_PREFIX : "rightBegun_", CENTER_BLOCK_PREFIX : "centerBlock_", // Methods // Default gebi : function(id) { return document.getElementById(id); }, addHandler : function(object, event, handler, useCapture) { if (object.addEventListener) { object.addEventListener(event, handler, useCapture ? useCapture : false); } else if (object.attachEvent) { object.attachEvent('on' + event, handler); } else alert(this.errorArray[9]); }, defPosition : function(event) { var x = y = 0; if (document.attachEvent != null) { x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft; y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop; } if (!document.attachEvent && document.addEventListener) { // Gecko x = event.clientX + window.scrollX; y = event.clientY + window.scrollY; } return {x:x, y:y}; }, absPosition : function(obj) { var x = y = 0; while(obj) { x += obj.offsetLeft; y += obj.offsetTop; obj = obj.offsetParent; } return {x:x, y:y}; }, /* Method domReady - Copyright http://ajaxian.com/ More fun with DOMContentLoaded http://ajaxian.com/archives/more-fun-with-domcontentloaded */ domReady : function(i) { var u =navigator.userAgent; var e=/*@cc_on!@*/false; var st = setTimeout; if (/webkit/i.test(u)) { st( function() { var dr=document.readyState; if(dr=="loaded"||dr=="complete"){ i() } else { st(arguments.callee,10); } }, 10 ); } else if ((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))) { document.addEventListener("DOMContentLoaded", i, false); } else if (e) {( function(){ var t=document.createElement('doc:rdy'); try { t.doScroll('left'); i(); t=null; } catch(e) { st(arguments.callee,0); } })(); } else { window.onload=i; } }, // Common debug : function(keys) { if (!this.debugMode) return; var mes = ""; for (var i = 0; i < keys.length; i++) mes += this.ERRORS[keys[i]] + " : "; mes = mes.substring(0, mes.length - 3); alert(mes); }, init : function(hash, node) { if (typeof node != "undefined" && !this.nodeInit) { this.nodeInit = true; var _this = this; this.domReady( function() {_this.init(hash, node)} ); return; } if (typeof node == "string") node = this.gebi(node); else node = false; try { this.dual = typeof hash.dual != "undefined" ? !!hash.dual : this.dual; this.leftLimit = hash.leftLimit || this.leftLimit; this.rightLimit = hash.rightLimit || this.rightLimit; this.width = hash.width || this.width; this.onMove = hash.onMove || this.onMove; this.clearLimits = hash.clearLimits || this.clearLimits; this.clearValues = hash.clearValues || this.clearValues; this.roundUp = hash.roundUp || this.roundUp; // HTML Write var code = '\ \
\ \
\ \ '; if (node) node.innerHTML = code; else document.write(code) // Is all right? if (this.onMove == null) { this.debug([1,8]); return; } // --- this.leftBegun = this.gebi(this.LEFT_BEGUN_PREFIX + this.id); if (this.leftBegun == null) { this.debug([1,2]); return; } this.rightBegun = this.gebi(this.RIGHT_BEGUN_PREFIX + this.id); if (this.rightBegun == null) { this.debug([1,3]); return; } this.leftBlock = this.gebi(this.LEFT_BLOCK_PREFIX + this.id); if (this.leftBlock == null) { this.debug([1,4]); return; } this.rightBlock = this.gebi(this.RIGHT_BLOCK_PREFIX + this.id); if (this.rightBlock == null) { this.debug([1,5]); return; } this.centerBlock = this.gebi(this.CENTER_BLOCK_PREFIX + this.id); if (this.centerBlock == null) { this.debug([1,9]); return; } // --- if (!this.width) { this.debug([1,6]); return; } if (!this.rightLimit) { this.debug([1,7]); return; } // Set default this.valueWidth = this.width - 2 * this.widthRem; this.rightValue = hash.rightValue || this.rightLimit; this.leftValue = hash.leftValue || this.leftLimit; if (!this.dual) this.rightValue = this.leftValue; this.valueInterval = this.rightLimit - this.leftLimit; this.leftWidth = parseInt((this.leftValue - this.leftLimit) / this.valueInterval * this.valueWidth) + this.widthRem; this.rightWidth = this.valueWidth - parseInt((this.rightValue - this.leftLimit) / this.valueInterval * this.valueWidth) + this.widthRem; // Set limits if (!this.clearLimits) { this.leftBlock.firstChild.nextSibling.innerHTML = this.leftLimit; this.rightBlock.firstChild.nextSibling.innerHTML = this.rightLimit; } // Do it! this.setCurrentState(); this.onMove(); // Add handers var _this = this; this.addHandler ( document, "mousemove", function(evt) { if (_this.moveState) _this.moveHandler(evt); if (_this.moveIntervalState) _this.moveIntervalHandler(evt); } ); this.addHandler ( document, "mouseup", function() { _this.moveState = false; _this.moveIntervalState = false; } ); this.addHandler ( this.leftBegun, "mousedown", function(evt) { evt = evt || window.event; if (evt.preventDefault) evt.preventDefault(); evt.returnValue = false; _this.moveState = "left"; _this.x0 = _this.defPosition(evt).x; _this.blockX0 = _this.leftWidth; } ); this.addHandler ( this.rightBegun, "mousedown", function(evt) { evt = evt || window.event; if (evt.preventDefault) evt.preventDefault(); evt.returnValue = false; _this.moveState = "right"; _this.x0 = _this.defPosition(evt).x; _this.blockX0 = _this.rightWidth; } ); this.addHandler ( this.centerBlock, "mousedown", function(evt) { evt = evt || window.event; if (evt.preventDefault) evt.preventDefault(); evt.returnValue = false; _this.moveIntervalState = true; _this.intervalWidth = _this.width - _this.rightWidth - _this.leftWidth; _this.x0 = _this.defPosition(evt).x; _this.rightX0 = _this.rightWidth; _this.leftX0 = _this.leftWidth; } ), this.addHandler ( this.centerBlock, "click", function(evt) { if (!_this.itWasMove) _this.clickMove(evt); _this.itWasMove = false; } ); this.addHandler ( this.leftBlock, "click", function(evt) { if (!_this.itWasMove)_this.clickMoveLeft(evt); _this.itWasMove = false; } ); this.addHandler ( this.rightBlock, "click", function(evt) { if (!_this.itWasMove)_this.clickMoveRight(evt); _this.itWasMove = false; } ); } catch(e) {this.debug([1]);} }, clickMoveRight : function(evt) { evt = evt || window.event; if (evt.preventDefault) evt.preventDefault(); evt.returnValue = false; var x = this.defPosition(evt).x - this.absPosition(this.rightBlock).x; var w = this.rightBlock.offsetWidth; if (x <= 0 || w <= 0 || w < x || (w - x) < this.widthRem) return; this.rightWidth = (w - x); this.rightCounter(); this.setCurrentState(); this.onMove(); }, clickMoveLeft : function(evt) { evt = evt || window.event; if (evt.preventDefault) evt.preventDefault(); evt.returnValue = false; var x = this.defPosition(evt).x - this.absPosition(this.leftBlock).x; var w = this.leftBlock.offsetWidth; if (x <= 0 || w <= 0 || w < x || x < this.widthRem) return; this.leftWidth = x; this.leftCounter(); this.setCurrentState(); this.onMove(); }, clickMove : function(evt) { evt = evt || window.event; if (evt.preventDefault) evt.preventDefault(); evt.returnValue = false; var x = this.defPosition(evt).x - this.absPosition(this.centerBlock).x; var w = this.centerBlock.offsetWidth; if (x <= 0 || w <= 0 || w < x) return; if (x >= w / 2) { this.rightWidth += (w - x); this.rightCounter(); } else { this.leftWidth += x; this.leftCounter(); } this.setCurrentState(); this.onMove(); }, setCurrentState : function() { this.leftBlock.style.width = this.leftWidth + "px"; if (!this.clearValues) this.leftBlock.firstChild.innerHTML = (!this.dual && this.leftWidth > this.width / 2) ? "" : this.leftValue; if(!this.dual) { var x = this.leftBlock.firstChild.offsetWidth; this.leftBlock.firstChild.style.right = (this.widthRem * (1 - 2 * (this.leftWidth - this.widthRem) / this.width) - ((this.leftWidth - this.widthRem) * x / this.width)) + 'px'; } this.rightBlock.style.width = this.rightWidth + "px"; if (!this.clearValues) this.rightBlock.firstChild.innerHTML = (!this.dual && this.rightWidth >= this.width / 2) ? "" : this.rightValue; if(!this.dual) { var x = this.rightBlock.firstChild.offsetWidth; this.rightBlock.firstChild.style.left = (this.widthRem * (1 - 2 * (this.rightWidth - this.widthRem) / this.width) - ((this.rightWidth - this.widthRem) * x / this.width)) + 'px'; } }, moveHandler : function(evt) { this.itWasMove = true; evt = evt || window.event; if (evt.preventDefault) evt.preventDefault(); evt.returnValue = false; if (this.moveState == "left") { this.leftWidth = this.blockX0 + this.defPosition(evt).x - this.x0; this.leftCounter(); } if (this.moveState == "right") { this.rightWidth = this.blockX0 + this.x0 - this.defPosition(evt).x; this.rightCounter(); } this.setCurrentState(); this.onMove(); }, moveIntervalHandler : function(evt) { this.itWasMove = true; evt = evt || window.event; if (evt.preventDefault) evt.preventDefault(); evt.returnValue = false; var dX = this.defPosition(evt).x - this.x0; if (dX > 0) { this.rightWidth = this.rightX0 - dX > this.widthRem ? this.rightX0 - dX : this.widthRem; this.leftWidth = this.width - this.rightWidth - this.intervalWidth; } else { this.leftWidth = this.leftX0 + dX > this.widthRem ? this.leftX0 + dX : this.widthRem; this.rightWidth = this.width - this.leftWidth - this.intervalWidth; } this.rightCounter(); this.leftCounter(); this.setCurrentState(); this.onMove(); }, updateRightValue : function(rightValue) { try { this.rightValue = parseInt(rightValue); this.rightValue = this.rightValue < this.leftLimit ? this.leftLimit : this.rightValue; this.rightValue = this.rightValue > this.rightLimit ? this.rightLimit : this.rightValue; if (this.dual) { this.rightValue = this.rightValue < this.leftValue ? this.leftValue : this.rightValue; } else this.leftValue = this.rightValue; this.rightWidth = this.valueWidth - parseInt((this.rightValue - this.leftLimit) / this.valueInterval * this.valueWidth) + this.widthRem; this.rightWidth = isNaN(this.rightWidth) ? this.widthRem : this.rightWidth; if (!this.dual) this.leftWidth = this.width - this.rightWidth; this.setCurrentState(); } catch(e) {} }, rightCounter : function() { if (this.dual) { this.rightWidth = this.rightWidth > this.width - this.leftWidth ? this.width - this.leftWidth : this.rightWidth; this.rightWidth = this.rightWidth < this.widthRem ? this.widthRem : this.rightWidth; this.rightValue = this.leftLimit + this.valueInterval - parseInt((this.rightWidth - this.widthRem) / this.valueWidth * this.valueInterval); if (this.roundUp) this.rightValue = parseInt(this.rightValue / this.roundUp) * this.roundUp; if (this.leftWidth + this.rightWidth >= this.width) this.rightValue = this.leftValue; } else { this.rightWidth = this.rightWidth > (this.width - this.widthRem) ? this.width - this.widthRem : this.rightWidth; this.rightWidth = this.rightWidth < this.widthRem ? this.widthRem : this.rightWidth; this.leftWidth = this.width - this.rightWidth; this.rightValue = this.leftLimit + this.valueInterval - parseInt((this.rightWidth - this.widthRem) / this.valueWidth * this.valueInterval); if (this.roundUp) this.rightValue = parseInt(this.rightValue / this.roundUp) * this.roundUp; this.leftValue = this.rightValue; } }, updateLeftValue : function(leftValue) { try { this.leftValue = parseInt(leftValue); this.leftValue = this.leftValue < this.leftLimit ? this.leftLimit : this.leftValue; this.leftValue = this.leftValue > this.rightLimit ? this.rightLimit : this.leftValue; if (this.dual) { this.leftValue = this.rightValue < this.leftValue ? this.rightValue : this.leftValue; } else this.rightValue = this.leftValue; this.leftWidth = parseInt((this.leftValue - this.leftLimit) / this.valueInterval * this.valueWidth) + this.widthRem; this.leftWidth = isNaN(this.leftWidth) ? this.widthRem : this.leftWidth; if (!this.dual) this.rightWidth = this.width - this.leftWidth; this.setCurrentState(); } catch(e) {} }, leftCounter : function() { if (this.dual) { this.leftWidth = this.leftWidth > this.width - this.rightWidth ? this.width - this.rightWidth : this.leftWidth; this.leftWidth = this.leftWidth < this.widthRem ? this.widthRem : this.leftWidth; this.leftValue = this.leftLimit + parseInt((this.leftWidth - this.widthRem) / this.valueWidth * this.valueInterval); if (this.roundUp) this.leftValue = parseInt(this.leftValue / this.roundUp) * this.roundUp; if (this.leftWidth + this.rightWidth >= this.width) this.leftValue = this.rightValue; } else { this.leftWidth = this.leftWidth > (this.width - this.widthRem) ? this.width - this.widthRem : this.leftWidth; this.leftWidth = this.leftWidth < this.widthRem ? this.widthRem : this.leftWidth; this.rightWidth = this.width - this.leftWidth; this.leftValue = this.leftLimit + parseInt((this.leftWidth - this.widthRem) / this.valueWidth * this.valueInterval); if (this.roundUp) this.leftValue = parseInt(this.leftValue / this.roundUp) * this.roundUp; this.rightValue = this.leftValue; } } } } /* playback timings (ms): captures_list: 165.567 exclusion.robots: 0.122 exclusion.robots.policy: 0.115 RedisCDXSource: 4.565 esindex: 0.007 LoadShardBlock: 141.918 (3) PetaboxLoader3.datanode: 189.833 (5) CDXLines.iter: 16.466 (3) load_resource: 287.675 (2) PetaboxLoader3.resolve: 175.657 (2) */