$(document).ready(function() {
WhoisWhisperer.init();
});
WhoisWhisperer = new Object();
WhoisWhisperer.translate = {
order : 'volná / objednat',
transfer : 'převod',
runParking : 'zprovoznit hosting',
onlyServices : 'objednat hosting',
canNot : 'nelze objednat',
error : 'chyba',
checkEurope : 'Zobrazit další evropské domény',
checkWorld : 'Zobrazit i ostatní domény',
clickToBuy : 'Kliknutím pokračujte v objednávce',
changeTariff : 'Změnu tarifu provedete v klientské sekci',
checking : 'ověřuje se',
onWebhosting : 'Vedena u hostingu %s'
}
WhoisWhisperer.products = {};
WhoisWhisperer.orderLink = '/cs/order';
WhoisWhisperer.extraGtmEvent = {};
// Prodleva mezi stisknutim klavesy a spustenim naseptavace v sekundach
WhoisWhisperer.timeout = 3;
WhoisWhisperer.additivePostMap = {};
WhoisWhisperer.keepHiden = false;
WhoisWhisperer.marketingGTMSend = false;
WhoisWhisperer.lastValue = '';
WhoisWhisperer.maxsize = 75;
WhoisWhisperer.tlds = Array();
WhoisWhisperer.tlds.cz = Array('cz')
WhoisWhisperer.tlds.eu = Array('eu')
WhoisWhisperer.tlds.com = Array('com')
WhoisWhisperer.tlds.base = Array(
'co.cz',
'org',
'net',
'biz',
'info'
);
WhoisWhisperer.tlds.otherEurope = Array(
'pl',
'at',
'be',
'dk',
'lv',
'li',
'lt',
'ro',
'si',
'es',
'se',
'ch',
'co.at',
'co.uk',
'org.uk',
'me.uk'
);
WhoisWhisperer.tlds.otherWorld = Array(
'as',
'com.do',
'fm',
'co.za',
'tw',
'to',
'com.tr',
'com.ua',
'ua',
'com.vn',
'net.vn',
'org.vn',
'vn',
'ru',
'jobs',
'mobi',
'name',
'tel',
'travel',
'in',
'de.com',
'eu.com',
'gb.com',
'gb.net',
'hu.com',
'me',
'no.com',
'ru.com',
'se.com',
'se.net',
'uk.com',
'uk.net',
'qc.com',
'qc.com',
'br.com',
'bz',
'uy.com',
'ae.org',
'asia',
'cn',
'cn.com',
'co.in',
'jpn.com',
'kr.com',
'sa.com',
'cc',
'tv',
'ws',
'za.com',
'mn',
'net.in',
'org.in',
'gen.in',
'ind.in',
'firm.in'
);
WhoisWhisperer.init = function() {
if($('.whois_whisperer').get(0) == undefined) {
return;
}
var elementWithWhisperer = $('.whois_whisperer');
elementWithWhisperer.attr('autocomplete','off');
elementWithWhisperer.attr('maxlength', WhoisWhisperer.maxsize);
var offsetRight = $(window).width()
- elementWithWhisperer.offset().left
- elementWithWhisperer.outerWidth()
+ 2
;
var mytop = elementWithWhisperer.offset().top
+ elementWithWhisperer.height()
+ 7
;
var mystyle =
($(window).width() - elementWithWhisperer.offset().left) > ($(window).width() / 2)
? 'left: '+elementWithWhisperer.offset().left+'px;'
: 'right: '+offsetRight+'px;'
;
$('body').append(''
+'
'
);
elementWithWhisperer.keyup(function(event_of_key) {
if(event_of_key.which != 13){
WhoisWhisperer.main(this);
}
});
elementWithWhisperer.focus(function() {
WhoisWhisperer.main(this);
});
elementWithWhisperer.blur(function() {
setTimeout(function() {
if($('.whois_whisperer:focus').length) {
return;
}
WhoisWhisperer.hideBox();
},
500);
});
}
WhoisWhisperer.main = function(element) {
clearTimeout(this.clearTimeout);
var elementName = $(element).attr('data-whois-whisperer-name');
var mytop = $(element).offset().top + $(element).height();
$('#whois_whisperer_box').css('top', mytop + 'px');
this.clearTimeout = setTimeout(function() {
var value = element.value;
if((value.length > 2)&&(value.length < WhoisWhisperer.maxsize)) {
if( ! WhoisWhisperer.marketingGTMSend){
WhoisWhisperer.marketingGTMSend = true;
}
value = value.replace(/\s/g,'');
var html = '';
if(value != WhoisWhisperer.lastValue) {
WhoisWhisperer.lastValue = value;
value = WhoisWhisperer.repair(value);
html += ''
+''
+' '
+' ';
for(key in WhoisWhisperer.tlds.cz) {
html += WhoisWhisperer.renderDomainRow(
value+'.'+WhoisWhisperer.tlds.cz[key], 'cz', false, elementName, WhoisWhisperer.tlds.cz[key]
);
}
for(key in WhoisWhisperer.tlds.eu) {
html += WhoisWhisperer.renderDomainRow(
value+'.'+WhoisWhisperer.tlds.eu[key], 'eu', false, elementName, WhoisWhisperer.tlds.eu[key]
);
}
for(key in WhoisWhisperer.tlds.com) {
html += WhoisWhisperer.renderDomainRow(
value+'.'+WhoisWhisperer.tlds.com[key], 'com', false, elementName, WhoisWhisperer.tlds.com[key]
);
}
html += ''
+' ';
html += ''
+' | '
+' '
+' ';
for(key in WhoisWhisperer.tlds.base) {
html += WhoisWhisperer.renderDomainRow(
value+'.'+WhoisWhisperer.tlds.base[key],
'base', false, elementName, WhoisWhisperer.tlds.base[key]
);
}
html += ''
+' '
+' |
';
html += ''
+ ''
+ ' '
;
for(key in WhoisWhisperer.tlds.otherEurope) {
html += WhoisWhisperer.renderDomainRow(
value+'.'+WhoisWhisperer.tlds.otherEurope[key], 'europe', true,
elementName, WhoisWhisperer.tlds.otherEurope[key]
);
}
html += ''
+' '
+' | '
+' '
;
for(key in WhoisWhisperer.tlds.otherWorld) {
html += WhoisWhisperer.renderDomainRow(
value+'.'+WhoisWhisperer.tlds.otherWorld[key], 'world', true, elementName, WhoisWhisperer.tlds.otherWorld[key]
);
}
html += ''
+' '
+' | '
+'
'
+''
+' '
+' '
+' | '
+' '
+' '
+' | '
+'
'
;
$('#whois_whisperer_table').html(html);
for(key in WhoisWhisperer.tlds.cz) {
WhoisWhisperer.check(value, WhoisWhisperer.tlds.cz[key]);
}
for(key in WhoisWhisperer.tlds.eu) {
WhoisWhisperer.check(value, WhoisWhisperer.tlds.eu[key]);
}
for(key in WhoisWhisperer.tlds.com) {
WhoisWhisperer.check(value, WhoisWhisperer.tlds.com[key]);
}
for(key in WhoisWhisperer.tlds.base) {
WhoisWhisperer.check(value, WhoisWhisperer.tlds.base[key]);
}
}
if( ! WhoisWhisperer.keepHiden){
$('#whois_whisperer_box').show();
}
}
else {
WhoisWhisperer.hideBox();
}
},
this.timeout * 1000);
}
WhoisWhisperer.hideBox = function(){
$('#whois_whisperer_box').hide();
}
WhoisWhisperer.pushProductAddToCard = function(tld, price, operationName){
const name = 'Doména '+tld+' '+operationName;
const id = 'domain_'+tld+'_'+operationName;
GtmHelper.addProduct(name, price, id, 'Domain');
const gtmEvent = GtmHelper.render();
dataLayer.push({ ecommerce: null });
dataLayer.push(gtmEvent);
}
WhoisWhisperer.checkOtherTlds = function(element) {
//zde je potreba nastavit navraceni focusu pri scrollovani seznamem domen
//kvuli ie, ktery pri kliknuti na scroller ztrati focus a whisperer se zavre
$('#whois_whisperer_check_europe').closest('.container').scroll(
function(){
$('.whois_whisperer').focus();
});
$(element).slideToggle();
$('.whois_whisperer').focus();
}
WhoisWhisperer.renderDomainRow
= function(domainName, type, hidden, elementName, tld)
{
var additivePostMap = WhoisWhisperer.prepareAdditivePosts(elementName);
var idPart = WhoisWhisperer.domainToId(domainName);
var html = '';
html += ''
+'.'+tld+''
+ domainName
+' | '
+' '
+' '+WhoisWhisperer.translate.checking+''
+' |
'
;
html += ''
+''
+' '
+' ';
return html;
}
WhoisWhisperer.prepareAdditivePosts = function(name){
return WhoisWhisperer.additivePostMap[name]
? WhoisWhisperer.additivePostMap[name]
: {}
;
}
WhoisWhisperer.submit = function(formIdentify){
const formContainer = $('#whois_whisperer_form_'+formIdentify);
formContainer.submit();
const data = WhoisWhisperer.products[formIdentify];
WhoisWhisperer.pushProductAddToCard(
data.tld,
data.price,
data.operation
);
};
WhoisWhisperer.hide = function(){
WhoisWhisperer.hideBox();
};
WhoisWhisperer.check = function(domain, tld) {
$.ajax({
type: "POST",
async: true,
cache: false,
url: '/whois-agent.php',
data: ({ name : domain, tld : tld }),
success: function(answer) {
var result = $.evalJSON(answer);
var idPart = WhoisWhisperer.domainToId(domain+'.'+tld);
if($('#whois_whisperer_row_'+idPart).length < 1) {
// nez prisla odpoved, zmenila se overovana domena, vysledek zahodime
return;
}
var color = '';
var text = '';
var info = '';
switch(result.result) {
case 'CREATE':
case 'CREATE_ONLY_DOMAIN':
buttonType = 'buttonDomain';
text = WhoisWhisperer.translate['order'];
break;
case 'TRANSFER':
case 'TRANSFER_ONLY_DOMAIN':
buttonType = 'buttonDomain prevod';
text = WhoisWhisperer.translate['transfer'];
break;
case 'RUN_PARKING':
buttonType = 'buttonDomain hosting';
text = WhoisWhisperer.translate['runParking'];
break;
case 'ONLY_SERVICES':
buttonType = 'buttonDomain';
text = WhoisWhisperer.translate['onlyServices'];
break;
case 'CAN_NOT':
buttonType = 'buttonDomain stopDomain';
text = WhoisWhisperer.translate['canNot'];
info = WhoisWhisperer.translate['changeTariff'];
break;
case 'ERROR':
default:
buttonType = 'buttonDomain error';
text = WhoisWhisperer.translate['error'];
break;
}
$('#whois_whisperer_status_'+idPart).html(''+text+'');
$('#whois_whisperer_name_'+idPart)
.html(result.name+'.'+tld)
.attr('data-price', result.price)
.attr('data-tld', tld)
.attr('data-operation', result.result);
WhoisWhisperer.products[idPart] = {
price: result.price,
tld: tld,
operation: result.result
};
$('#whois_whisperer_hidden_'+idPart).get(0).value = result.name+'.'+tld;
$('#whois_whisperer_operation_'+idPart).get(0).value = result.result;
if(! result.canOrder) {
$('#whois_whisperer_row_'+idPart).get(0).onclick = '';
}
if(result.webhostingName) {
$('#whois_whisperer_row_'+idPart).after(
' |
'
+ WhoisWhisperer.translate['onWebhosting']
.replace(/%s/, result.webhostingName)
+ ' |
'
);
}
if(info) {
$('#whois_whisperer_row_'+idPart).after(
''+info+' |
'
);
}
}
});
}
WhoisWhisperer.repair = function(domain) {
return domain.replace(/^https?:\/\//, '')
.replace(/^www\./, '')
.replace(/^\./, '')
.replace(/[!"#$%&'()*+,\/:;<=>?@\[\]^_`{|}~]/g, '')
.split('.')[0]
;
}
WhoisWhisperer.domainToId = function(domain) {
return domain.replace(/[\W.]/g, '_');
}