﻿// JScript File



function on_key_down(sender, evt) {

    sender.old_value = sender.value;
    //sender.default_css_class = sender.className;

    return true;


}

function on_key_press(sender, evt) {


    sender.pressed_char_code = get_char_code(evt);

    var result = is_valid_decimal_input(sender, evt);

    if (!result)
        set_remove_attention_class(sender, true);

    return result;

}

function on_key_up(sender, evt) {

    var isValid = false;
    if (is_valid_decimal_number(sender) == true || is_possible_decimal(sender.value) == true)
        isValid = true;
    else
        isValid = false;




    if (!isValid) {
        
        sender.value = sender.old_value;

    }



    set_remove_attention_class(sender, false)
    return true;
}

function get_char_code(evt) {
    evt = (evt) ? evt : window.event;
    return (evt.which) ? evt.which : evt.keyCode
}





function set_remove_attention_class(sender, do_set) {

   // sender.className = sender.default_css_class;
    if (do_set)
        sender.className = 'text_box_attention';
    else
        sender.className = 'default_text_box';


}




// gi pusta situaciite kako: -  22.   44, -22.   koga se uste ne  evaliden decimal, no mozebi ke bide
function is_possible_decimal(inputText) {

    if (inputText == '')
        return true;


    if (inputText.length == 1 && inputText.indexOf('-') == 0)
        return true;
    else if ((inputText.indexOf(decimal_separator) == inputText.lastIndexOf(decimal_separator)) && (inputText.lastIndexOf(decimal_separator) == (inputText.length - 1)))//prvoto pojavuvanje  eisto so poslednoto i e na posledno mesto
        return true;
    else
        return false;
}



function is_valid_decimal_input(sender, evt) {
    evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode

    return is_char_alowed_in_decimal_input(sender, charCode);
}



function is_valid_decimal_number(sender) {

    return ValidateRegularExpressionDecimal(sender.value);
}





function is_char_alowed_in_decimal_input(sender, char_code) {


    //          if (char_code <= 31 || (char_code >= 48 && char_code <= 57)
    //          || char_code == get_char_ascii_code('.')
    //          || char_code == get_char_ascii_code('-')

    if (char_code <= 31 || (char_code >= 48 && char_code <= 57)
                 || is_decimal_separator_do_not_exists(sender.value, char_code)
                || is_negative_sign_do_not_exists(sender.value, char_code)



          )
        return true;
    else
        return false;

}

function is_decimal_separator_do_not_exists(inputText, char_code) {


    if (char_code == get_char_ascii_code(decimal_separator)) {

        return inputText.indexOf(decimal_separator) == -1;
    }
    else
        return false;


}

function is_negative_sign_do_not_exists(inputText, char_code) {


    if (char_code == get_char_ascii_code('-')) {

        return inputText.indexOf('-') == -1;
    }
    else
        return false;


}


function get_char_ascii_code(character) {

    return character.charCodeAt(0);
}



function FormatNumber(textBoxID) {



    var txtTextBox = document.getElementById(textBoxID);
    if (txtTextBox == null)
        return;

    var textBoxValue = trimString(txtTextBox.value);
    if (textBoxValue == '')
        return;

    if (!ValidateRegularExpressionDecimal(textBoxValue)) {
        alert('Please enter valid number.');
        txtTextBox.focus();
        return;
    }


    if (textBoxValue != '') {

        var decimalPlaces = get_decimal_places(textBoxValue)
        if (decimalPlaces == 0)
            textBoxValue = formatNumber(formatedNumberToNumber(textBoxValue), 0, thousand_separator, '', '', '', '', '-', '');
        else
            textBoxValue = formatNumber(formatedNumberToNumber(textBoxValue), decimalPlaces, thousand_separator, decimal_separator, '', '', '-', '');


    }

    txtTextBox.value = textBoxValue;

}

function get_decimal_places(formatedNumberText) {
    var result = formatedNumberText.indexOf(decimal_separator)  == -1 ? 0 : (formatedNumberText.length - 1) - formatedNumberText.indexOf(decimal_separator);
    return result > 0 ? result : 0;
}

function removeThousandSeparatorOnly(txtNumber) {

    var result = txtNumber;
    if (result == null || result == '')
        return '';

    result = string_replace(result, thousand_separator, '');

    return result;

}

function ToNumberFormated_DecimalSeparatorOnly(textBoxID) {

    var textBoxValue = trimString(document.getElementById(textBoxID).value);
    return removeThousandSeparatorOnly(textBoxValue);
}






function formatedNumberToNumber(txtNumber) {

    var result = txtNumber;
    if (result == null || result == '')
        return '';

    result = string_replace(result, thousand_separator, '');
    result = string_replace(result, decimal_separator, '.');

    return result;

}










//-----------------------old methods---------------------
var numberValue = '';
var stringValidate = '';
var IDChangeClass;




function ValidateNumberInputOld(textBoxID, changeClass, event)
{   
    if(event.keyCode != 127 && event.keyCode != 13 && event.keyCode != 8 && (event.keyCode < 35 || event.keyCode > 40))
    {
        var textBox = document.getElementById(textBoxID);
        if(decimal_separator == '.')
        {
            if((event.keyCode >= 48 && event.keyCode <= 57) || event.keyCode == 45 || event.keyCode == 46)
            {
                stringValidate = textBox.value;
                keyValue = ReturnValueFromKeyCode(event.keyCode)
                
                if(event.keyCode == 45 || event.keyCode == 46)
                {
                    if(stringValidate.indexOf(keyValue) > -1)
                    {
                        ChangeClass(textBoxID, changeClass, false);
                        event.returnValue=false;
			            event.cancel = true;
			        }
			    }
	        }
	        else
	        {
	            ChangeClass(textBoxID, changeClass, false);
	            event.returnValue=false;
			    event.cancel = true;
	        }
        }
        else
        {
            if((event.keyCode >= 48 && event.keyCode <= 57) || event.keyCode == 44 || event.keyCode == 45)
            {
                stringValidate = textBox.value;
                keyValue = ReturnValueFromKeyCode(event.keyCode)
                
                if(event.keyCode == 44 || event.keyCode == 45)
                {
                    if(stringValidate.indexOf(keyValue) > -1)
                    {
                        ChangeClass(textBoxID, changeClass, false);
                        event.returnValue=false;
			            event.cancel = true;
			        }
			    }
	        }
	        else
	        {
	            ChangeClass(textBoxID, changeClass, false);
	            event.returnValue=false;
			    event.cancel = true;
	        }
        }
    }
}

function ValidatePercentInputOld(textBoxID, changeClass, event)
{   
    if(event.keyCode != 127 && event.keyCode != 13 && event.keyCode != 8)
    {
        var textBox = document.getElementById(textBoxID);
        if(decimal_separator == '.')
        {
            if((event.keyCode >= 48 && event.keyCode <= 57) || event.keyCode == 46 || event.keyCode == 37)
            {
                stringValidate = textBox.value;
                keyValue = ReturnValueFromKeyCode(event.keyCode)
                
                if(event.keyCode == 46 || event.keyCode == 37)
                {
                    if(stringValidate.indexOf(keyValue) > -1)
                    {
                        ChangeClass(textBoxID, changeClass, false);
                        event.returnValue=false;
			            event.cancel = true;
			        }
			    }
	        }
	        else
	        {
	            ChangeClass(textBoxID, changeClass, false);
	            event.returnValue=false;
			    event.cancel = true;
	        }
        }
        else
        {
            if((event.keyCode >= 48 && event.keyCode <= 57) || event.keyCode == 44 || event.keyCode == 37)
            {
                stringValidate = textBox.value;
                keyValue = ReturnValueFromKeyCode(event.keyCode)
                
                if(event.keyCode == 44 || event.keyCode == 37)
                {
                    if(stringValidate.indexOf(keyValue) > -1)
                    {
                        ChangeClass(textBoxID, changeClass, false);
                        event.returnValue=false;
			            event.cancel = true;
			        }
			    }
	        }
	        else
	        {
	            ChangeClass(textBoxID, changeClass, false);
	            event.returnValue=false;
			    event.cancel = true;
	        }
        }
    }
}

function SetFieldNumberValueOld(textBoxID, changeClass, originalClass, event)
{
    
    if(event.keyCode != 46 && event.keyCode != 13 && event.keyCode != 8 && (event.keyCode < 35 || event.keyCode > 40))
    {
        var textBoxValue = document.getElementById(textBoxID).value;
        
        if(textBoxValue != stringValidate)
        {
            if(decimal_separator == '.')
            {
                re1 = /^[-]?([1-9]((\d+)?(\.(\d+)?)?)?)?$/i;
                re2 = /^[-]?([0](\.(\d+)?)?)?$/i;
                        
                if (!(re1.test(textBoxValue)) && !(re2.test(textBoxValue))) 
                {
                    ChangeClass(textBoxID, changeClass, false);
                    document.getElementById(textBoxID).value = stringValidate;
                }
            }
            else
            {
                re1 = /^[-]?([1-9]((\d+)?(\,(\d+)?)?)?)?$/i;
                re2 = /^[-]?([0](\,(\d+)?)?)?$/i;
                        
                if (!(re1.test(textBoxValue)) && !(re2.test(textBoxValue))) 
                {
                    ChangeClass(textBoxID, changeClass, false);
                    document.getElementById(textBoxID).value = stringValidate;
                }
            }
        }
        
        IDChangeClass = window.setTimeout("ChangeClass('"+textBoxID+"', '"+originalClass+"', true)", 50);
    }
}

function SetFieldPercentValueOld(textBoxID, changeClass, originalClass, event)
{   
    if(event.keyCode != 46 && event.keyCode != 13 && event.keyCode != 8 && (event.keyCode < 35 || event.keyCode > 40))
    {
        var textBoxValue = document.getElementById(textBoxID).value;
        
        if(textBoxValue != stringValidate)
        {
            if(decimal_separator == '.')
            {
                re1 = /^([1-9]((\d+)?(\.(\d+)?)?)?)?[%]?$/i;
                re2 = /^([0](\.(\d+)?)?)?[%]?$/i;
                        
                if (!(re1.test(textBoxValue)) && !(re2.test(textBoxValue))) 
                {
                    ChangeClass(textBoxID, changeClass, false);
                    document.getElementById(textBoxID).value = stringValidate;
                }
            }
            else
            {
                re1 = /^[-]?([1-9]((\d+)?(\,(\d+)?)?)?)?[%]?$/i;
                re2 = /^[-]?([0](\,(\d+)?)?)?[%]?$/i;
                        
                if (!(re1.test(textBoxValue)) && !(re2.test(textBoxValue))) 
                {
                    ChangeClass(textBoxID, changeClass, false);
                    document.getElementById(textBoxID).value = stringValidate;
                }
            }
        }
        
        IDChangeClass = window.setTimeout("ChangeClass('"+textBoxID+"', '"+originalClass+"', true)", 50);
    }
}

function ReturnValueFromKeyCodeOld(eventKeyCode)
{
    if((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 44 && event.keyCode <= 46))
    {
        switch (eventKeyCode) 
        {
            case 37: result = '%'; break;
            case 44: result = ','; break;
            case 45: result = '-'; break;
            case 46: result = '.'; break;
            case 48: result = '0'; break;
            case 49: result = '1'; break;
            case 50: result = '2'; break;
            case 51: result = '3'; break;
            case 52: result = '4'; break;
            case 53: result = '5'; break;
            case 54: result = '6'; break;
            case 55: result = '7'; break;
            case 56: result = '8'; break;
            case 57: result = '9'; break;
        }
    }
    else
    {
        result = ' ';
    }
    
    return result;
}

function ChangeClassOld(textBoxID, changeClass, clear)
{
    if(clear)
    {
        window.clearTimeout(IDChangeClass);
    }
    var textBox = document.getElementById(textBoxID);
    textBox.className = changeClass;
}







function FormatNumberOld(textBoxID)
{ 
    
    if(trimString(document.getElementById(textBoxID).value) != '')
    {
        var re1 = /^[-]?[1-9][0-9]*([.|,][0-9][0-9]*)?$/i;
	    var re2 = /^[-]?[0]([.|,][0-9][0-9]*)?$/i;
	    var re3 = /^[-][0]([.|,][0]*)?$/i;
	    
	    if(!(re1.test(trimString(document.getElementById(textBoxID).value))) && !(re2.test(trimString(document.getElementById(textBoxID).value)))) 
	    {
            alert('Number is not entered in valid format');
            document.getElementById(textBoxID).focus();
            return;			
	    }
	    
	    if(re3.test(trimString(document.getElementById(textBoxID).value)))
	    {
	        alert('Number is not entered in valid format');
            document.getElementById(textBoxID).focus();
            return;
        }
	    
	    
	    
        textBoxIntPart = trimString(document.getElementById(textBoxID).value).split(decimal_separator)[0] + '';
        textBoxDecimalPart = trimString(document.getElementById(textBoxID).value).split(decimal_separator)[1] + '';
        
        negativeSign = '';
        if(textBoxIntPart.indexOf('-') > -1)
        {
            negativeSign = '-';
            textBoxIntPart = textBoxIntPart.substring(1, textBoxIntPart.length);
        }
        
        i=0;
        result = '';
        if(textBoxIntPart != 'undefined' && textBoxIntPart != '')
        {
            while (i < textBoxIntPart.length)
            {
                if (i <= textBoxIntPart.length - 3)
                {
                    if(i+3 < textBoxIntPart.length)
                    {
                        result = thousand_separator + textBoxIntPart.substring(textBoxIntPart.length - 3 - i, textBoxIntPart.length - 3 - i + 3) + result;
                    }
                    else
                    {
                        result = textBoxIntPart.substring(textBoxIntPart.length - 3 - i, textBoxIntPart.length - 3 - i + 3) + result;
                    }
                    i++;i++;i++;
                }
                else
                {
                    if (i <= textBoxIntPart.length - 2)
                    {
                        result = textBoxIntPart.substring(textBoxIntPart.length - 2 - i, textBoxIntPart.length - 2 - i + 2) + result;
                        i++;i++;
                    }
                    else
                    {
           
                        result = textBoxIntPart.substring(textBoxIntPart.length - 1 - i, textBoxIntPart.length - 1 - i + 1) + result;
                        i++;
                        
                    }
                }
            }
        }
        
        if(textBoxDecimalPart != 'undefined' && textBoxDecimalPart != '')
        {
            if(result == '')
            {
                document.getElementById(textBoxID).value = negativeSign + '0' + decimal_separator + textBoxDecimalPart; 
            }
            else
            {
                document.getElementById(textBoxID).value = negativeSign + result + decimal_separator + textBoxDecimalPart;
            }
        }
        else
        {
            if(result == '')
            {
                document.getElementById(textBoxID).value = '0'; 
            }
            else
            {
                if(result == '0')
                {
                    document.getElementById(textBoxID).value = result;
                }
                else
                {
                    document.getElementById(textBoxID).value = negativeSign + result;
                }
            }
        }
    }   
}

function FormatPercentOld(textBoxID)
{
    
    if(trimString(document.getElementById(textBoxID).value) != '')
    {
        var re1 = /^[1-9][0-9]*([.|,][0-9][0-9]*)?[%]?$/i;
	    var re2 = /^[0]([.|,][0-9][0-9]*)?[%]?$/i;
	    
	    if(!(re1.test(trimString(document.getElementById(textBoxID).value))) && !(re2.test(trimString(document.getElementById(textBoxID).value)))) 
	    {
            alert('Number/percent is not entered in valid format');
            document.getElementById(textBoxID).focus();
            return;			
	    }
	    
        textBoxIntPart = trimString(document.getElementById(textBoxID).value).split(decimal_separator)[0] + '';
        textBoxDecimalPart = trimString(document.getElementById(textBoxID).value).split(decimal_separator)[1] + '';
        
        percentSign = '%';
        if(textBoxDecimalPart.indexOf('%') > -1)
        {
            percentSign = '%';
            textBoxDecimalPart = textBoxDecimalPart.substring(0, textBoxDecimalPart.length-1);
        }
        
        i=0;
        result = '';
        if(textBoxIntPart != 'undefined' && textBoxIntPart != '')
        {
            while (i < textBoxIntPart.length)
            {
                if (i <= textBoxIntPart.length - 3)
                {
                    if(i+3 < textBoxIntPart.length)
                    {
                        result = thousand_separator + textBoxIntPart.substring(textBoxIntPart.length - 3 - i, textBoxIntPart.length - 3 - i + 3) + result;
                    }
                    else
                    {
                        result = textBoxIntPart.substring(textBoxIntPart.length - 3 - i, textBoxIntPart.length - 3 - i + 3) + result;
                    }
                    i++;i++;i++;
                }
                else
                {
                    if (i <= textBoxIntPart.length - 2)
                    {
                        result = textBoxIntPart.substring(textBoxIntPart.length - 2 - i, textBoxIntPart.length - 2 - i + 2) + result;
                        i++;i++;
                    }
                    else
                    {
           
                        result = textBoxIntPart.substring(textBoxIntPart.length - 1 - i, textBoxIntPart.length - 1 - i + 1) + result;
                        i++;
                        
                    }
                }
            }
        }
        
        if(textBoxDecimalPart != 'undefined' && textBoxDecimalPart != '')
        {
            if(result == '')
            {
                document.getElementById(textBoxID).value = '0' + decimal_separator + textBoxDecimalPart + percentSign; 
            }
            else
            {
                document.getElementById(textBoxID).value = result + decimal_separator + textBoxDecimalPart + percentSign;
            }
        }
        else
        {
            if(result == '')
            {
                document.getElementById(textBoxID).value = '0' + percentSign; 
            }
            else
            {
               document.getElementById(textBoxID).value = result + percentSign;
            }
        }
    }
}




function ToNumberOld(textBoxID) {

   
    var textBoxValue = trimString(document.getElementById(textBoxID).value);

    if (textBoxValue  != '') 
    {

        textBoxValue = string_replace(textBoxValue, thousand_separator, '');
       // textBoxValue = string_replace(textBoxValue, percentSign, '')       


    }

    return textBoxValue;

}


