window.onload = function() {  
   order.basket.get();
   Field.focus("domainName");
   if ($F("domainName").length > 1) {
       order.keyPressed();
   } 
   else {
       order.showInstructions();
   }
   if($F('variant') == 'parking' || $F('variant') == 'otoman') {
       $('period').hide();
   }
}

function parkingHide() {
    if($F('variant') == 'parking' || $F('variant') == 'otoman') {
        $('period').hide();
    } else {
        $('period').show();
    }
}

function checkClick1() {
   if($('extendCheck').checked == true && $('transferCheck').checked == false) {
       $('extendCheck').checked = false;
   }
}

function checkClick2() {
   if($('extendCheck').checked == true && $('transferCheck').checked == false) {
       $('transferCheck').checked = true;
   }
}

var order = {};

order.domainName = null;  // jméno domény
order.lastSearch = null;  // která doména se zjišťovala naposled

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

        $("domainName").value = order.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) {
            order.showInstructions();
            order.ajax.cancelRequests();
            return;
        }
	if($F("tld") == 'me.cz') {
	    order.searchDomainChange('mecz');
	} else if ($F("tld") == 'web.tr') {
        order.searchDomainChange('webtr');
	} else {
            order.searchDomainChange($F("tld"));
	}
    }
}
/**
 * Opetovna kontrola pri zmene tld
 *
 */  
order.formChange = function() {
    if($F('variant') == 'parking' || $F('variant') == 'otoman') {
        $('period').hide();
    } else {
        $('period').show();
    }
    if ($F("domainName").length == 0) {
        order.showInstructions();
        order.ajax.cancelRequests();
        return;
    }
    else {
        order.domainName = $F("domainName");  //načíst doménu z formuláře
        order.domainName = order.purgeDomainName(order.domainName);  //vyčistit doménu

        $("domainName").value = order.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) {
            order.showInstructions();
            order.ajax.cancelRequests();
            return;
        }
	if($F("tld") == 'me.cz') {
	    order.searchDomainChange('mecz');
	} else if ($F("tld") == 'web.tr'){
            order.searchDomainChange('webtr');
	} else {
            order.searchDomainChange($F("tld"));
	}
    }
}

/**
 * Funkce zavolá dotaz na server na dostupnost domén
 * 
 */
order.searchDomain = function(tld) {
    if (order.lastSearch != order.domainName) {
        order.lastSearch = order.domainName;
        
        order.ajax.cancelRequests();

        order.ajax.requestTld = new Ajax.Request('/check/' + tld + '/' + order.domainName, {
            method:'get',
            onSuccess: function(q) {
                order.ajax.onSuccess(q,tld);
            },
            onLoading: order.ajax.onLoading(tld)
        });
    }
}

/**
 * Funkce zavolá dotaz na server na dostupnost zadane domeny
 * Vola se pri zmene tld
 */
order.searchDomainChange = function(tld) {
        order.lastSearch = order.domainName;
        
        order.ajax.cancelRequests();

        order.ajax.requestTld = new Ajax.Request('/check/' + tld + '/' + order.domainName, {
            method:'get',
            onSuccess: function(q) {
                order.ajax.onSuccess(q,tld);
            },
            onLoading: order.ajax.onLoading(tld)
        });
}

/**
 * Odstranění znaků nepovolených pro doménový název z řetězce (pouze alfanumericke znaky a pomlcka)
 */
order.purgeDomainName = function(domainName) {

    if (domainName.length == 0) { return domainName; }
    domainName = domainName.toLowerCase();  
    if($F("tld") == 'eu' || $F("tld") == 'com' || $F("tld") == 'net') {
        domainName = domainName.replace(/[^a-zA-Z0-9-áčďóýéěíňřšťúůž]+/g, "");
    } else {
        domainName = domainName.replace(/[^a-zA-Z0-9-]+/g, "");
    }
    domainName = domainName.substring(0,63);
    return domainName;
}


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


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


order.ajax = {}
order.ajax.request = new Array;
order.ajax.requestTld = null;  // ajaxový request

/**
 * Zrušení všech otevřených ajax requestů
 */
order.ajax.cancelRequests = function() {
    try {
        order.ajax.requestTld.transport.abort();
    }   
    catch(e) {} 
}


/**
 * Pri uspesnem volani
 * TODO ZDE NASTAVIT PRIPADNE DALSI DOMENY
 */
order.ajax.onSuccess = function(query, tld) {
    var response = query.responseText.evalJSON();


    if (tld == "cz") {
        availability = response.cz;
    }
    else if (tld == "com") {
        availability = response.com;
    }
    else if (tld == "eu") {
        availability = response.eu;
    } 
    else if (tld == "org") {
        availability = response.org;
    }
    else if (tld == "net") {
        availability = response.net;
    }
    else if (tld == "biz") {
        availability = response.biz;
    }
    else if (tld == "de") {
        availability = response.de;
    }
    else if (tld == "sk") {
        availability = response.sk;
    }
    else if (tld == "es") {
        availability = response.es;
    }
    else if (tld == "at") {
        availability = response.at;
    }
    else if (tld == "us") {
        availability = response.us;
    }
    else if (tld == "ru") {
        availability = response.ru;
    }
    else if (tld == "hu") {
        availability = response.hu;
    }
    else if (tld == "it") {
        availability = response.it;
    }
    else if (tld == "pl") {
        availability = response.pl;
    }
    else if (tld == "dk") {
        availability = response.dk;
    }
    else if (tld == "name") {
        availability = response.name;
    }
    else if (tld == "info") {
        availability = response.info;
    } else if (tld == 'mecz') {
        availability = response.mecz;
    } else if (tld == 'as') {
        availability = response.as;    
    } else if (tld == 'webtr') {
        availability = response.webtr;
    } else if (tld == 'gr') {
        availability = response.gr;
    } else if (tld == 'si') {
        availability = response.si;
    } else if (tld == "se") {
        availability = response.se;
    } else if (tld == 'rs') {
        availability = response.rs;
    } else if (tld == 'cd') {
        availability = response.cd;
    } else if (tld == 'ro') {
        availability = response.ro;
    } else if (tld == 'mc') {
        availability = response.mc;
    } else if (tld == 'ac') {
        availability = response.ac;
    } else if (tld == 'hk') {
        availability = response.hk;
    } else if (tld == 'sg') {
        availability = response.sg;
    } else if (tld == 'me') {
        availability = response.me;
    } else if (tld == 'ie') {
        availability = response.ie;
    } else if (tld == 'ch') {
        availability = response.ch;
    } else if (tld == 'cn') {
        availability = response.cn;
    } else if (tld == 'tv') {
        availability = response.tv;
    } else if (tld == 'bg') {
        availability = response.bg;
    } else if (tld == 'comtr') {
        availability = response.comtr;
    } else if (tld == 'couk') {
        availability = response.couk;
    } else if (tld == 'conz') {
        availability = response.conz;
    } else if (tld == 'coil') {
        availability = response.coil;
    } else if (tld == 'nl') {
        availability = response.nl;
    } else if (tld == 'gr') {
        availability = response.gr;
    } else if (tld == 'lt') {
        availability = response.lt;
    } else if (tld == 'lv') {
        availability = response.lv;
    } else if (tld == 'be') {
        availability = response.be;
    } else if (tld == 'in') {
        availability = response.in;
    } else if (tld == 'sc') {
        availability = response.sc;
    } else if (tld == 'ba') {
        availability = response.ba;
    } else if (tld == 'fr') {
        availability = response.fr;
    }



    
    order.render.drawOne(response.domain, tld, availability);

}

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

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


/**
 * Vykreslení výsledků pro jednu doménu
 */
order.render.drawOne = function(domainName, tld, availability) {
//alert(availability);
    if (availability == 'a') { //doména je volná
       	$('loading').innerHTML =
        '<strong>' + domainName + '.' + tld + '</strong> je <strong>VOLNÁ</strong> ' +
        '<input type="button" onclick="order.basket.add();" value="Přidat do košíku"/>'; 
    }

    else if (availability == 'u')  {  //doména je obsazená
        variant = $F("variant");
        html = '<strong>' + domainName + '.' + tld + '</strong> je <strong>OBSAZENÁ</strong> ';
        if(variant == 'parking' || $F('variant') == 'otoman') {
            html += '<input type="checkbox" id="transferCheck" value="transfer" disabled="disabled" checked="checked"/>Převést a prodloužit doménu';
        } else {
            html += '<input type="checkbox" id="transferCheck" value="transfer" checked="checked" onclick="checkClick1();" />Převést ';
            if(tld == 'cz') {
                html += 'a <input type="checkbox" id="extendCheck" value="extend" checked="checked" onclick="checkClick2();" /> prodloužit doménu.';
            } else {
            	html += 'a prodloužit doménu';
            }
        }
        html += ' <input type="button" id="addDomain" onclick="order.basket.add();" value="Přidat do košíku"/>';
       	$('loading').innerHTML = html;
    }
    else if (availability == 'exist') {
	$('loading').innerHTML =
        '<div>Doména je již registrovaná v našem systému.</div>';
    }
    else if (availability == 'e')  {  //došlo k chybě při zjišťování
        $('loading').innerHTML =
        '<div class="errorTitle">' + domainName + '.' + tld + '</div>' +  
        'Nepodařilo se zjistit. ' +
        'Omlouváme se.';
    }
    else if (availability == 'ea')  {  //nelze objednat
        $('loading').innerHTML =
        '<div class="errorTitle">' + domainName + '.' + tld + '</div>' +  
        '<span>Tato doména je neplatná nebo blokovaná, tudíž ji nelze objednat.</span>';
    }
}

//nacitani domeny
order.render.drawLoadingOne = function(tld) {
    $("loading").innerHTML = 
    '<span class="loadingText"><img class="ajax-loader" src="http://kvapem.cz/www/images/design/loading.gif"/> <strong>' + order.domainName + '.' + tld + '</strong> se ověřuje...</span>';
}

order.basket = {};
order.basket.isEmpty = true;

order.basket.add = function() {
    if (!order.basket.content) {
        a = '<table class="form">';
        a += '<tr><th>Doména</th><th>Vybrané služby</th><th>&nbsp;</th></tr>';
        a += '<tr>';
        a += '<td><span class="basket-domena"><strong>' +
                order.domainName +'</strong>.' + $F("tld") + '</span></td>';
        a += '<td><img src="https://kvapem.cz/' +
                'www/images/design/loading.gif" /></td>';
        a += '</tr>';
        a += '</table>';
        $('order').innerHTML = a;
    }  
    transfer = 2;  
    if($("transferCheck")) {
        if ($F("transferCheck") == 'transfer') {
            transfer = 1;
        } else {
            transfer = 0;        
        }
    }
    extend = 1;
    if($("extendCheck")) {
	    if ($F("extendCheck") == 'extend') {
		extend = 1;
	    } else {
		extend = 0;        
	    }
    }
    if($F("tld") == 'me.cz') {
	t = 'mecz';
    } else if ($F("tld") == 'web.tr') {
        t = 'webtr';
    } else {
        t = ($F("tld"));
    }
    new Ajax.Request('/basket/add/domain/' + order.domainName + '/tld/' + t + '/variant/' + $F("variant") + '/period/' + $F("period") + '/transfer/' + transfer + '/extend/' + extend, {
        method:'get',
        onSuccess: function() {
            order.basket.get();  
            $("domain").value = ""; 
            order.formChange();
            $("domain").focus(); 
        }
    });
}

order.basket.content = null;

order.basket.contentTmp = null;

//nacteni obsahu kosiku
order.basket.get = function() {
    new Ajax.Request('/basket/get', { 
        method:'get',
        onSuccess: function(q) {
            var response = q.responseText;
            order.basket.content = response;
            order.basket.contentTmp = null;
            order.basket.redraw();
        }
    });
}

//Odstraneni domeny z kosiku
order.basket.remove = function(domain) {
    new Ajax.Request('/basket/remove/domain/' + domain, {
        method:'get',
        onSuccess: function(q) {
            //alert(q.responseText);
            order.basket.get();
        }
    });
}

//vykresleni kosiku
order.basket.redraw = function() {
    if (order.basket.content == null) {
        order.basket.get();
        return;
    }

    if (order.basket.content == '0') {
        //$('order').innerHTML += '<span class="empty_basket">Košík je prázdný.</span>';
        order.basket.isEmpty = true;
        $('prices').innerHTML = '';
    }
    else {
        order.basket.isEmpty = false;
        response = order.basket.content.evalJSON();
        if (order.basket.contentTmp != null) {
            response.domain[response.domain.length] = order.basket.contentTmp;    
        }
        //response.domain = response.domain.sort();
        order.basket.getPrice();
    }
    $('domainName').focus();
}

/**
 * Rozpocitavani ceny objednavky
 *
 */  
order.basket.prices = null;

order.basket.pricesTmp = null;

//ziskani cen za objednavku
order.basket.getPrice = function() {
    new Ajax.Request('/basket/price', { 
        method:'get',
        onSuccess: function(q) {
            var response = q.responseText;
            order.basket.prices = response;
            order.basket.pricesTmp = null;
            order.basket.redrawPrice();
        }
    });
}

//ziskani cen za objednavku za pouziti slevoveho kodu
order.basket.getPriceCode = function() {
    new Ajax.Request('/basket/price/code/' + $F("code"), { 
        method:'get',
        onSuccess: function(q) {
            var response = q.responseText;
            order.basket.prices = response;
            order.basket.pricesTmp = null;
            order.basket.redrawPrice();
        }
    });
}


//vykresleni objednavky
order.basket.redrawPrice = function() {
    if (order.basket.content == null) {
        $('prices').innerHTML = '';
        order.basket.get();
        return;
    }
    $('prices').innerHTML = '';
    response = order.basket.prices.evalJSON();
    domeny = 0;
    hosting = 0;
    code = response.code;
    deduction = response.hostingDeduction;
    a = '<div class="hr"><hr></div>';
    a += '<table class="formPrices">';    
    a += '<tr><th>Doména</th><th>Služba</th><th>Doba</th><th>Cena bez DPH</th><th>Odebrat</th></tr>';
    for(i = 0; i < response.domain.length; i++) {
        //DOMENY
        var domainYear = response.domainPrice[response.domain[i]] * response.domainPeriod[response.domain[i]] * 1;
        a += '<tr>';
        a += '<td rowspan="2"><span class="prices-domain"><strong>' + response.domain[i] + '</strong></td>';
        a += '<td>Doména</td>';
	    if(response.extend[response.domain[i]] == 1) {
            	a += '<td>' + response.domainPeriod[response.domain[i]] + ' rok(y)</td>';
	    } else {
            	a += '<td>nebude prodloužena</td>';
	    }
        a += '<td class="price">' + domainYear +',- Kč</td>';  
        var dph = domainYear * 1.20;
        domeny = domeny + dph;  
        a += '<td rowspan="2"><button onclick="order.basket.remove(\'' + 
                response.domain[i] + '\'); return false;">Odebrat</button></td>';
        a += '</tr>';          
        //HOSTING
        a += '<tr>';
        a += '<td>Hosting - ' + response.variant[response.domain[i]] + '</td>';
        if(response.variant[response.domain[i]] != 'parking') {
            a += '<td>' + response.hostingPeriod[response.domain[i]]+ ' měsíců</td>';
        } else {
            a += '<td>&nbsp;</td>';
        }
        var variantPrice = response.variantPrice[response.domain[i]];
        var hPeriod = variantPrice * response.hostingPeriod[response.domain[i]];
        a += '<td class="price">' + hPeriod.toFixed(0) +',- Kč</td>';
        var dph = variantPrice * response.hostingPeriod[response.domain[i]] * 1.20;
        hosting = hosting + dph;
        a += '</tr>';
	    a += '<tr><td colspan="5"><hr /></td></tr>';
    }
    if(deduction > 0) {
        var dedHosting = hosting * (deduction / 100); 
        a += '<tr></tr><td colspan="3"><strong>Sleva ' + deduction + '% za více hostingů</strong></td><td class="price"><strong><span style="color:red">' + dedHosting.toFixed(0) + ',- Kč</span></strong></td><td>&nbsp;</td></tr>';
        hosting = hosting - dedHosting;
    }

    if(code.value != false && hosting > 0) {
        a += '<tr></tr><td colspan="3"><strong>Slevový kód "'+ code.code + '"</strong></td><td class="price"><strong><span style="color:red">';
        if(code.value.procenta == 0) {
            a += code.value.hodnota;
            hosting = hosting - code.value.hodnota * 1;
            if(hosting < 0) {
                hosting = 0;
            }
        } else {
            if(code.value.hodnota <= 100) {
                procenta = hosting * (code.value.hodnota / 100);
                a += procenta.toFixed(0);
                hosting = hosting - procenta * 1;
                if(hosting < 0) {
                    hosting = 0;
                }
            }
        } 
        a += ',- Kč</span></strong></td><td>&nbsp;</td></tr>';
    }
    suma = hosting + domeny * 1;
    bezDph = suma / 1.20;
    a += '<tr><td colspan="3">Celková cena bez DPH</td><td class="price">' + bezDph.toFixed(0) + ',- Kč</td><td>&nbsp;</td></tr>';
    a += '<tr class="final-price"><td colspan="3">Celková cena s DPH (20%)</td><td class="price"><strong>' + suma.toFixed(0) + ',- Kč</strong></td><td>&nbsp;</td></tr>';
    a += '</table>';
    if(location.hostname != "objednavka.otoman.cz") {
        a += '<p><a href="#" onclick="showCode(); return false;">Slevový kód</a></p>';
    }
    a += '<div id="codeId"></div>';
    a += '<p class="final-order"><input type = "submit" value="Odeslat objednávku a zadat fakturační údaje" /></p>';
    $('prices').innerHTML = a;
}

function showCode() {
    $('codeId').innerHTML = '<p><input type="text" id="code" /> <input type="button" onclick="order.basket.getPriceCode();return false;" value="Přepočítat košík" /></p>';
}

