/* *** Привязка событий onready ********************************************* */
function bind_events() {
    // Раскрытие группы
    $('.checkmany_toggle span.icon').css({cursor: 'pointer'}).click(function(){
        var $obj = $(this).parents('th');
        $obj.parents('.checkmany_expandable')
            .toggleClass('checkmany_expanded')
            .toggleClass('checkmany_collapsed');

        $( '#group_' + $obj.attr('id') + ' tr.needcheck' )
          .removeClass('needcheck')
          .addClass('tocheck');

        // Запускаем проверку
        Checker.stopAjax(false);
        checkBunch(5);

        return false;
    });

    // Выбор группы
    $('input.check_all').parent().click(function(){
        var group = $(this).parents('div.checkmany_expandable');

        if($(this).find('input.check_all').attr('checked')){
            if(group.hasClass('checkmany_collapsed'))
                group.find('p.checkmany_toggle span.icon').click();

            group.find('.avail_unavail_list').addClass('need-check-group');

            group.find('tr.avail input:not(:checked)').each(function() {
                $(this).attr('checked', 'checked').triggerHandler('click');
            });
        } else {
            group.find('.avail_unavail_list').removeClass('need-check-group');

            group.find('input:checked').each(function() {
                $(this).attr('checked', false).triggerHandler('click');
            });
        }

        Checker.enableButton();
    });

    // Отложенная привязка автодополнения
    var domain_input = $('#domain_name');
    domain_input.one('focus', function() {
        bind_autocomplete_in_premiums( domain_input, $('#zones_select') );
    });


    // удаление из списка выбранных
    $('#u_choice').delegate('a.remove', 'click', function(){
        var id = 'input[id = "' + $(this).parent().attr('class') + '"]';
        $(this).parent().remove();
        $('.checkmany_wrap .left_side').find(id).attr('checked','').triggerHandler('click');
        return false;
    });  

    // Скачивание списка в виде файла
    $('#download_checklist').click(function() {
        $('#download_checklist_form').submit();
        return false;
    });
    
    // Возврат на страницу переноса домена
    $('#back_for_edit').click(function() {
        $('#back_for_edit_form').submit();
        return false;
    });
}

//показываем блок помощи если все занято
function check_help_popup(){
	if($('#help_domain').find('.popup-help').is(':visible')) return false;

	if($('#group_query .avail .name input').length || $('#group_recommended .avail .name input').length){
		$('#help_domain').hide();
		return false;
	}
	
	var dontHaveQuery = $('#group_query .unavail .name').length == $('#group_query .name').length
	var dontHaveRecommended = $('#group_recommended .unavail .name').length == $('#group_recommended .name').length

	if ( dontHaveQuery == true && dontHaveRecommended == true && !$('.popup-help').is(':visible')) {
		$('#help_domain').addClass('dont_touch').show();
	}
} 


/* скролл для блока выбранных доменов*/
function set_pos_choice_block(){
	var top, last_scroll;
	var u_choice_wrap_width = $u_choice_wrap.width();
	
	if($u_choice_wrap.outerHeight() > $('html').height() && ($u_choice_wrap.css('position') == 'static' || $u_choice_wrap.is(':animated'))) return false;

	if($.browser.msie) {
		var win_scroll_x = document.documentElement.scrollLeft;
		var win_scroll_y = document.documentElement.scrollTop;
	} else {
		var win_scroll_x = window.pageXOffset;
		var win_scroll_y = window.pageYOffset;
	}
	
	if (win_scroll_x > 0) {
		$u_choice_wrap.css({marginLeft: -win_scroll_x});
	} else if (win_scroll_x == 0) {
		$u_choice_wrap.css({marginLeft: 0});
	}
	
    if($(document).height() - win_scroll_y - $u_choice_wrap.outerHeight() < $('#footer').outerHeight() + 31){
        top = $(document).height() - win_scroll_y - $u_choice_wrap.outerHeight() - $('#footer').outerHeight() - 31;
    } else {top = 0}
	
	if (win_scroll_y > def_top){
		$u_choice_wrap.css({
			zIndex: 999,
			position: 'fixed',
			top: top,
			left: def_left,
			width: u_choice_wrap_width
		});
	} else {
		$u_choice_wrap.removeAttr('style');
	}

	if($u_choice_wrap.outerHeight() > $('html').height()) {
		$u_choice_wrap.animate({top: parseInt($('#u_choice_wrap').css('top')) - 100}, 300, function(){
			$(this).removeAttr('style');
		})
		return false;
	}
}
	
/* *** Работа со списком выбранных доменов ********************************** */
function add_to_choice_list($dname){
	if (!$('#u_choice_wrap').length) return false;
    var $dname_block = $dname.parents('.avail')
    var $ul = $('#u_choice').find('li.first');
    var price;
    var name = $dname.next().text();
    var id = $dname.attr('id');
    var one_click = '';
    var title = '';
    var currency = $('#current_currency').text();
    ($dname_block.hasClass('oneclickable'))? one_click = 'express' : one_click = '';
    if ($dname.next('span').find('.tooltip').length) title = 'title="' + $dname.val() + '"';
    if ($dname_block.find('.price_old').length > 0) {
        price = '<small class="price_old">' + $dname_block.find('.price_old').html() + '</small><span class="price_discounted"> ' + $dname_block.find('.price_discounted').html() + '</span>' + currency;
    } else if ($dname_block.find('.price').length > 0) {
        price = '<span class="price">' + $dname_block.find('.price').html() + '</span>' + currency;
    } else {
        price = '<span class="price">0</span>' + currency;
    }

    var li = '<li class="' + id + '"><a href="#" class="remove">remove</a><span class="price_wrap">' + price + '</span><span class="name ' + one_click + '" ' + title + '>' + name + '</span></li>';
    $ul.before(li);
    set_pos_choice_block();
}

function remove_from_choice_list($dname){
	if (!$('#u_choice_wrap').length) return false;
    $('#u_choice').find('li[class = "' + $dname.attr('id') + '"]').remove();
    set_pos_choice_block();
}

var $choice_ul;
function check_choice_price(dname){
	if (!$('#u_choice_wrap').length) return false;
    $choice_ul = $choice_ul || $('#u_choice');

    $('.avail_discount').each(function(){
        var $choice_li = $choice_ul.find('li[class = "' + $('input:checkbox', this).attr('id') + '"]');
        var discounted = ' ' + $('.price_discounted', this).text();
        if ($('.price_discounted', $choice_li).length) {
            $('.price_discounted', $choice_li).text(discounted);
        } else {
            $('.price', $choice_li).addClass('price_old').after(' <span class="price_discounted">' + discounted + '</span>');
        }
    })

    $('.avail_discountable').not('.avail_discount').each(function(){
        var $choice_li = $choice_ul.find('li[class = "' + $('input:checkbox', this).attr('id') + '"]');
        $('.price_old', $choice_li).removeClass('price_old').next('.price_discounted').remove();
    });
}

/* *** Расчёт цен / скидок ************************************************** */
var total_price = 0;

function change_total_amount(obj, price, rf_domain) {
    if (rf_domain) {
        window.open('http://rf.reg.ru/rf/order?domains='+rf_domain);
        obj.checked = false;
        return false;
    }

    if ( obj.checked ) {
        $('#'+obj.id.replace(/\./g, '\\.')).each(function() {
            if ($(this).attr('checked')) {
                $(this).attr('checked', false);
                total_price -= price;
                $('#total_amount').attr('innerHTML', total_price.toFixed(2));
                discounts.ENABLED && discount_check($(this)[0], price);
            }
        });
        obj.checked = true;
        total_price += 2*price;
        $('#total_amount').attr('innerHTML', discounts.formatPrice(total_price));
    }
    else {
        total_price -= price;
        $('#total_amount').attr('innerHTML', discounts.formatPrice(total_price));
    }

    discounts.ENABLED && discount_check(obj, price);
}

function discount_check(obj, price) {
    var id = $(obj).val();
    
    if (discounts.RF_RU && /(\.рф|\.ru)$/.test(id)) {
        var $tr = $(obj).parents('.avail');
        if (obj.checked) {
            if (typeof discounts.ids[obj.id] == 'undefined') {
                discounts.ids[obj.id] = true;
                discounts.checked.rf_ru++;
                if (!$tr.hasClass('avail_rf_ru'))
                    $tr.addClass('avail_rf_ru').addClass('avail_discountable');
            }
        } else {
            if (typeof discounts.ids[obj.id] != 'undefined') {
                delete discounts.ids[obj.id];
                discounts.checked.rf_ru--;
            }
            $tr.removeClass('avail_rf_ru').removeClass('avail_discount');
        }
    }

    if (discounts.NOT_RF_RU && !/(\.рф|\.ru)$/.test(id)) {
        var $tr = $(obj).parents('.avail');
        if (obj.checked) {
            if (typeof discounts.ids[obj.id] == 'undefined') {
                discounts.ids[obj.id] = true;
                discounts.checked.not_rf_ru++;
                if (!$tr.hasClass('avail_not_rf_ru'))
                    $tr.addClass('avail_not_rf_ru').addClass('avail_discountable');
            }
        } else {
            if (typeof discounts.ids[obj.id] != 'undefined') {
                delete discounts.ids[obj.id];
                discounts.checked.not_rf_ru--;
            }
            $tr.removeClass('avail_not_rf_ru').removeClass('avail_discount');
        }
    }

    if (discounts.RF_RU && /(\.рф|\.ru)$/.test(id)) {
        rf_ru_discount(obj, price);
    }

    if (discounts.NOT_RF_RU && !/(\.рф|\.ru)$/.test(id)) {
        not_rf_ru_discount(obj, price);
    }

    calculate_total_discount();
}


function calculate_total_discount() {
    discounts.total = 0;
    $('.avail_discount').each(function(){
        var price = $(this).data('price');       
        var discounted = discounted_get($(this));
        if (discounted == discounts.NO_DISCOUNT)
            return true;

	discounted = discounts.formatPrice(discounted);
        discounts.total += price - discounted;

        if ($('.price_discounted', this).length) {
            $('.price_discounted', this).text(discounted);
        } else {
            $('.price', this).addClass('price_old').after(' <b class="price_discounted">' + discounted + '</b>');
        }
    });
    $('.avail_discountable').not('.avail_discount').each(function(){
        $('.price_old', this).removeClass('price_old').next('.price_discounted').remove();
    });

    $('#discount_amount').text(discounts.formatPrice(discounts.total));
    $('#total_discount_amount').text(discounts.formatPrice(total_price - discounts.total));

    if (discounts.total) {
        $('.checkmany-discount, .checkmany-total-discount').show(50, function(){$(this).clearTypeFix()});
        $('.checkmany-nodiscount').removeClass('bold');
    } else {
        $('.checkmany-discount, .checkmany-total-discount').hide(50, function(){$(this).clearTypeFix()});
        $('.checkmany-nodiscount').addClass('bold');
    }
}

function discounted_push($tr, name, value) {
    var disdata = $tr.data('discounted') || {};
    disdata[name] = value;
    $tr.data('discounted', disdata);
}

function discounted_pop($tr, name) {
    var disdata = $tr.data('discounted') || {};
    if (typeof disdata[name] != 'undefined') {
        delete disdata[name];
    }
    $tr.data('discounted', disdata);
}

function discounted_get($tr) {
    var disdata = $tr.data('discounted') || {};
    var discounted = discounts.NO_DISCOUNT;
    for (var i in disdata) {
        discounted = Math.min(discounted, disdata[i]);
    }
    return discounted;
}

function rf_ru_discount(obj, price) {
    var discounted = 0,
        discount   = true;
    if (discounts.checked.rf_ru == 2) {
        discounted = discounts.price.rf_ru_x2;
        change_discount_banner($('#rf_ru_discount_banner'), 1);
    } else if (discounts.checked.rf_ru >= 3) {
        discounted = discounts.price.rf_ru_x3;
        change_discount_banner($('#rf_ru_discount_banner'), 2);
    } else {
        discount = false;
        change_discount_banner($('#rf_ru_discount_banner'), 0);
        change_discount_banner($('#rf_ru_discount_banner'), 0);
    }

    if (discount) {
        $('.avail_rf_ru').each(function(){
            $(this).addClass('avail_discount').data('price', price);
            discounted_push($(this), 'rf_ru', discounted);
        });
    } else {
        $('.avail_rf_ru').each(function(){
            discounted_pop($(this), 'rf_ru');
            if (discounted_get($(this)) == discounts.NO_DISCOUNT)
                $(this).removeClass('avail_discount');
        }).data('price', price);
    }
}


function not_rf_ru_discount(obj, price) {
    $(obj).parents('.avail').data('price', price);
	
    var percent  = 0,
        discount = true;

    if (discounts.checked.not_rf_ru >= 5) {
        percent = discounts.percent.not_rf_ru_x5;
        change_discount_banner($('#not_rf_ru_discount_banner'), 2);
    } else if (discounts.checked.not_rf_ru >= 2) {
        percent = discounts.percent.not_rf_ru_x2;
        change_discount_banner($('#not_rf_ru_discount_banner'), 1);
    } else {
        discount = false;
        change_discount_banner($('#not_rf_ru_discount_banner'), 0);
    }

    if (discount) {
        $('.avail_not_rf_ru').each(function(){
            $(this).addClass('avail_discount');
            var discounted = ($(this).data('price') * ((100 - percent) / 100)).toFixed(2);
	    discounted = discounts.formatPrice(discounted);
            discounted_push($(this), 'not_rf_ru', discounted);
        });
    } else {
        $('.avail_not_rf_ru').each(function(){
            discounted_pop($(this), 'not_rf_ru');
            if (discounted_get($(this)) == discounts.NO_DISCOUNT)
                $(this).removeClass('avail_discount');
        });
    }
}

function change_discount_banner($banner, dis) {
	if (!$banner.length) return false;
	switch(dis){
		case 0:
			$banner.removeClass('avail1 avail2');
			break;
		case 1:
			$banner.addClass('avail1').removeClass('avail2');
			break;
		case 2:
			$banner.addClass('avail2').removeClass('avail1');
			break;
		default:
			$banner.removeClass('avail1 avail2');
	}
}


