var flagKursCalcSelectBoxDownCanClose = false;

/**
 * Функция раскрытия меню валют.
 * 
 * @returns {Boolean}
 */
function currencyToggle(n, elementIdPrefix) {
    var box = document.getElementById(elementIdPrefix + n);
    var nAlt = 1;
    if (n == 1) {
        nAlt = 2;
    }
    document.getElementById(elementIdPrefix + nAlt).style.display = 'none';

    if (box.style.display != 'block') {
        box.style.display = 'block';
    } else {
        box.style.display = 'none';
    }

    return false;
}

function OnlyNumbers(e)
{
    var keynum,keychar,numcheck;

    if(window.event) // IE
    {
        keynum = e.keyCode;
    }
    else if(e.which) // Netscape/Firefox/Opera
    {
        keynum = e.which;
    }
    keychar = String.fromCharCode(keynum);
    //alert(keynum);
    numcheck = /(\d)/;
    return numcheck.test(keychar) || keynum==37 || keynum == 39 || keynum == 8 || keynum == 16 || keynum == 17 || keynum == 67 || keynum == 46 || keynum == 36 || keynum == 35;
}


/**
 * Функция вычисления результата калькулятора
 *
 * @returns {Boolean}
 */
function kursCalculate() {
    calcFrom        = $('calc_from').get('val');
    calcTo          = $('calc_to').get('val');
    calcSumm        = $('calc_summ').get('value');

    var i = 0;
    calcSummValidated = '';
    calcSummLen = calcSumm.length;
    calcSummValidated = calcSumm.replace(/([^0-9]){1,}/,'');
//    alert(calcSummValidated);
    //while (i < calcSummLen) {
    //    if (~~calcSumm[i] == calcSumm[i]) {
    //        calcSummValidated += calcSumm[i];
    //   }
    //    i ++;
    //}

    if (calcSummValidated !== calcSumm) {
        $('calc_summ').set('value', calcSummValidated);
    }

    if (calcSummValidated != '') {
        var resultValue = (calcFrom / calcTo) * calcSummValidated;
        if (isNaN(resultValue) ) {
            resultValue = '***';
        } else {
            resultValue = number_format(resultValue, {
                decimals: 2, 
                thousands_sep: ""
            })
        }
        $('calc_result').set('value', resultValue);
        $('calc_result').set('text', resultValue);
    }else{
        $('calc_result').set('value', '');
        $('calc_result').set('text', '');
    }
    return false;
}

/**
 * Функция меняет местами валюты в калькуляторе
 *
 * @returns {Boolean}
 */
function kursCalcReverse() {
    calcFrom    = $('calc_from').get('val');
    calcFromFu  = $('calc_from').get('fu');
    calcFromH   = $('calc_from').get('text');
    calcTo      = $('calc_to').get('val');
    calcToFu    = $('calc_to').get('fu');
    calcToH     = $('calc_to').get('text');
    
    $('calc_from').set('val', calcTo);
    $('calc_to').set('val',calcFrom);

    $('calc_from').set('fu', calcToFu);
    $('calc_to').set('fu',calcFromFu);

    $('calc_from').set('text',calcToH);
    $('calc_to').set('text',calcFromH);

    kursSetLinkRender();
    kursCalculate();
    return false;
}

/**
 * Функция устанавливает валюту
 *
 * @returns {Boolean}
 */
function kursCalcSetCurrency(elementN, value, title, friendlyurl) {
    if (elementN == 1) {
        elementType = 'from';
    } else {
        elementType = 'to';
    }
    
    $('calc_' + elementType).set('val', value);
    $('calc_' + elementType).set('fu', friendlyurl);
    $('calc_' + elementType).set('text', title);

    currencyToggle(elementN, 'kurs_calc_select_box_down_');
    kursSetLinkRender();
    kursCalculate();
    return false;
}

/**
 * Функция изменяет ссылку для перестроения графика
 *
 * @returns {Boolean}
 */
function kursSetLinkRender() {
    fuFrom    = $('calc_from').get('fu');
    fuTo      = $('calc_to').get('fu');

    
    $('kurs_render_link').set('href', '/kurs/' + fuFrom + '-k-' + fuTo);
    return false;
}

// informer old
var informer = 0;

function informerChangeOptions () {
    arr = document.getElementsByName('i_type');
    idx = 0;
    for( i = 0; i < arr.length; i++ ) {
        if ( arr[i].checked == true )
            idx = i + 1;
    }
    if ( idx == 0 ) return;
        
    v0 = $('v0');//*
    v0_value = v0[v0.selectedIndex].value;//*
    v1 = $('v1');
    v1_value = v1[v1.selectedIndex].value;
    //alert(v1_value);
    v2 = $('v2');
    v2_value = v2[v2.selectedIndex].value;
    bg = $('bg');
    bg_value = bg[bg.selectedIndex].value;
    fg = $('fg');
    fg_value = fg[fg.selectedIndex].value;
    
    for (i=0; i<v0.options.length; i++){
        if (v0.options[i].style.display == 'none'){
            v0.options[i].style.display = '';
        }
        if (v0.options[i].value == v1_value||v0.options[i].value == v2_value){
            v0.options[i].style.display = 'none';
        }
    }
        
    for (i=0; i<v1.options.length; i++){
        if (v1.options[i].style.display == 'none'){
            v1.options[i].style.display = '';
        }
        if (v1.options[i].value == v0_value){
            v1.options[i].style.display = 'none';
        //            if (v1.selectedIndex == i){
        //                if (i>0){
        //                    v1.selectedIndex = i-1;
        //                }else{
        //                    v1.selectedIndex = i+1;
        //                }
        //                v1_value = v1[v1.selectedIndex].value;
        //            }
        }
    }
    for (i=0; i<v2.options.length; i++){
        if (v2.options[i].style.display == 'none'){
            v2.options[i].style.display = '';
        }
        if (v2.options[i].value == v0_value){
            v2.options[i].style.display = 'none';
        //            if (v2.selectedIndex == i){
        //                if (i>0){
        //                    v2.selectedIndex = i-1;
        //                }else{
        //                    v2.selectedIndex = i+1;
        //                }
        //                v2_value = v2[v2.selectedIndex].value;
        //            }
        }
    }

    img = $('i'+idx);
    href = 'http://'+location.hostname+'/kurs/info/' + idx;

    exts = new Array();
    if ( bg_value >= 0 ) exts.push( 'bg=' + bg_value );
    if ( fg_value >= 0 ) exts.push( 'fg=' + fg_value );
    if ( v0_value >= 0 ) exts.push( 'v0=' + v0_value );//*
    if ( v1_value >= 0 ) exts.push( 'v1=' + v1_value );
    if ( v2_value >= 0 ) exts.push( 'v2=' + v2_value );
    if ( exts.length > 0 ) {
        href += '?' + exts.join('&');
    }
    img.src = href;
    return href;
}

function informerCheckRadio ( idx ) {
    obj = $( 'i_type_'+idx );
    if ( !obj || obj.type != "radio" ) return;
    obj.checked = true;
    informerChangeOptions();
}

function informerGenerate() {
    href= informerChangeOptions();
    $('result').value='<a href="http://bankir.ru/" title="Курсы валют на Банкир.Ру"><img border="0" alt="Курсы валют на Банкир.Ру" src="'+href+'"></a>';
}

/**
 * http://art-blog.ru/blog/topic/49/
 */
function number_format(_number, _cfg) {
    function obj_merge(obj_first, obj_second) {
        var obj_return = {};
        for (key in obj_first) {
            if (typeof obj_second[key] !== 'undefined') obj_return[key] = obj_second[key];
            else obj_return[key] = obj_first[key];
        }
        return obj_return;
    }
    function thousands_sep(_num, _sep) {
        if (_num.length <= 3) return _num;
        var _count = _num.length;
        var _num_parser = '';
        var _count_digits = 0;
        for (var _p = (_count - 1); _p >= 0; _p--){
            var _num_digit = _num.substr(_p, 1);
            if (_count_digits % 3 == 0 && _count_digits != 0 && !isNaN(parseFloat(_num_digit))) _num_parser = _sep + _num_parser;
            _num_parser = _num_digit + _num_parser;
            _count_digits++;
        }
        return _num_parser;
    }
    if (typeof _number !== 'number') {
        _number = parseFloat(_number);
        if (isNaN(_number)) return false;
    }
    var _cfg_default = {
        before: '', 
        after: '', 
        decimals: 2, 
        dec_point: '.', 
        thousands_sep: ','
    };
    if (_cfg && typeof _cfg === 'object'){
        _cfg = obj_merge(_cfg_default, _cfg);
    }
    else _cfg = _cfg_default;
    _number = _number.toFixed(_cfg.decimals);
    if(_number.indexOf('.') != -1){
        var _number_arr = _number.split('.');
        var _number = thousands_sep(_number_arr[0], _cfg.thousands_sep) + _cfg.dec_point + _number_arr[1];
    }
    else var _number = thousands_sep(_number, _cfg.thousands_sep);
    return _cfg.before + _number + _cfg.after;
}



window.addEvent('domready', function(){
    if ($('calc_from') != null) kursCalculate();
    //    $('body').click(function(){
    window.addEvent('click', function(){
        if (flagKursCalcSelectBoxDownCanClose) {
            $$('.kurs_calc_select_box_down').each(function(item){
                item.style.display = 'none';
            });
            flagKursCalcSelectBoxDownCanClose = false;
        }
        $$('.kurs_calc_select_box_down').each(function(item){
            if (item.style.display != 'none') {
                flagKursCalcSelectBoxDownCanClose = true;
            }     
        });
        kursCalculate.periodical(1000);
    });
    
});

