/*
* jQuery ifixpng plugin
* (previously known as pngfix)
* Version 2.1 (23/04/2008)
* @requires jQuery v1.1.3 or above
*
* Examples at: http://jquery.khurshid.com
* Copyright (c) 2007 Kush M.
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
/**
*
* @example
*
* optional if location of pixel.gif if different to default which is images/pixel.gif
* $.ifixpng('media/pixel.gif');
*
* $('img[@src$=.png], #panel').ifixpng();
*
* @apply hack to all png images and #panel which icluded png img in its css
*
* @name ifixpng
* @type jQuery
* @cat Plugins/Image
* @return jQuery
* @author jQuery Community
*/
(function($) {
/**
* helper variables and function
*/
$.ifixpng = function(customPixel) {
$.ifixpng.pixel = customPixel;
};
$.ifixpng.getPixel = function() {
return $.ifixpng.pixel || '/images/blank.gif';
};
var hack = {
ltie7 : $.browser.msie && $.browser.version < 7,
filter : function(src) {
return "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='"+src+"')";
}
};
/**
* Applies ie png hack to selected dom elements
*
* $('img[@src$=.png]').ifixpng();
* @desc apply hack to all images with png extensions
*
* $('#panel, img[@src$=.png]').ifixpng();
* @desc apply hack to element #panel and all images with png extensions
*
* @name ifixpng
*/
$.fn.ifixpng = hack.ltie7 ? function() {
return this.each(function() {
var $$ = $(this);
// in case rewriting urls
var base = $('base').attr('href');
if (base) {
// remove anything after the last '/'
base = base.replace(/\/[^\/]+$/,'/');
}
if ($$.is('img') || $$.is('input')) { // hack image tags present in dom
if ($$.attr('src')) {
if ($$.attr('src').match(/.*\.png([?].*)?$/i)) { // make sure it is png image
// use source tag value if set
var source = (base && $$.attr('src').search(/^(\/|http:)/i)) ? base + $$.attr('src') : $$.attr('src');
// apply filter
$$.css({filter:hack.filter(source), width:$$.width(), height:$$.height()})
.attr({src:$.ifixpng.getPixel()})
.positionFix();
}
}
} else { // hack png css properties present inside css
var image = $$.css('backgroundImage');
if (image.match(/^url\(["']?(.*\.png([?].*)?)["']?\)$/i)) {
image = RegExp.$1;
image = (base && image.substring(0,1)!='/') ? base + image : image;
$$.css({backgroundImage:'none', filter:hack.filter(image)})
.children().children().positionFix();
}
}
});
} : function() { return this; };
/**
* Removes any png hack that may have been applied previously
*
* $('img[@src$=.png]').iunfixpng();
* @desc revert hack on all images with png extensions
*
* $('#panel, img[@src$=.png]').iunfixpng();
* @desc revert hack on element #panel and all images with png extensions
*
* @name iunfixpng
*/
$.fn.iunfixpng = hack.ltie7 ? function() {
return this.each(function() {
var $$ = $(this);
var src = $$.css('filter');
if (src.match(/src=["']?(.*\.png([?].*)?)["']?/i)) { // get img source from filter
src = RegExp.$1;
if ($$.is('img') || $$.is('input')) {
$$.attr({src:src}).css({filter:''});
} else {
$$.css({filter:'', background:'url('+src+')'});
}
}
});
} : function() { return this; };
/**
* positions selected item relatively
*/
$.fn.positionFix = function() {
return this.each(function() {
var $$ = $(this);
var position = $$.css('position');
if (position != 'absolute' && position != 'relative') {
//$$.css({position:'relative'});
}
});
};
})(jQuery);
$(document).ready(function(){
$('.header-logo a img, .header-heroes .pic, .header-heroes .links a img').ifixpng();
if(function_exists("onready")) onready();
var status = getCookie('div_consultant');
if (status == 0)
$('#div_consultant').toggleClass('oc-hidden');
//else $('#div_consultant').toggleClass('oc-hidden');
$('#oc-toggler').click(function(){
$('#div_consultant').toggleClass('oc-hidden');
if (status==0) setCookie('div_consultant', '1');
else setCookie('div_consultant', '0');
return false;
});
});
function is_numeric( mixed_var ) {
return !isNaN(mixed_var * 1);
}
function is_int(val) {
return (parseFloat(val) == parseInt(val)) && !isNaN(parseInt(val))
}
function function_exists( function_name ) { // Return TRUE if the given function has been defined
if (typeof function_name == 'string'){
return (typeof window[function_name] == 'function');
} else{
return (function_name instanceof Function);
}
}
function openChat() {
o=window.open;
o('https://siteheart.com/webconsultation/37854?s=1', 'siteheart_sitewindow_37854', 'width=550,height=400,top=30,left=30,resizable=yes');
return false;
}
function setCookie(key, value) {
var expires = new Date();
expires.setTime(expires.getTime() + 31536000000); //1 year
document.cookie = key + '=' + value + ';expires=' + expires.toUTCString();
}
function getCookie(key) {
var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)');
return keyValue ? keyValue[2] : null;
}/***************************************************************
* FC-TrackBar
*
* Copyright (C) 2008 by Alexander Burtsev - fastcoder.org
* and abarmot - http://abarmot.habrahabr.ru/
* and 1602 - http://1602.habrahabr.ru/
* designed by Svetlana Solov'eva - http://avis-solo.blogspot.com/
*
* This code is a public domain.
***************************************************************/
$.fn.trackbar = function(op, id){
op = $.extend({
onMove: function(){},
dual: true,
width: 100, // px
leftLimit: 0, // unit of value
leftValue: 0, // unit of value
rightLimit: 100, // unit of value
rightValue: 100, // unit of value
//roundUp: 50, // unit of value
jq: this
},op);
$.trackbar.getObject(id).init(op);
}
$.trackbar = { // NAMESPACE
archive : [],
getObject : function(id) {
if(typeof id == 'undefined')id = this.archive.length;
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 = true;
this.clearLimits = false;
this.clearValues = false;
this.itWasMove = false;
// Handlers
this.onMove = null;
// Nodes
this.leftBlock = null;
this.rightBlock = null;
this.leftBegun = null;
this.rightBegun = null;
this.centerBlock = null;
this.tickDiv = null;
this.table = null;
}
$.trackbar.hotSearch.prototype = {
// Const
ERRORS : {
1 : "Object initialization error",
2 : "Left slider was not found",
3 : "Right slider was not found",
4 : "Left resize area was not found",
5 : "Right resize area was not found",
9 : "Center click area was not found"
},
LEFT_BLOCK_PREFIX : "leftBlock",
RIGHT_BLOCK_PREFIX : "rightBlock",
LEFT_BEGUN_PREFIX : "leftBegun",
RIGHT_BEGUN_PREFIX : "rightBegun",
CENTER_BLOCK_PREFIX : "centerBlock",
TABLE_PREFIX : "fctable_",
TICKDIV_PREFIX : "tickdiv_",
// Methods
// Default
gebi : function(id) {
return this.jq.find('#'+id)[0];
},
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};
},
// 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) {
try {
for (var i in hash) this[i] = hash[i];
//
if (this.leftValue < this.leftLimit) this.leftValue = this.leftLimit;
if (this.rightValue > this.rightLimit) this.rightValue = this.rightLimit;
// HTML Write
this.jq.html('
');
// Is all right?
if (this.onMove == null) {
this.debug([1,8]);
return;
}
// ---
this.leftBegun = this.gebi(this.LEFT_BEGUN_PREFIX);
if (this.leftBegun == null) {this.debug([1,2]); return;}
this.rightBegun = this.gebi(this.RIGHT_BEGUN_PREFIX);
if (this.rightBegun == null) {this.debug([1,3]); return;}
this.leftBlock = this.gebi(this.LEFT_BLOCK_PREFIX);
if (this.leftBlock == null) {this.debug([1,4]); return;}
this.rightBlock = this.gebi(this.RIGHT_BLOCK_PREFIX);
if (this.rightBlock == null) {this.debug([1,5]); return;}
this.centerBlock = this.gebi(this.CENTER_BLOCK_PREFIX);
if (this.centerBlock == null) {this.debug([1,9]); return;}
this.table = this.gebi(this.TABLE_PREFIX + this.id);
this.tickDiv = this.gebi(this.TICKDIV_PREFIX + this.id);
// 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.drawTicks();
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]);}
},
drawTicks : function() {
step=50;
if (this.showBigTicks) for (var i = 1; i <= this.bigTicks-1; i++) {
a=this.widthRem + i * this.valueWidth / (this.bigTicks + 1);
//alert(this.widthRem); //6
//alert(this.valueWidth); //428
//alert(this.bigTicks); //5
//alert(a); //76.6
//a=this.widthRem+this.valueWidth*step*i/250-25;
a=this.widthRem + this.valueWidth*(step*i - this.leftValue)/(this.rightLimit-this.leftLimit);
//alert(a);
b=this.leftLimit + i * this.valueInterval/ (this.bigTicks + 1);
b=i*step;
this.tickDiv.innerHTML += '' + parseInt(b) + '
';
}
if (this.showSmallTicks) for (i = 1; i <= (this.smallTicks + 1) * (this.bigTicks + 1) - 3; i++) {
step=25;
if (i%2==0) continue;
a=(this.widthRem + i * this.valueWidth / ((this.smallTicks + 1) * (this.bigTicks + 1)));
a=this.widthRem + this.valueWidth*(step*i - this.leftValue)/(this.rightLimit-this.leftLimit);
this.tickDiv.innerHTML += '';
}
},
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';
}
//this.leftValue=this.leftValue/2;
},
/* OLD setCurrentState : function() {
this.leftBlock.style.width = this.leftWidth + "px";
this.leftBlock.firstChild.innerHTML = (!this.dual && this.leftWidth > this.width / 2) ? "" : this.leftValue;
this.rightBlock.style.width = this.rightWidth + "px";
this.rightBlock.firstChild.innerHTML = (!this.dual && this.rightWidth >= this.width / 2) ? "" : this.rightValue;
},*/
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;
}
}
}