﻿function TextatorRomanNumeralsConverter()
{
    this.Init = init;
    
    function init()
    {   
        $.ajaxSetup({cache : false});
        
        $(".actions button").click(function(){
            $('#uxResult').empty();
            $('#uxNumberValidation').empty();
            
            var number = $('#uxValue').val();
            var numberType;
            
            if (!number)
            {
                $('#uxNumberValidation').html(getMsg('valueRequired'));
                return false;
            }
            
            if (isArabic(number))
            {
                if (number < 1 || number > 3999)
                {
                    $('#uxNumberValidation').html(getMsg('valueNotInRange'));
                    return false;
                }
                else
                {
                    numberType = 'a';
                }
            }
            else if (isRoman(number))
            {
                numberType = 'r';
            }
            else
            {
                $('#uxNumberValidation').html(getMsg('valueNotNumeric'));
                return false;
            }
            
            $.getJSON('/ajax/handler.ashx', {'h':'rnc', 'l':$(':hidden[name="l"]').val(), 'c':'ct', 'n':$('#uxValue').val(), 't' : numberType}, function(data) {
                $('#uxResult').html(data.result);
            });
            
            return false;
        });
    }
    
    
    
    function isArabic(number)
    {
        var numRe = /^\d+$/g;
        return number.match(numRe) != null;
    }
    
    
    
    function isRoman(number)
    {
        var numRe = /^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/gi;
        return number.match(numRe) != null;
    }
    
    
    
    var msg = {
        lv : {
            valueRequired : 'Norādiet vērtību',
            valueNotNumeric : 'Norādītā vērtība nav ne arābu, ne romiešu skaitlis',
            valueNotInRange : 'Vērtībai jābūt robežās no 1 līdz 3999'
        },
        
        en : {
            valueRequired : 'Value required',
            valueNotNumeric : 'Value is neither arabic nor roman number',
            valueNotInRange : 'Value should be in range from 1 to 3999'
        },
        
        ru : {
            valueRequired : 'Укажите значение',
            valueNotNumeric : 'Указанное значение не является ни арабским, ни римским числом',
            valueNotInRange : 'Допустимый диапазон значений: от 1 до 3999'
        }
    };
    
    function getMsg(key)
    {
        var lang = $(':hidden[name="l"]').val().split('-')[0];
        return msg[lang][key];
    }
}

$(document).ready(function()
{
    var converter = new TextatorRomanNumeralsConverter();
    converter.Init();
});
