﻿function NumericBox_NS_change(e) {
    if (!e.target)
    {
        return;
    }
    var soidId = e.target.id + "_sov";
    var soid = document.getElementById(soid);
    if (soid)
    {
	    var re = /^[-]?(\d*\.?\d*)$/;
	    if(re.test(e.target.value) || e.target.value.length == 0)
	    {
		    soid.value = e.target.value;
	    }
	    else
	    {
		    e.target.value = soid.value;
	    }
    }
}
function NumericBox_NS_AddNumericItem(e, id, isPos, isReal, decPlaces, decSign, placesBeforeDec) {
	var keyCode = e.which;
	if((keyCode >= 48 && keyCode <= 57) || keyCode == 13 || keyCode == 8 || keyCode == 0) {
		if(decPlaces == -1 || isReal == false || keyCode == 13 || keyCode == 8) {
			var tempVal = document.getElementById(id).value;
			if(tempVal.indexOf('-', 0) == 0)
				tempVal = tempVal.replace('-', '');
			if(tempVal.indexOf('.', 0) == -1) {
				if(tempVal.length < placesBeforeDec || placesBeforeDec == -1)
					return true;
				else
					e.preventDefault();
			} else {
				return true;
			}
		} else {
			var tempVal = document.getElementById(id).value;
			if(tempVal.indexOf('-', 0) == 0)
				tempVal = tempVal.replace('-', '');
			if(tempVal.indexOf('.', 0) == -1) {
				if(tempVal.length < placesBeforeDec || placesBeforeDec == -1)
					return true;
				else
					e.preventDefault();
			} else {
				if(tempVal.indexOf(decSign, 0) == -1)
					return true;
				else {
					if((tempVal.length - tempVal.indexOf(decSign, 0)) <= decPlaces)
						return true;
					else
						e.preventDefault();
				}
			}
		}
	} else if(e.ctrlKey && keyCode == 118)
		return true;	
	else if(keyCode == 45 || keyCode == 46 || keyCode == 44) {
		if(keyCode == 45) {
			var tempVal = document.getElementById(id).value + "-";
			if(tempVal.indexOf("-") == 0 && tempVal.indexOf("-", 1) == -1) {
				if(isPos)
					e.preventDefault();
				else
					return true;
			} else
				e.preventDefault();
		} else if(keyCode == 46 && decSign == ".") {
			var tempVal = document.getElementById(id).value;
			if(tempVal.indexOf(".", 0) == -1) {
				if(isReal)
					return true;
				else
					e.preventDefault();
			} else
				e.preventDefault();
		} else if(keyCode == 44 && decSign == ",") {
			var tempVal = document.getElementById(id).value;
			if(tempVal.indexOf(",", 0) == -1) {
				if(isReal)
					return true;
				else
					e.preventDefault();
			} else
				e.preventDefault();
		} else
			e.preventDefault();
	} else
		e.preventDefault();
}
function NumericBox_NS_ParseAdd(box, dollarSign, commaSign, decimalSign) {
	var currentValue = box.value;
	var parseValue = '';
	var newValue = '';
	var getDecimal = false;
	var addNegative = false;
	if(currentValue.indexOf('-') >= 0) {
		addNegative = true;
		currentValue = currentValue.replace('-', '');
	}
	if(currentValue != '' && currentValue.indexOf(decimalSign) > 0) {
		parseValue = currentValue.substr(0, currentValue.indexOf(decimalSign));
		getDecimal = true;
	} else {
		parseValue = currentValue;
		getDecimal = false;
	}
	var rotations = parseInt(parseValue.length / 3);
	if(parseValue.length % 3 == 0)
		rotations--;
	for(var i=0; i<rotations; i++)
		newValue = commaSign + parseValue.substr(parseValue.length - ((i + 1) * 3), 3) + newValue;
	newValue = parseValue.substr(0, parseValue.length - ((rotations) * 3)) + newValue;		
	if(getDecimal)
		newValue = newValue + currentValue.substr(currentValue.indexOf(decimalSign));
	if(newValue.length > 0) {
		if(addNegative)
			newValue = dollarSign + '-' + newValue;
		else
			newValue = dollarSign + newValue;
	}
	box.value = newValue;
}
function NumericBox_NS_ParseRemove(box, dollarSign, commaSign) {
	var currentValue = box.value;
	var newValue = currentValue;
	while(newValue.indexOf(dollarSign) > -1)
		newValue = newValue.replace(dollarSign, '');
	while(newValue.indexOf(commaSign) > -1)
		newValue = newValue.replace(commaSign, '');
	box.value = newValue;
	box.select();
}
