var Domain = Class.$extend({
    __init__ : function(sld, tld) {
        this.sld = sld;
        this.tld = tld;
        this.price = null;
        this.available = false;
        this.elem = $('.'+this.sld+'.'+this.tld);
    },

    load : function() {
        var model = this;
        $.ajax({
            type: 'GET',
            url: BASE_URL + "domain/lookup/" + this.tld + "/" + this.sld,
            async: true,
            dataType: 'json',
            timeout: 10000,
            success: function(resp){
                model.available = resp.available;
                model.price = resp.price;
                model.change_state();
            },
            complete: function(){
                model.elem.removeClass('load');
            }
        });
    },

    change_state : function() {
        var model = this;
        if (this.price !== null) {
            if (model.available) {
                model.elem.addClass('domain_y');
            } else {
                model.elem.addClass('domain_n');
            }
            model.elem.removeClass('loading');
            $(".domain").append(model.elem);
        }
    }
});

function check_domains() {
    $('#domain > li').each(function(){
        var class = $(this).attr('class').split(" ");
        var domain = new Domain(class[0], class[1]);
        domain.load();
    });
}

function load_more() {
    var scroll_height = $(window).scrollTop();
    var bottom_list = $(document).height()
        - $(window).height()
        - $('#footer').outerHeight(true)
        - 83; // Border, Margin, Padding at bottom

    if (scroll_height > bottom_list && not_last && $.inArray(load_count, loaded) == -1) {
        loaded.push(load_count);
        $.ajax({
            type: 'GET',
            url: BASE_URL + "domain/loadmore/" + SLD + "/" + load_count,
            async: true,
            dataType: 'json',
            timeout: 10000,
            success: function(resp){
                var domains = [];
                if (resp == false) {
                    not_last = false;
                } else {
                    for (key in resp) {
                        var domain = resp[key];
                        var html = "<li class=\"" + domain.sld + " " + domain.tld
                             + " loading\"><a href=\"" + BASE_URL + "domain/register/"
                             + domain.tld + "/" + domain.sld + "\">"
                             + domain.sld + "." + domain.tld + "</a>"
                             + "<span class=price>" + domain.price + "</span></li>";
                        domains.push($(html));
                        $('#domain').append(html);
                    }
                    for(key in domains) {
                        var elem = domains[key];
                        var class = elem.attr('class').split(" ");
                        var domain = new Domain(class[0], class[1]);
                        domain.load();
                    }
                    load_count += 1;
                }
            }
        });
    }
}

$(document).ready(function(){
  $("label").inFieldLabels();
});

