var vNrKeyCodes = new Array(48,49,50,51,52,53,54,55,56,57,96,97,98,99,100,101,102,103,104,105,109,110,189,190);
var vSpecKeyCode = new Array(37,39,8,46,9,13,16,17,18);

function NoRightClick(e) {
	var evtobj=window.event? event : e;
	if(evtobj.button > 1){
        alert('This function is disabled !');
        return false;
	}
   
}

function number_validate(source, arguments){
	var text = arguments.Value;
	var integer, fraction = '0';
	if(text.indexOf(decimalSeparator) > 0){
		fraction = text.substr(text.indexOf(decimalSeparator) + 1);
		integer  = removeThousandSeparator(text.substr(0, text.indexOf(decimalSeparator)));
	}
	else{
		integer  = removeThousandSeparator(text);
	}
	if(!isNaN(integer) && !isNaN(fraction)){
		
		arguments.IsValid = true;
	}
	else{
		arguments.IsValid = false;
	}
}

function mod(x, y)
{
  var quotient = Math.floor(x / y)
  var remainder = x - quotient * y
  return remainder
}

function buildThousandSeparator(integer){
	var result = '';
	var c;
	var position = 0;
	for(var i = integer.length - 1; i>= 0; i--){
		position ++;
		c = integer.substr(i, 1);
		result = c + result;
		if(mod(position, 3) == 0 && i > 0){
			result = thousandSeparator + result;
		}
	}
	return result;
}

function removeThousandSeparator(s){
	var r = '',c;
	for (var i=0; i < s.length; i++){
		c = s.substr(i,1);
		if (c != thousandSeparator){
		   r += c;
		}
	}
	return r
}

function formatNrTextbox(el,decimalsNo,acceptNegative)
{
	var text = el.value; 
	var integer, fraction = '';
		
	if(text == ''){
		return;
	}
	var negative = (acceptNegative ? text.indexOf('-') == 0 ? true : false : false);
	if (negative) text = text.substr(1);
	if(text.indexOf(decimalSeparator) >= 0){
		if (text.indexOf(decimalSeparator) == 0) text = '0' + text;
		fraction = text.substr(text.indexOf(decimalSeparator) + 1);
		integer  = text.substr(0, text.indexOf(decimalSeparator));
	}
	else{
		integer = text;
	}
	result = removeThousandSeparator(integer);
	if(!isNaN(integer) && !isNaN(fraction)){
		el.value = buildThousandSeparator(result) + (decimalsNo > 0 ? (fraction != '' ? decimalSeparator + fraction : '') : '');
	}
	if (negative) el.value = '-' + el.value;
	
}

function acceptChar(decimalNo,acceptNegative, e) {
	var evtobj=window.event? event : e;
	if(IsInArray(vNrKeyCodes,evtobj.keyCode) || IsInArray(vSpecKeyCode,evtobj.keyCode)) {
	    if(!evtobj.shiftKey){
	        if(!evtobj.altKey){
	            if (decimalNo == 0) {
			        if (evtobj.keyCode == 190 || evtobj.keyCode == 110) return false;
		        }
		        else { 
		            if ((evtobj.keyCode == 190 || evtobj.keyCode == 110) && evtobj.srcElement.value.indexOf(decimalSeparator) >= 0){
		                 return false;
		            }
		        }
		        if (!acceptNegative) {
			        if (evtobj.keyCode == 189 || evtobj.keyCode == 109) return false;
		        }
		        else { 
		            if ((evtobj.keyCode == 189 || evtobj.keyCode == 109) && evtobj.srcElement.value.indexOf('-') >= 0) return false;
		        }
		        return true;
		    }
		    else{
		        alert('This function is disabled !');
		    }
		}
		else return false;
	}
	else return false;	
}

function validateText(text, keyCode){
    alert(this.value);
}

function IsInArray(A,v) {
	for(var x=0;x<A.length;x++)
		if (A[x] == v) return true;
	return false;	
}

function columnSum(e){
	currentCellNo = e.parentNode.cellIndex;
	rowsNo = e.parentNode.parentNode.parentNode.rows.length;

	total = 0;
	for(var rowNo = 1; rowNo < rowsNo-1; rowNo++){
		total += parseFloat(removeThousandSeparator(e.parentNode.parentNode.parentNode.rows[rowNo].cells(currentCellNo).childNodes(0).value));
	}

	str = total.toString();
	if(str.indexOf(decimalSeparator) >= 0){
		columnSumF = str.substr(str.indexOf(decimalSeparator) + 1,2);
		columnSumI = str.substr(0, str.indexOf(decimalSeparator));
	}
	else {
		columnSumF = '';
		columnSumI = str;
	}
	
	e.parentNode.parentNode.parentNode.rows(rowsNo-1).cells(currentCellNo).childNodes(0).innerText = buildThousandSeparator(columnSumI) + (columnSumF != '' ? decimalSeparator + columnSumF : '');
}
