/**
 * Doménové centrum
 * 
 * Doménové Centrum má okamžitě (AJAX) zjišťovat, zda je možné si
 * zaregistrovat zadané doménové jméno pro domény .cz, .com a .eu.
 * Pokud je doména obsazená, tak ukáže náhled a zjistí whois informace
 * 
 */


/**
 * Po načtení stránky se zobrazí instrukce, pokud není zadána žádná doména
 */
window.onload = function() {
  document.getElementById("output").style.display = "block";
   Field.focus("domainName");
   if ($F("domainName").length > 1) {
       domc.keyPressed();
   }
   else {
       domc.showInstructions();
   }
}

// namespace pro Doménové Centrum
var domc = {};

// PROMĚNNÉ
domc.domainName = null;  // jméno domény
domc.lastSearch = null;  // která doména se zjišťovala naposled


//ceny jednotlivých domén u jednotlivých registrátorů
domc.domainPrice = {}
//kvapem.cz
domc.domainPrice.kvapem = new Array;
domc.domainPrice.kvapem['cz'] = '185';
//Stable.cz
domc.domainPrice.stable = new Array;
domc.domainPrice.stable['cz'] = '185';
domc.domainPrice.stable['com'] = '195';
domc.domainPrice.stable['eu'] = '195';
//Explorer.cz
domc.domainPrice.explorer = new Array;
domc.domainPrice.explorer['cz'] = '269';
domc.domainPrice.explorer['com'] = '199';
domc.domainPrice.explorer['eu'] = '269';
//Ignum.cz
domc.domainPrice.ignum = new Array;
domc.domainPrice.ignum['cz'] = '99';
domc.domainPrice.ignum['com'] = '225';
domc.domainPrice.ignum['eu'] = '238';
//Zoner.cz
domc.domainPrice.zoner = new Array;
domc.domainPrice.zoner['cz'] = '415';
domc.domainPrice.zoner['com'] = '390';
domc.domainPrice.zoner['eu'] = '390';
//Active24.cz
domc.domainPrice.active24 = new Array;
domc.domainPrice.active24['cz'] = '209';
domc.domainPrice.active24['com'] = '199';
domc.domainPrice.active24['eu'] = '199';
//Otoman
domc.domainPrice.otoman = new Array;
domc.domainPrice.otoman['cz'] = '299';
domc.domainPrice.otoman['com'] = '249';
domc.domainPrice.otoman['eu'] = '300';
//Endora
domc.domainPrice.endora = new Array;
domc.domainPrice.endora['cz'] = '199';
domc.domainPrice.endora['com'] = '229';
domc.domainPrice.endora['eu'] = '199';


/**
 * Po stisku klávesy se vyčisí zadaná doména a případně se začne hledat
 */
domc.keyPressed = function() {
    if ($F("domainName").length == 0) {
        domc.showInstructions();
        domc.ajax.cancelRequests();
        return;
    }
    else if (domc.domainName == $F("domainName")) {
        return;
    }
    else {
        domc.domainName = $F("domainName");  //načíst doménu z formuláře
        domc.domainName = domc.purgeDomainName(domc.domainName);  //vyčistit doménu

        $("domainName").value = domc.domainName;  // vrátit zpět do formuláře
        
        //pokud se zadá jen jeden znak, který se ořízne, tak se nehledá
        if ($F("domainName").length == 0) {
            domc.showInstructions();
            domc.ajax.cancelRequests();
            return;
        }
        domc.searchDomain();
    }
}


/**
 * Funkce zavolá dotaz na server na dostupnost domén pro .cz, .com, .eu
 * Po odpovědi 
 */
domc.searchDomain = function() {
    if (domc.lastSearch != domc.domainName) {
        domc.lastSearch = domc.domainName;
        
        // před voláním nového requestu se starý zruší (včetně whois requestů)
        domc.ajax.cancelRequests();

        domc.ajax.requestCz = new Ajax.Request('./q/cz/' + domc.domainName, {
            method:'get',
            onSuccess: function(q) {
                domc.ajax.onSucces(q,"cz");
            },
            onLoading: domc.ajax.onLoading()
        });
        domc.ajax.requestCom = new Ajax.Request('./q/com/' + domc.domainName, {
            method:'get',
            onSuccess: function(q) {
                domc.ajax.onSucces(q,"com");
            },
            onLoading: domc.ajax.onLoading()
        });
        domc.ajax.requestEu = new Ajax.Request('./q/eu/' + domc.domainName, {
            method:'get',
            onSuccess: function(q) {
                domc.ajax.onSucces(q,"eu");
            },
            onLoading: domc.ajax.onLoading()
        });
    }
}


/**
 * Odstranění znaků nepovolených pro doménový název z řetězce
 */
domc.purgeDomainName = function(domainName) {
    if (domainName.length == 0) { return domainName; }
    domainName = domainName.toLowerCase();  
    domainName = domainName.replace(/[^a-zA-Z0-9-]+/g, "");
    domainName = domainName.substring(0,63);
    return domainName;
}


/**
 * Zkrácení domény na méně znaků
 */
domc.cut = function(domainName) {
    if (domainName.length > 13) {
        out = domainName.substr(0,6);
        out += "...";
        out += domainName.substr(domainName.length-6,6);
        return out;
    }
    else {
        return domainName;
    }
}


/**
 * Funkce zobrazí instrukce a skryje výsledky
 */
domc.showInstructions = function() {
    $('instructions').show();
    $('results').hide();
};


/**
 * Funkce skryje instrukce a zobrazí výsledky
 */
domc.showResults = function() {
    $('instructions').hide();
    $('results').show();
};


domc.whois = {}

domc.whois.setWhois = function(whois, tld) {
    if (tld == "cz") {
    	$('whois' + tld).innerHTML = "Informace nejsou dostupné:<br />";
//        $('whois' + tld).innerHTML = "<strong>Doména:</strong> " + whois.domainName + '.' + tld + '<br />';
//        $('whois' + tld).innerHTML += "<strong>Popis:</strong> " + whois.description + '<br />';
//        $('whois' + tld).innerHTML += "<strong>Kontakt:</strong> " + whois.email + '<br />';
//        $('whois' + tld).innerHTML += "<strong>Registrováno od:</strong> " + whois.registeredFrom + '<br />';
//        $('whois' + tld).innerHTML += "<strong>Vyprší:</strong> " + whois.expiration + '<br />';
//        $('whois' + tld).innerHTML += "<strong>Držitel:</strong> " + whois.holder + '<br />';
//        $('whois' + tld).innerHTML += "<strong>Technický správce:</strong> " + whois.technicalHolder + '<br />';
//        $('whois' + tld).innerHTML += "<strong>Registrátor:</strong> " + whois.registrar + '<br />';
    }
    else if (tld == "com") {
        $('whois' + tld).innerHTML = "<strong>Doména:</strong> " + whois.domainName + '.' + tld + '<br />';
        $('whois' + tld).innerHTML += "<strong>Registrováno od:</strong> " + whois.registeredFrom + '<br />';
        $('whois' + tld).innerHTML += "<strong>Vyprší:</strong> " + whois.expiration + '<br />';
        $('whois' + tld).innerHTML += "<strong>Registrátor:</strong> " + whois.registrar + '<br />';
    }
    else if (tld == "eu") {
        $('whois' + tld).innerHTML = "<strong>Doména:</strong> " + whois.domainName + '.' + tld + '<br />';
        $('whois' + tld).innerHTML += "<strong>Registrováno od:</strong> " + whois.registeredFrom + '<br />';
        $('whois' + tld).innerHTML += "<strong>Registrátor:</strong> " + whois.registrar + '<br />';
        $('whois' + tld).innerHTML += '<a href="http://www1.whois.eu/public/whois/GetDomainStatus.htm?domainName=' + whois.domainName + '" onclick="return!window.open(this.href);">Detaily</a>';
    }
    $('whois' + tld).innerHTML += '<br/>  <a onclick="return!window.open(this.href);" style="display:inline;" href="' + domc.render.getWhoisLink(whois.domainName, tld) + '">Pro detaily klikněte</a>'; 
}


domc.whois.request = new Array;
/**
 * Načtení whois informací
 * @param string domain Doménové jméno, pro které se zjišťuje
 * @param string tld Přípona domény pro kterou se zjišťuje whois info
 */
domc.whois.loadWhois = function(domain, tld) {
    domc.whois.request[tld] = new Ajax.Request('./whois/' + tld + '/' + domain, {
        method:'get',
        onSuccess: function(q) {
            try {
                var response = q.responseText.evalJSON();
                if (response.whois.err) {
                    throw "err";
                }
                domc.whois.setWhois(response.whois, tld);
            }
            catch (e) {
                $('whois' + tld).innerHTML = 'Informace nejsou dostupné.<br /><br />' +
                        '<a onclick="return!window.open(this.href);" style="display:inline;" href="' + domc.render.getWhoisLink(domain, tld) + '">Pro whois klikněte</a>';
            }
        },
        onLoading: function() {
             $('whois' + tld).innerHTML = "Informace se nahrávají";
        }
    });
}

/**
 * Zobrazení whois (po najetí na odkaz)
 * @param string tld Pro kterou doménu
 */
domc.whois.show = function(tld) {
    $('whois' + tld).show();
    $('copyright').setStyle({'padding-top': '225px'});  
}

/**
 * Skrytí whois (po sjetí mimo odkaz nebo div whois)
 * @param string tld Pro kterou doménu
 */
domc.whois.hide = function(tld) {
    $('whois' + tld).hide();
    $('copyright').setStyle({'padding-top': '225px'});  
}


domc.ajax = {}
domc.ajax.request = new Array;
domc.ajax.requestCz = null;  // ajaxový request
domc.ajax.requestCom = null;  // ajaxový request
domc.ajax.requestEu = null;  // ajaxový request

/**
 * Zrušení všech otevřených ajax requestů
 */
domc.ajax.cancelRequests = function() {
    try {
        domc.ajax.requestCz.transport.abort();
        domc.ajax.requestCom.transport.abort();
        domc.ajax.requestEu.transport.abort();
        domc.whois.request['cz'].transport.abort();
        domc.whois.request['com'].transport.abort();
        domc.whois.request['eu'].transport.abort();
    }   
    catch(e) {} 
}


/**
 * Požadavek se úspěšně vrátil ze serveru
 */
domc.ajax.onSucces = function(query, tld) {
    var response = query.responseText.evalJSON();
    if (tld == "cz") {
        whoisState = response.cz;
    }
    else if (tld == "com") {
        whoisState = response.com;
    }
    else if (tld == "eu") {
        whoisState = response.eu;
    }
    domc.render.drawOne(response.domainName, tld, whoisState);
    
    if (whoisState == 'u') {
        domc.whois.loadWhois(response.domainName, tld);
    }
}

/**
 * Vykreslení načítání pro všechny domény
 */
domc.ajax.onLoading = function() {
    domc.showResults();
    domc.render.drawLoadingOne('cz');
    domc.render.drawLoadingOne('com');
    domc.render.drawLoadingOne('eu');
}

/**
 * Funkce pro vykreslování výsledků
 */
domc.render = {};

domc.render.getWhoisLink = function(domainName, tld) {
    if (tld == "cz") {
        whoisLink = "http://www.nic.cz/whois/?d=" + domainName + ".cz";
    }
    else if (tld == "com") {
        whoisLink = "http://www.dnsstuff.com/tools/whois.ch?ip=" + domainName + ".com";
    }
    else if (tld == "eu") {
        whoisLink = "http://www1.whois.eu/public/whois/GetDomainStatus.htm?domainName=" + domainName + "&changeLang=cs";
    }
    return whoisLink;
}
                 

/**
 * Vykreslení výsledků pro jednu doménu
 * @param string domainName Doména, která se hledala
 * @param string tld Přípona domény
 * @param availability Dostupnost dané domény (a, u, e, ea)
 */
domc.render.drawOne = function(domainName, tld, availability) {
    if (availability == 'a') { //doména je volná
        $(tld).className = 'available';
        // pokud jde o CZ, tak pridam kvapem, jinak ne || pridal Michal Prynych
        if (tld == 'cz') {
        	$(tld).innerHTML =
	        '<div class="availableTitle">' + domc.cut(domainName) + '.' + tld + '<p> je <strong>volná!</strong></p></div>' +  
			'<p><a href="http://www.stable.cz/objednavka/?g%5Bprogram%5D=parking&g%5Bname%5D=' + domainName + '&amp;g%5Btld%5D=' + tld + '" onclick="return!window.open(this.href);">Stable.cz: ' + domc.domainPrice.stable[tld] + ' Kč</a></p>' +  
	        '<p><a href="http://kvapem.cz/" onclick="return!window.open(this.href);">Kvapem.cz: ' + domc.domainPrice.kvapem[tld] + ' Kč</a></p>' + 
			'<p><a href="http://www.otoman.cz/webhosting/objednat/?g[name]=' + domainName + '&g[tld]=' + tld + '" onclick="return!window.open(this.href);">Otoman.cz: ' + domc.domainPrice.otoman[tld] + ' Kč</a></p>' + 
			'<p><a href="https://www.endora.cz/order" onclick="return!window.open(this.href);">Endora.cz (hosting zdarma): ' + domc.domainPrice.endora[tld] + ' Kč</a></p>';
        } else {
	        $(tld).innerHTML =
	        '<div class="availableTitle">' + domc.cut(domainName) + '.' + tld + '<p> je <strong>volná!</strong></p></div>' +  
			//'<a href="http://kvapem.cz/" onclick="return!window.open(this.href);">Kvapem.cz: ' + domc.domainPrice.ignum[tld] + ' Kč</a>' + 
			'<p><a href="http://www.stable.cz/objednavka/?g%5Bprogram%5D=parking&g%5Bname%5D=' + domainName + '&amp;g%5Btld%5D=' + tld + '" onclick="return!window.open(this.href);">Stable.cz: ' + domc.domainPrice.stable[tld] + ' Kč</a></p>' +  
                        '<p><a href="http://www.otoman.cz/webhosting/objednat/?g[name]=' + domainName + '&g[tld]=' + tld + '" onclick="return!window.open(this.href);">Otoman.cz: ' + domc.domainPrice.otoman[tld] + ' Kč</a></p>' +
	        '<p><a href="https://www.endora.cz/order" onclick="return!window.open(this.href);">Endora.cz (hosting zdarma): ' + domc.domainPrice.endora[tld] + ' Kč</a></p>' +
	        '<p><a href="http://www.active24.cz/cz/domeny/objednavka/?domain%5B%5D=' + domainName + '&tld%5B%5D=' + tld + '" onclick="return!window.open(this.href);">Active24.cz: ' + domc.domainPrice.active24[tld] + ' Kč</a></p>';   
        }
             
    }
    else if (availability == 'u')  {  //doména je obsazená
        $(tld).className = 'unavailable';
        if (tld == "cz") {
            whoisLink = "http://www.nic.cz/whois/?d=" + domainName + ".cz";
        }
        else if (tld == "com") {
            whoisLink = "http://www.dnsstuff.com/tools/whois.ch?ip=" + domainName + ".com";
        }
        else if (tld == "eu") {
            whoisLink = "http://www1.whois.eu/public/whois/GetDomainStatus.htm?domainName=" + domainName + "&changeLang=cs";
        }
        $(tld).innerHTML =
        '<div class="unavailableTitle">' + domc.cut(domainName) + '.' + tld + '<p> je <strong>obsazená</strong>.</p></div>' +  
        '<p><a href="http://www.' + domainName + '.' + tld + '/" onclick="return!window.open(this.href);">Navštívit</a></p>' +
        
        //'<div onmouseout="domc.preview.hide(\'' + tld + '\')"  onmouseover="domc.preview.show(\'' + tld + '\')">' +
        //'<a class="snap_shots" href="http://www.' + domainName + '.' + tld + '/" onclick="return!window.open(this.href);">Navštívit</a>' +
        
        //'<div id="preview' + tld + '" style="display: none;">' +
        //'<a href="http://www.' + domainName + '.' + tld + '/" onclick="return!window.open(this.href);">' +
        //'<img class="preview" src="http://shots.snap.com/preview/?url=http%3A%2F%2F' + domainName + '.' + tld + '&key=828f0486d340ab334ac5b5ab35ac900b&src=www.domenovecentrum.cz&sb=0&v=2.11.1&size=small&lang=en-us&search_type=spasense&act=both_link&po=0&rp=null&has_img=0&referrer=http%3A%2F%2Flocalhost%2Fmartin%2Fdomc%2F03%2F&svc=&view_id=99da734dbdf3b19808c22f534a5fd600&cp=shot_view!preview!localhost&goto=Go%20to%20%25URL&direct=1&sc=0" /><br />'+
        //'</a>' +
       // '<p>Ehanced by <a style="display:inline;" href="http://www.snap.com/" title="Snap.com" onclick="return!window.open(this.href);"><img src="./www/images/snapshots.png" /></a></p>' +
        //'</div></div>' +
        //'<a style="font-size: 75%;" title="Sign Up to add Free Snap Shots to your site!" href="http://www.snap.com/about/shots.php?source=www.domenovecentrum.cz&campaign=shot_link_1!!www.domenovecentrum.cz">Snap Shot your site<img src="./www/images/snap/icon.png" /></a>' +
        '<div onmouseover="domc.whois.show(\'' + tld + '\');return false;" onmouseout="domc.whois.hide(\'' + tld + '\');return false;">' +
        '<p><a href="' + domc.render.getWhoisLink(domainName, tld) + '" onclick="return!window.open(this.href);">Whois</a></p>' + 
        '<p><a href="http://www.domenovecentrum.cz/page-rank-s-rank-yahoo-backlinks-alexa-traffic-jyxo-rank/url/'+domainName+'.'+tld+'" onclick="return!window.open(this.href);">Ranky</a></p>' + 
        '<div id="whois' + tld + '" style="font-size: 80%; text-align: left; display: none;"></div></div>';

    }
    else if (availability == 'e')  {  //došlo k chybě při zjišťování
        $(tld).className = 'error';
        $(tld).innerHTML =
        '<div class="errorTitle">' + domc.cut(domainName) + '.' + tld + '</div>' +  
        'Nepodařilo se zjistit.<br />' +
        'Omlouváme se.';
    }
    else if (availability == 'ea')  {  //nelze objednat
        $(tld).className = 'error';
        $(tld).innerHTML =
        '<div class="errorTitle">' + domc.cut(domainName) + '.' + tld + '</div>' +  
        '<span>Tato doména je neplatná nebo blokovaná, tudíž ji nelze objednat.</span>';
    }
    // posunutí copyrightu dolu, jinak překrývá výsledky
   $('copyright').setStyle({'padding-top': '225px'});  
    
}

/**
 * Vykreslení načítání pro konkrétní doménu
 * @param string tld Přípona domény, která se má vykreslit jako načítající se
 */
domc.render.drawLoadingOne = function(tld) {
    $(tld).className = 'loading';
    $(tld).innerHTML = 
    '<span class="loadingText">' + domc.cut(domc.domainName) + '.' + tld + '<br />se nahrává...</span>';
}

domc.preview = {}
domc.preview.show = function(tld) {
    $('preview' + tld).show();
}
domc.preview.hide = function(tld) {
    $('preview' + tld).hide();
}


