var prepay_balance=0;
// пересчёт цен доменов при регистрации
function set_domprice(dname) {
    var src_name = 'per_pr_' + dname;
    var targ_name = 'price_' + dname;

    var val = new String( select_get_value(src_name) );
    var price = val.replace(/\d+_|\.00/g, ''); 

    //$(targ_name).innerHTML = price + '.00';
    $(targ_name).innerHTML = price;
    set_totalprice ();
}

// Проставляет общую цену в таблице, вычисляя сумму цен в рядах
// см common.js
 /*
function set_totalprice () {
    if ( !$('total_price') ) return;
    var totalprice = 0;
    $$('div').each( function(elem) {
        if( !elem.id.match(/^price_/) ) return ;
        if(isNaN(parseFloat(elem.innerHTML))) return;
        totalprice += parseFloat(elem.innerHTML);  
    });
    $('total_price').innerHTML = totalprice + '.00';
    if( $('mode') ) {
        if( totalprice > prepay_balance ) {
            select_del_option('mode', 'prepay');
        } else {
            if( !$('pay_prepay') ) {
                select_add_option('mode', 'prepay', 'С лицевого счёта');
            }
        }
    }
    return totalprice;
}
*/

// установить цену с учётом дополнительных сервисов
function select_dopservice(type, state, id ) {
    if (!(type && id)) return ;

    var period_list = select_get_value($('per_pr_'+id));
    var res = period_list.match(/(\d+)_.*/);
    var period = res[1];

    var oldprice = parseFloat($('price_' + id ).innerHTML);
    var servprice =  DOPSERV_PRICES[type]*period ;

    $('price_'+id).innerHTML = (state ? oldprice + servprice : oldprice - servprice) + '.00';

    set_totalprice ();
}

// показать дополнительные параметры типа оплаты
function vis_wm() {      
    var mode = $('mode').value;

    if(mode.match(/WM.+/)) {
        $('wms').show();
    } else {
        $('wms').hide();
    } 

}

/* проверка */

// множественная последовательная проверка
function doWhoisMany() {
    $('stop_search_btn').enable();

    if(stop_search) {
        $('stop_search_btn').disable();
        return finish_whois();
    }
    var id = whois_row.shift();
    if( id ) {
        doWhois( id );
        if(first_run) {
            first_run = 0;
            doWhoisMany();
        } 
    } else {
        stop_search = 1;
    }
}

// собственно whois
function doWhois( id ) {
    // заканчиваем процедуру проверки, если  список закончился
    if( !id) {
        return;
    }

    var ajax_info = new AjaxMessage('am_'+id, 0);
    ajax_info.loading();
    $('dom_' + id).addClassName('domprogress');

    var ajax = new Ajax.Request('/action_whois.pl', {
            method : 'post',
            parameters : { dname : id },
            onFailure : function(res) {
                ajax_info.error(show_error_text('TIMEOUT'));
                $('dom_' + id).addClassName('domcheck');
                doWhoisMany();
            },
            onSuccess : function(res) {
                var json = res.responseText.evalJSON();
                if(json.domstatus == 'AVAIL') {
                    ajax_info.ok( show_error_text(json.domstatus) );
                    //set_domain_avail(id);
                    $('shop_' + id).show();
                    $('pri_dom:new:' + id).innerHTML = json.dprice || 0;
                    $('dom_' + id).removeClassName('domprogress');
                    $('tr_dom:new:' + id).addClassName('domavail');
                    $('dom_' + id).innerHTML = json.dname;
                } else {
                    ajax_info.error( show_error_text(json.domstatus) );
                        $('dom_' + id).removeClassName('domprogress');
                        $('tr_dom:new:' + id).addClassName('domnotavail');
                }
                doWhoisMany();
            }
        });
    return;
}
function show_error_text( code, descr) {
    return error_text[code] + (descr ? ' ' + descr : '' );
}
// устанавливает доступность для регистрации
function set_domain_avail(id) {

    $('new:'+id).enable();
    $('new:'+id).checked = true;
    $('per_pr_new:' + id).show();
    set_domprice('new:' + id);
    $('mainarea').show();
    $('no_reg').hide();
}

function finish_whois() {
    //if( !whois_row.size() && (!$('mainarea') || $('mainarea').style.display == 'none') ) {
        //$('no_reg').show();
    //}
}

// проставление галочек (выбор) в списке доступных доменов
function select_dname(el) {

    if (el.checked) {
        $('per_pr_' + el.value).enable();
        $('cart_' + el.value).addClassName('notavail');
        $('price_' + el.value).innerHTML = '';
    }
    else {
        $('per_pr_' + el.value).disable();
        $('cart_' + el.value).removeClassName('notavail');
    }

    set_domprice(el.value);
}

// ФУНКЦИИ НОВОЙ КОРЗИНЫ

    // AJAX-функция добавления элемента в корзину (может добавлять несколько штук за раз)
    function add_to_cart( id ) {
        if( !id) {
            return;
        }
        var ids = id.split(',');

        var idshash = new Hash;
        ids.each( function(one_id) {
          idshash.set( one_id, 1);      
        });
        qid = idshash.toQueryString();

        // ajax - связываемся с сервером
        var ajax_info;
        if( $('shopm_' + id ) ) {
            ajax_info = new AjaxMessage('shopm_'+id, 0, { 'short' : 1 });
        } else {
            ajax_info = new AjaxMessage('cart_message', 0, { 'short' : 1 });
        }
        ajax_info.loading();

        var ajax = new Ajax.Request('/action_add_shopcart.pl?' + qid, {
            method : 'get',
            onFailure : function(res) {
                ajax_info.error(show_error_text('CART_TIMEOUT'));
            },
            onSuccess : function(res) {
                if(res.responseText == 'OK') {
                    ids.each( function(id) {
                        page_add_item( id);
                    });
                    ajax_info.clear();

                } else {
                    ajax_info.error( 'CART_FAIL');
                }
            }
        });
        return ;
    }

    // отображение на странице добавления позиции в корзину
    function page_add_item( id ) {
        var res = id.match(/^dom:new:(.*)$/);
        var dname = res[1];

        var count = $('cartcount').innerHTML;
        if( isNaN(parseFloat(count)) ) count = 0;
        $('cartcount').update( count*1 + 1);
        var tr = new Element('tr', { 'id' : 'cart_' + id } );
        var td1 = new Element('td', { title : dname } ).update( dname.truncate(30, '...') );
        var td1_2 = new Element('td', { align : 'right' });
        var div1 = new Element('div', { id : 'price_' + id } );
        td1_2.appendChild( div1 );
        div1.update( $('pri_'+ id).innerHTML || '0');

        var td2 = new Element('td', { align : 'right' });

        var div2 = new Element('div', { 'class' : 'to_cart' } );
        var div3 = new Element('div', { 'id' : 'del_' + id });
        div2.appendChild(div3);

        var link = new Element('a', { href : 'javascript: void(del_from_cart("' + id + '")) ' } );
        var img = new Element('img', { src : '/main-img/ico_basket_out.gif', alt : 'Удалить из корзины' } );
        link.appendChild(img);

        //link.update('Удалить');
        div2.appendChild(link);

        td2.appendChild( div2 ) ;

        tr.appendChild(td1);
        tr.appendChild(td1_2);
        tr.appendChild(td2);
        $('cart_table').appendChild(tr);

        $('tr_' + id).remove();

        update_pay_btn();

    }
// функция без Ajax
function del_from_cart( id ) {
    if( !id) {
        return;
    }
    $(id).checked = false;
    $('cartform').action = '/scripts/shopcart.pl';
    $('cartform').submit();

}
/*
    // Ajax-функция удаления элемента из корзины
    function del_from_cart( id ) {
        // ajax
        if( !id) {
            return;
        }

        //var ajax_info = new AjaxMessage('cart_message', 0);
        var ajax_info = new AjaxMessage('del_'+id, 0, { 'short' : 1 });
        ajax_info.loading();

        var ajax = new Ajax.Request('/action_del_shopcart.pl', {
            method : 'post',
            parameters : { 'del' : id },
            onFailure : function(res) {
                ajax_info.error(show_error_text('CART_TIMEOUT'));
            },
            onSuccess : function(res) {
                if(res.responseText == 'OK') {
                    ajax_info.clear();
                    page_del_item( id);

                } else {
                    ajax_info.error( 'CART_FAIL');
                }
            },
            
        });
        return ;
    }
    */

    function page_del_item(id) {
        if( $(id) ) {
            $(id).checked = false;
            set_domprice( id );
        }
        $('cart_' + id).remove();

        var count = $('cartcount').innerHTML;
        $('cartcount').update( count*1 - 1);

        update_pay_btn();

    }

    // делаем кнопку оплаты (не)доступной в зависимости от числа элементов в корзине
    function update_pay_btn() {
        if (!$('pay_btn') ) return;
        var count = $('cartcount').innerHTML;

        if( count > 0 ) {
            $('pay_btn').enable();
            $('empty_btn').enable();
        } else {
            $('pay_btn').disable();
            $('empty_btn').disable();
        }
        if( $('total_price') ) set_totalprice();

    }

    // добавление домена на проверку из корзины
    function page_add_domcheck( name, tld, no_whois ) {
        var id;
         name = name.strip().toLowerCase() ;
        // если имя сразу с tld
        name = name.replace( /\.+$/, '', 'g'); // удаляем лишние точки в конц

        var mres; // результат матча 

        if( mres = name.match(/(.+)\.(.{2,4})/) ) {
            id = name;
            tld = mres[1];
        } else {
            id = tld ? (name + '.' + tld) : name ;
        }

        // проверим, нет ли уже его в спискax
        if( $$('td.name').find( function( td ) {
                 return td.title == id ;
            }) ) {
            alert( 'Данный домен уже был проверен' );
            return 1;
        }
        /*
        if( $$('td.cart_domain').find( function( td ) {
                 return td.title == id ;
            }) ) {
            return;
        }
        */
        if( !tld ) {  // ВСЕ tld
            // подготовимся к поиску
            whois_row.clear();
            stop_search = 0;

            $('mainregform').getInputs( 'checkbox' ).each( function(e ) {
            // пройти все чекбоксы
                    if( e.id == 'all_tlds' ) return;
                    if( !e.checked ) return ;
                    mres = e.name.match( /tld_(.+)/ );
                    page_add_domcheck( name, mres[1] , 1 );
                    whois_row.push( name + '.' + mres[1] );
            });

            if( !tld && !$('all_tlds').checked && !whois_row.size() ) {
                alert( 'Вы не указали ни одной зоны для проверки');
                return;
            }

            // Запускаем проверку

            if( !no_whois) {
                stop_search = 0;
                doWhoisMany();
            }
            return 1;
        }
    if( tld ) {

        var tr = new Element('tr', { 'id' : 'tr_dom:new:' + id, 'class' : 'domcheck' } );
        var td1 = new Element('td', { 'id' : 'dom_' + id, 'class' : 'name', title : id }).update( id.truncate(32, '...') );

        var td2 = new Element('td', { 'class': 'c status' } );
        var div1 = new Element('div', { 'id' : 'am_' + id});
        td2.appendChild(div1);

        var td2_1 = new Element('td', { id: 'pri_dom:new:' + id, 'align' : 'right' });
        var td3 = new Element('td');
        var div2 = new Element('div', { 'id' : 'shop_' + id, style : 'display:none', 'class' : 'to_cart' });
        var div3 = new Element('div', { 'id' : 'shopm_dom:new:' + id } );
        var link = new Element('a', { href : '#', onclick :'add_to_cart("dom:new:' + id + '")' });
        //link.update('В корзину');
        var img = new Element('img', { src : '/main-img/ico_basket_put.gif', alt : 'Положить в корзину' } );
        link.appendChild(img);
        div2.appendChild(div3);
        div2.appendChild(link);
        td3.appendChild(div2);

        tr.appendChild(td1);
        tr.appendChild(td2);
        tr.appendChild(td2_1);
        tr.appendChild(td3);
        $('check_table').appendChild(tr);
    }

        stop_search = 0;
        if(!no_whois) doWhois( id );  // когда 1 домен  
        return 1;
}

// очистить недоступные домены
function del_notavail() {
    $$('TR.domnotavail').invoke('remove');
    $$('TR.domcheck').select( function(e) { return e.hasClassName('domavail') ? 0 : 1 } ).invoke('remove');
}

// Очистить список доменов для проверки
function clear_check() {
    $$('TR.domcheck').invoke('remove');
}

// добавить все позиции в корзину
function add_all_to_cart() {
    var tds = $$('tr.domcheck');
    var ids = new Array;
    var res;
    tds.each( function(e) {
        if(!e.hasClassName('domavail')) return;
        res = e.id.match(/^tr_(.*)$/); 
        if( !$('pri_' + res[1]).visible() ) return;
        ids.push( res[1] );
    });
    add_to_cart( ids.join(',') );
}
