(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 από σύνολο 325
Μήνυμα μεσα : Happy Birthday
Μήνυμα μεσα : Wishing you a lovely Birthday
Μήνυμα μέσα στη κάρτα: Have a great day!
Μήνυμα μέσα στη κάρτα: Happy Birthday!
Μήνυμα μέσα στη κάρτα : Wishing you a Birthday filled with sparkle
Μήνυμα μέσα στη κάρτα : Wishing you a Birthday that's as sweet as you
Μήνυμα μέσα στη κάρτα : Wishing you a special Birthday
Ευχετηριες καρτες της Paper Rose με ομορφα σχεδια και χρωματα
Μήνυμα μέσα στη κάρτα:Wishing you a wonderful Birthday
Μήνυμα μέσα στη κάρτα: Wishiing you a Wonderful birthday !
Μήνυμα μέσα στη κάρτα: Have an amazing day!
Μήνυμα μέσα στη κάρτα: Enjoy your Birthday
Μήνυμα μέσα στη κάρτα: Happy Birthday !
Μήνυμα μέσα στη κάρτα:With best wishes
Μήνυμα μέσα στη κάρτα: Have a lovely day
Ευχετηριες καρτες της Paper Rose με ομορφα σχεδια και χρωματα
Μήνυμα μέσα στη κάρτα: with love on your birthday
Μήνυμα μέσα στη κάρτα: Happy Birthday
Ευχετηρια καρτα γενεθλιων της QUINEY
Ευχετηρια καρτα γενεθλιων της QUINEY
Ευχετηρια καρτα γενεθλιων της QUINEY
Ευχετηρια καρτα γενεθλιων της QUINEY
Ευχετηρια καρτα γενεθλιων της QUINEY
Ευχετηρια καρτα γενεθλιων της QUINEY
Ευχετηρια καρτα γενεθλιων της QUINEY