(function() {
(function($) {
var i, numberPolyfill;
i = document.createElement("input");
i.setAttribute("type", "number");
if (i.type === "text") {
$.fn.inputNumber = function() {
$(this).filter(function() {
var $this;
$this = $(this);
return $this.is('input[type="number"]') && !($this.parent().is("span") && $this.next().is("div.number-spin-btn-container") && $this.next().children().first().is("div.number-spin-btn-up") && $this.next().children().eq(1).is("div.number-spin-btn-down"));
}).each(function() {
numberPolyfill.polyfills.push(new numberPolyfill(this));
});
return $(this);
};
numberPolyfill = function(elem) {
var $fieldContainer, MutationObserver, attrObserver, halfHeight,
_this = this;
this.elem = $(elem);
if (!(this.elem.is(":root *") && this.elem.height() > 0)) {
throw new Error("Element must be in DOM and displayed so that its height can be measured.");
}
halfHeight = (this.elem.outerHeight() / 2) + 'px';
this.upBtn = $('
', {
"class": 'number-spin-btn number-spin-btn-up',
style: "height: " + halfHeight
});
this.downBtn = $('', {
"class": 'number-spin-btn number-spin-btn-down',
style: "height: " + halfHeight
});
this.btnContainer = $('', {
"class": 'number-spin-btn-container'
});
$fieldContainer = $('', {
style: "white-space: nowrap"
});
this.upBtn.appendTo(this.btnContainer);
this.downBtn.appendTo(this.btnContainer);
this.elem.wrap($fieldContainer);
this.btnContainer.insertAfter(this.elem);
this.elem.on({
focus: function(e) {
_this.elem.on({
DOMMouseScroll: numberPolyfill.domMouseScrollHandler,
mousewheel: numberPolyfill.mouseWheelHandler
}, {
p: _this
});
},
blur: function(e) {
_this.elem.off({
DOMMouseScroll: numberPolyfill.domMouseScrollHandler,
mousewheel: numberPolyfill.mouseWheelHandler
});
}
});
this.elem.on({
keypress: numberPolyfill.elemKeypressHandler,
change: numberPolyfill.elemChangeHandler
}, {
p: this
});
this.upBtn.on("mousedown", {
p: this,
func: "increment"
}, numberPolyfill.elemBtnMousedownHandler);
this.downBtn.on("mousedown", {
p: this,
func: "decrement"
}, numberPolyfill.elemBtnMousedownHandler);
this.elem.css("textAlign", 'right');
this.attrMutationHandler("class");
if ((typeof WebKitMutationObserver !== "undefined" && WebKitMutationObserver !== null) || (typeof MutationObserver !== "undefined" && MutationObserver !== null)) {
if ((typeof WebKitMutationObserver !== "undefined" && WebKitMutationObserver !== null) && (typeof MutationObserver === "undefined" || MutationObserver === null)) {
MutationObserver = WebKitMutationObserver;
}
attrObserver = new MutationObserver(function(mutations, observer) {
var mutation, _i, _len;
for (_i = 0, _len = mutations.length; _i < _len; _i++) {
mutation = mutations[_i];
if (mutation.type === "attributes") {
_this.attrMutationHandler(mutation.attributeName, mutation.oldValue, _this.elem.attr(mutation.attributeName));
}
}
});
attrObserver.observe(elem, {
attributes: true,
attributeOldValue: true,
attributeFilter: ["class", "style", "min", "max", "step"]
});
} else if (typeof MutationEvent !== "undefined" && MutationEvent !== null) {
this.elem.on("DOMAttrModified", function(evt) {
_this.attrMutationHandler(evt.originalEvent.attrName, evt.originalEvent.prevValue, evt.originalEvent.newValue);
});
}
};
numberPolyfill.polyfills = [];
numberPolyfill.isNumber = function(input) {
if ((input != null) && typeof input.toString === "function") {
return /^-?\d+(?:\.\d+)?$/.test(input.toString());
} else {
return false;
}
};
numberPolyfill.isFloat = function(input) {
if ((input != null) && typeof input.toString === "function") {
return /^-?\d+\.\d+$/.test(input.toString());
} else {
return false;
}
};
numberPolyfill.isInt = function(input) {
if ((input != null) && typeof input.toString === "function") {
return /^-?\d+$/.test(input.toString());
} else {
return false;
}
};
numberPolyfill.isNegative = function(input) {
if ((input != null) && typeof input.toString === "function") {
return /^-\d+(?:\.\d+)?$/.test(input.toString());
} else {
return false;
}
};
numberPolyfill.raiseNum = function(num) {
var a, numi, nump;
if (typeof num === "number" || (typeof num === "object" && num instanceof Number)) {
if (num % 1) {
return {
num: num.toString(),
precision: 0
};
} else {
return numberPolyfill.raiseNum(num.toString());
}
} else if (typeof num === "string" || (typeof num === "object" && num instanceof String)) {
if (numberPolyfill.isFloat(num)) {
num = num.replace(/(\.\d)0+$/, "$1");
nump = numberPolyfill.getPrecision(num);
numi = num.slice(0, -(nump + 1)) + num.slice(-nump);
numi = numi.replace(/^(-?)0+(\d+)/, "$1$2");
a = {
num: numi,
precision: nump
};
return a;
} else if (numberPolyfill.isInt(num)) {
return {
num: num,
precision: 0
};
}
}
};
numberPolyfill.raiseNumPrecision = function(rNum, newPrecision) {
var _i, _ref;
if (rNum.precision < newPrecision) {
for (i = _i = _ref = rNum.precision; _ref <= newPrecision ? _i < newPrecision : _i > newPrecision; i = _ref <= newPrecision ? ++_i : --_i) {
rNum.num += "0";
}
rNum.precision = newPrecision;
}
};
numberPolyfill.lowerNum = function(num) {
if (num.precision > 0) {
while (num.num.length < (num.precision + 1)) {
if (numberPolyfill.isNegative(num.num)) {
num.num = num.num.slice(0, 1) + "0" + num.num.slice(1);
} else {
num.num = "0" + num.num;
}
}
return (num.num.slice(0, -num.precision) + "." + num.num.slice(-num.precision)).replace(/\.?0+$/, '').replace(/^(-?)(\.)/, "$10$2");
} else {
return num.num;
}
};
numberPolyfill.preciseAdd = function(num1, num2) {
var num1i, num2i, result;
if ((typeof num1 === "number" || (typeof num1 === "object" && num1 instanceof Number)) && (typeof num2 === "number" || (typeof num2 === "object" && num2 instanceof Number))) {
if (num1 % 1 === 0 && num2 % 1 === 0) {
return (num1 + num2).toString();
} else {
return numberPolyfill.preciseAdd(num1.toString(), num2.toString());
}
} else if ((typeof num1 === "string" || (typeof num1 === "object" && num1 instanceof String)) && (typeof num2 === "string" || (typeof num2 === "object" && num2 instanceof String))) {
if (numberPolyfill.isNumber(num1)) {
if (numberPolyfill.isNumber(num2)) {
if (numberPolyfill.isInt(num1)) {
if (numberPolyfill.isInt(num2)) {
return numberPolyfill.preciseAdd(parseInt(num1, 10), parseInt(num2, 10));
} else if (numberPolyfill.isFloat(num2)) {
num1 += ".0";
}
} else if (numberPolyfill.isFloat(num1)) {
if (numberPolyfill.isInt(num2)) {
num2 += ".0";
}
}
num1i = numberPolyfill.raiseNum(num1);
num2i = numberPolyfill.raiseNum(num2);
if (num1i.precision < num2i.precision) {
numberPolyfill.raiseNumPrecision(num1i, num2i.precision);
} else if (num1i.precision > num2i.precision) {
numberPolyfill.raiseNumPrecision(num2i, num1i.precision);
}
result = (parseInt(num1i.num, 10) + parseInt(num2i.num, 10)).toString();
if (num1i.precision > 0) {
if (numberPolyfill.isNegative(result)) {
while (num1i.precision > (result.length - 1)) {
result = "-0" + result.slice(1);
}
} else {
while (num1i.precision > result.length) {
result = "0" + result;
}
}
result = numberPolyfill.lowerNum({
num: result,
precision: num1i.precision
});
}
result = result.replace(/^(-?)\./, '$10.');
if (numberPolyfill.isFloat(result)) {
result = result.replace(/0+$/, '');
}
return result;
} else {
throw new SyntaxError("Argument \"" + num2 + "\" is not a number.");
}
} else {
throw new SyntaxError("Argument \"" + num1 + "\" is not a number.");
}
} else {
return numberPolyfill.preciseAdd(num1.toString(), num2.toString());
}
};
numberPolyfill.preciseSubtract = function(num1, num2) {
if (typeof num2 === "number" || (typeof num2 === "object" && num2 instanceof Number)) {
return numberPolyfill.preciseAdd(num1, -num2);
} else if (typeof num2 === "string" || (typeof num2 === "object" && num2 instanceof String)) {
if (numberPolyfill.isNegative(num2)) {
return numberPolyfill.preciseAdd(num1, num2.slice(1));
} else {
return numberPolyfill.preciseAdd(num1, "-" + num2);
}
}
};
numberPolyfill.getPrecision = function(num) {
var k, kNum;
if (typeof num === "number") {
k = 0;
kNum = num;
while (kNum !== Math.floor(kNum)) {
kNum = num * Math.pow(10, ++k);
}
return k;
} else if (typeof num === "string") {
if (numberPolyfill.isNumber(num)) {
if (numberPolyfill.isFloat(num)) {
return /^-?\d+(?:\.(\d+))?$/.exec(num)[1].length;
} else {
return 0;
}
}
}
};
numberPolyfill.prototype.getParams = function() {
var max, min, step, val;
step = this.elem.attr('step');
min = this.elem.attr('min');
max = this.elem.attr('max');
val = this.elem.val();
if (!numberPolyfill.isNumber(step)) {
step = null;
}
if (!numberPolyfill.isNumber(min)) {
min = null;
}
if (!numberPolyfill.isNumber(max)) {
max = null;
}
if (!numberPolyfill.isNumber(val)) {
val = min || 0;
}
return {
min: (min != null) ? min : null,
max: (max != null) ? max : null,
step: (step != null) ? step : "1",
val: (val != null) ? val : null
};
};
numberPolyfill.prototype.clipValues = function(value, min, max) {
if ((max != null) && parseFloat(value) > parseFloat(max)) {
return max;
} else if ((min != null) && parseFloat(value) < parseFloat(min)) {
return min;
} else {
return value;
}
};
numberPolyfill.prototype.stepNormalize = function(value) {
var cValue, min, params, sn, step;
params = this.getParams();
step = params['step'];
min = params['min'];
if (step == null) {
return value;
} else {
step = numberPolyfill.raiseNum(step);
cValue = numberPolyfill.raiseNum(value);
if (cValue.precision > step.precision) {
numberPolyfill.raiseNumPrecision(step, cValue.precision);
} else if (cValue.precision < step.precision) {
numberPolyfill.raiseNumPrecision(cValue, step.precision);
}
if (min != null) {
cValue = numberPolyfill.raiseNum(numberPolyfill.preciseSubtract(value, min));
numberPolyfill.raiseNumPrecision(cValue, step.precision);
}
if (parseFloat(cValue.num) % parseFloat(step.num) === 0) {
return value;
} else {
cValue = numberPolyfill.lowerNum({
num: (Math.round(parseFloat(cValue.num) / (sn = parseFloat(step.num))) * sn).toString(),
precision: cValue.precision
});
if (min != null) {
cValue = numberPolyfill.preciseAdd(cValue, min);
}
return cValue;
}
}
};
numberPolyfill.domMouseScrollHandler = function(evt) {
var p;
p = evt.data.p;
evt.preventDefault();
if (evt.originalEvent.detail < 0) {
p.increment();
} else {
p.decrement();
}
};
numberPolyfill.mouseWheelHandler = function(evt) {
var p;
p = evt.data.p;
evt.preventDefault();
if (evt.originalEvent.wheelDelta > 0) {
p.increment();
} else {
p.decrement();
}
};
numberPolyfill.elemKeypressHandler = function(evt) {
var p, _ref, _ref1;
p = evt.data.p;
if (evt.keyCode === 38) {
p.increment();
} else if (evt.keyCode === 40) {
p.decrement();
} else if (((_ref = evt.keyCode) !== 8 && _ref !== 9 && _ref !== 35 && _ref !== 36 && _ref !== 37 && _ref !== 39 && _ref !== 46) && ((_ref1 = evt.which) !== 45 && _ref1 !== 46 && _ref1 !== 48 && _ref1 !== 49 && _ref1 !== 50 && _ref1 !== 51 && _ref1 !== 52 && _ref1 !== 53 && _ref1 !== 54 && _ref1 !== 55 && _ref1 !== 56 && _ref1 !== 57)) {
evt.preventDefault();
}
};
numberPolyfill.elemChangeHandler = function(evt) {
var min, newVal, p, params;
p = evt.data.p;
if (p.elem.val() !== "") {
if (numberPolyfill.isNumber(p.elem.val())) {
params = p.getParams();
newVal = p.clipValues(params['val'], params['min'], params['max']);
newVal = p.stepNormalize(newVal);
if (newVal.toString() !== p.elem.val()) {
p.elem.val(newVal).change();
}
} else {
min = p.elem.attr('min');
p.elem.val((min != null) && numberPolyfill.isNumber(min) ? min : "0").change();
}
}
};
numberPolyfill.elemBtnMousedownHandler = function(evt) {
var func, p, releaseFunc, timeoutFunc,
_this = this;
p = evt.data.p;
func = evt.data.func;
p[func]();
timeoutFunc = function(incFunc) {
p[func]();
p.timeoutID = window.setTimeout(timeoutFunc, 10);
};
releaseFunc = function(e) {
window.clearTimeout(p.timeoutID);
$(document).off('mouseup', releaseFunc);
$(_this).off('mouseleave', releaseFunc);
};
$(document).on('mouseup', releaseFunc);
$(this).on('mouseleave', releaseFunc);
p.timeoutID = window.setTimeout(timeoutFunc, 700);
};
numberPolyfill.prototype.attrMutationHandler = function(name, oldValue, newValue) {
var ei, h, _i, _len, _ref;
if (name === "class" || name === "style") {
h = {};
ei = null;
_ref = ["opacity", "visibility", "-moz-transition-property", "-moz-transition-duration", "-moz-transition-timing-function", "-moz-transition-delay", "-webkit-transition-property", "-webkit-transition-duration", "-webkit-transition-timing-function", "-webkit-transition-delay", "-o-transition-property", "-o-transition-duration", "-o-transition-timing-function", "-o-transition-delay", "transition-property", "transition-duration", "transition-timing-function", "transition-delay"];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
i = _ref[_i];
if ((ei = this.elem.css(i)) !== this.btnContainer.css(i)) {
h[i] = ei;
}
}
if (this.elem.css("display") === "none") {
h["display"] = "none";
} else {
h["display"] = "inline-block";
}
this.btnContainer.css(h);
} else if (name === "min" || name === "max" || name === "step") {
this.elem.change();
}
};
numberPolyfill.prototype.increment = function() {
var newVal, params;
if (!(this.elem.is(":disabled") || this.elem.is("[readonly]"))) {
params = this.getParams();
newVal = numberPolyfill.preciseAdd(params['val'], params['step']);
if ((params['max'] != null) && parseFloat(newVal) > parseFloat(params['max'])) {
newVal = params['max'];
}
newVal = this.stepNormalize(newVal);
this.elem.val(newVal).change();
}
};
numberPolyfill.prototype.decrement = function() {
var newVal, params;
if (!(this.elem.is(":disabled") || this.elem.is("[readonly]"))) {
params = this.getParams();
newVal = numberPolyfill.preciseSubtract(params['val'], params['step']);
if ((params['min'] != null) && parseFloat(newVal) < parseFloat(params['min'])) {
newVal = params['min'];
}
newVal = this.stepNormalize(newVal);
this.elem.val(newVal).change();
}
};
} else {
$.fn.inputNumber = function() {
return $(this);
};
return;
}
$(function() {
$('input[type="number"]').inputNumber();
});
})(jQuery);
}).call(this);
Εμφανίζονται τα στοιχεία 1-100 από σύνολο 440
Συναρμολογούμενος κάδος αποριμάτων.
Συναρμολογούμενος κάδος αποριμάτων.
Συναρμολογούμενος κάδος αποριμάτων.
Συναρμολογούμενος κάδος αποριμάτων.
PATTERNED VASES WITH PLANTS BLANK
WHEN LIFE GIVES YOU LEMONS LEMONS
Ευχετηρία κάρτα Caroline Gardner χωρίς κείμενο σε όμορφα χρώματα. Συνοδεύεται από κραφτ φάκελο.
Ευχετηρία κάρτα Caroline Gardner χωρίς κείμενο σε όμορφα χρώματα. Συνοδεύεται από κραφτ φάκελο.
Ευχετηρία κάρτα Caroline Gardner χωρίς κείμενο σε όμορφα χρώματα. Συνοδεύεται από κραφτ φάκελο.
Ευχετηρία κάρτα Caroline Gardner χωρίς κείμενο σε όμορφα χρώματα. Συνοδεύεται από κραφτ φάκελο.
Ευχετηρία κάρτα Caroline Gardner χωρίς κείμενο σε όμορφα χρώματα. Συνοδεύεται από κραφτ φάκελο.
Ευχετηρία κάρτα Caroline Gardner χωρίς κείμενο σε όμορφα χρώματα. Συνοδεύεται από κραφτ φάκελο.
Ευχετηρία κάρτα Caroline Gardner χωρίς κείμενο σε όμορφα χρώματα. Συνοδεύεται από κραφτ φάκελο.
Ευχετηρία κάρτα Caroline Gardner χωρίς κείμενο σε όμορφα χρώματα. Συνοδεύεται από κραφτ φάκελο.
Ευχετηρία κάρτα Caroline Gardner χωρίς κείμενο σε όμορφα χρώματα. Συνοδεύεται από κραφτ φάκελο.
Ευχετηρία κάρτα Caroline Gardner χωρίς κείμενο σε όμορφα χρώματα. Συνοδεύεται από κραφτ φάκελο.
Mini κάρτες χωρίς κείμενο.Κάθε κάρτα είναι συσκευασμένη σε ζελατίνα μαζί με το φάκελο της.
Mini κάρτες χωρίς κείμενο.Κάθε κάρτα είναι συσκευασμένη σε ζελατίνα μαζί με το φάκελο της.
Mini κάρτες χωρίς κείμενο.Κάθε κάρτα είναι συσκευασμένη σε ζελατίνα μαζί με το φάκελο της.
Mini κάρτες χωρίς κείμενο.Κάθε κάρτα είναι συσκευασμένη σε ζελατίνα μαζί με το φάκελο της.
Mini κάρτες χωρίς κείμενο.Κάθε κάρτα είναι συσκευασμένη σε ζελατίνα μαζί με το φάκελο της.
Ευχετηριες καρτες της Paper Rose για να ευχηθειτε με ομορφο τροπο στους δικους σας ανθρωπους.
Ευχετηριες καρτες της Paper Rose για να ευχηθειτε με ομορφο τροπο στους δικους σας ανθρωπους.
Ευχετηριες καρτες της Paper Rose για να ευχηθειτε με ομορφο τροπο στους δικους σας ανθρωπους.
Ευχετηριες καρτες της Paper Rose για να ευχηθειτε με ομορφο τροπο στους δικους σας ανθρωπους.
Ευχετηριες καρτες της Paper Rose για να ευχηθειτε με ομορφο τροπο στους δικους σας ανθρωπους.
Ευχετηριες καρτες της Paper Rose για να ευχηθειτε με ομορφο τροπο στους δικους σας ανθρωπους.
Ευχετηριες καρτες της Paper Rose για να ευχηθειτε με ομορφο τροπο στους δικους σας ανθρωπους.
Ευχετηριες καρτες της Paper Rose για να ευχηθειτε με ομορφο τροπο στους δικους σας ανθρωπους.
Ευχετηριες καρτες της Paper Rose για να ευχηθειτε με ομορφο τροπο στους δικους σας ανθρωπους.
Ευχετηριες καρτες της Paper Rose για να ευχηθειτε με ομορφο τροπο στους δικους σας ανθρωπους.
Ευχετηριες καρτες της Paper Rose για να ευχηθειτε με ομορφο τροπο στους δικους σας ανθρωπους.
Ευχετηριες καρτες της Paper Rose για να ευχηθειτε με ομορφο τροπο στους δικους σας ανθρωπους.
Ευχετηριες καρτες της Paper Rose για να ευχηθειτε με ομορφο τροπο στους δικους σας ανθρωπους.
DRAGONFLIES AND WATERLILLIES
Ευχετηριες καρτες της Paper Rose για να ευχηθειτε με ομορφο τροπο στους δικους σας ανθρωπους.
Μήνυμα μέσα στη κάρτα: with love on your birthday
Μήνυμα μέσα στη κάρτα: Happy Birthday
Ευχετηρια καρτα γενεθλιων της QUINEY
Ευχετηρια καρτα γενεθλιων της QUINEY
Ευχετηρια καρτα γενεθλιων της QUINEY
jam jars & butterflies blank
blue wild flowers/bees blank
wild floral/bluebell blank
queen elizabeth ii rose blank