$(document).ready(function () {
    dch.init();
});

var dch = dch || {};
dch.className = 'domainsCheck';
dch.tlds = Array('cz','sk','eu','net','com');
dch.action = '/?do=checkDomain';
dch.link = '/objednavka?domain=';
dch.loadingImage = '<img src="/images/loading_bar.gif" alt="Načítám" title="Načítám" />';
dch.hideTime = 500;
dch.keyTime = 500;

dch.init = function() {	
    // select input
    this._input = $('input.'+dch.className);
    this._input.css('position: absolute; z-index: 1');
    this._input.attr('autocomplete', 'off');
	
    // creat table
    this._input.after('<div style="position: absolute"><table class="'+dch.className+'"></table></div>');
    this._table = this._input.next('div').children('table.'+dch.className); //childeren('table.'+dch.className)
    this._table.attr('style', 'display: none; position: relative; z-index: 2; top: 0px;');
	
    // events
    this._input.keyup(function() {
        var val = $(this).val();
        setTimeout( function(){
            dch.change(val);
        }, dch.keyTime);
    });
	
    this._input.focus(function() {
        dch.change($(this).val());
    });
	
    this._input.blur(function() {
        setTimeout( 'dch.hide()', dch.hideTime);
    });

    this.cache = new Array();	
    this.checkDomain = new Array();	
}

dch.change = function(val){
    if(val.length<3){
        this._table.hide();
        return;
    }
	
    if(val != this._input.val()){
        return;
    }
	
    var domain = val;
    var status = '';
    var tableContent = '';
    var res = val.split(/[.]+/); 
	
    val = res[0];
    tld = res[1];
	
    if(tld != undefined && tld.length>1){
        if(this.cache[domain]==undefined){
            status = dch.loadingImage;
            if(this.checkDomain[domain]==undefined)
                this.checkDomain[domain] = true;
        }else{
            status = this.status(this.cache[domain], domain);
        }
	
        tableContent += '<tr id="check_'+domain.replace('.','_')+'"><th><a href="'+dch.link+domain+'">'+domain+'</a></th><td>'+status+'</td></tr>';		
    }
	
	
    for (var i in dch.tlds) {
	
        if(tld==dch.tlds[i]) continue;
		
        domain = val+'.'+dch.tlds[i];
		
        if(this.cache[domain]==undefined){
            status = dch.loadingImage;
            if(this.checkDomain[domain]==undefined)
                this.checkDomain[domain] = true;
        }else{
            status = this.status(this.cache[domain]);
        }
		
        tableContent += '<tr id="check_'+domain.replace('.','_')+'"><th><a href="'+dch.link+domain+'">'+domain+'</a></th><td>'+status+'</td></tr>';
    }
	
    this._table.html(tableContent);
    this._table.slideDown();
	
    for (var domain in this.checkDomain) {
        if(this.checkDomain[domain]){
            this.checkDomain[domain] = false;
            dch.check(domain);	
        }
    }
	
}

dch.hide = function(){
    this._table.slideUp();
}

dch.status = function(stav, domain){
    var text = '';
    switch(stav) {
        case true :
            text = 'je volná';
            break;
        case false :
            text = 'je obsazena';
            break;
        default :
            text = 'nevim';
    }
	
    return '<a href="'+dch.link+domain+'"><span class="'+stav+'">'+text+'</span></a>';
}

dch.check = function(domain){
    $.getJSON(dch.action, {
        'domain': domain
    }, function(payload) {
        dch.cache[domain] = payload.domain;
        $('#check_'+domain.replace('.','_')+' td').html(dch.status(payload.domain, domain));
    });	
}
