var availabilityHandlerStartTime = null;
var availabilityHandlerNoreplyTime = null;
var availabilityHandlerCompleteArray = [];

function dropAvailabilityHandler(status, content, contentType)
{
    var processes = eval('('+content+')');
    var domains = processes['domains'];

    for(var domain in domains)
    {
	var available = domains[domain];

        if(available && document.getElementById("options_"+domain))
        {
	    var checked = "";
	    if(processes["isInCart"][domain] > 0) checked = "checked";
            document.getElementById("options_"+domain).innerHTML = "<input id='check_"+domain+"' type='checkbox' onClick=\"productCartSwap(this.checked, '"+domain+"', 1, 'delete_list');\" "+checked+">";
            document.getElementById("availableProduct_"+domain).innerHTML = "Backorder: $"+processes["prices"][domain];
        }
        else if(available < 1 && !availabilityHandlerCompleteArray[domain] && document.getElementById("options_"+domain))
        {
            document.getElementById("options_"+domain).innerHTML = "<font color='red'><b>X</b></font>";
        }
	else if(available && !availabilityHandlerCompleteArray[domain] && !document.getElementById("tr_registration_"+domain))
	{
	    document.getElementById("tr_alternative_header").style.display = "";
	    document.getElementById("tr_alternative_label").style.display = "";
  	    if(document.getElementById("arrow")) document.getElementById("arrow").style.display="";
	    addNewAlternativeDomainRow(domain, processes["prices"][domain], processes["google_apps"][domain], processes["private_whois"][domain]);
	    alternativeCount++;
	}

	availabilityHandlerCompleteArray[domain] = 1;
    }
}

function handleAdditionalTldDisplay(tld, domain, always)
{
    if(!document.getElementById("additional"+tld+"TldInfo"))
	return;

    if(document.getElementById("check_alternative_"+domain).checked || always)
	document.getElementById("additional"+tld+"TldInfo").style.display = "";
    else
	document.getElementById("additional"+tld+"TldInfo").style.display = "none";
}

function handleGoogleWhoisBoxes(domain)
{
    var domainOnly = domain.split(":")[0];

    if(document.getElementById("check_alternative_"+domain).checked)
    {
	if(document.getElementById("google_"+domainOnly)) document.getElementById("google_"+domainOnly).checked = true;
	if(document.getElementById("google_"+domainOnly)) document.getElementById("google_"+domainOnly).disabled = false;
	if(document.getElementById("whois_"+domainOnly)) document.getElementById("whois_"+domainOnly).checked = false;
	if(document.getElementById("whois_"+domainOnly)) document.getElementById("whois_"+domainOnly).disabled = false;
    }
    else
    {
	if(document.getElementById("google_"+domainOnly)) document.getElementById("google_"+domainOnly).checked = false;
	if(document.getElementById("google_"+domainOnly)) document.getElementById("google_"+domainOnly).disabled = true;
	if(document.getElementById("whois_"+domainOnly)) document.getElementById("whois_"+domainOnly).checked = false;
	if(document.getElementById("whois_"+domainOnly)) document.getElementById("whois_"+domainOnly).disabled = true;
    }
}

function handlePriceDisplay(amount, domain)
{
    var current = document.getElementById("totalCost").innerHTML;

    if(document.getElementById("check_alternative_"+domain).checked)
	document.getElementById("totalCost").innerHTML = (parseFloat(current) + parseFloat(amount)).toFixed(2);
    else
	document.getElementById("totalCost").innerHTML = (parseFloat(current) - parseFloat(amount)).toFixed(2);
}

function addNewAlternativeDomainRow(domain, price, googleApps, privateWhois)
{
    var parent = document.getElementById("tr_alternative_header").parentNode.parentNode.getElementsByTagName("TBODY")[0];
    var lastRow = document.getElementById("alternativeTable").rows.length;
    var newRow = document.getElementById("alternativeTable").insertRow(lastRow);
    var tdUsername = document.createElement("TD");
    var td1 = document.createElement("TD");
    var td2 = document.createElement("TD");
    var td3 = document.createElement("TD");
    var td4 = document.createElement("TD");
    var td5 = document.createElement("TD");
    var td6 = document.createElement("TD");
    var td7 = document.createElement("TD");

    if(!price) price = 0;

    newRow.style.borderBottom = "1px solid #E0E0E0";

    newRow.appendChild(td1);
    newRow.appendChild(td2);
    newRow.appendChild(td3);
    newRow.appendChild(td4);
    newRow.appendChild(td5);
    newRow.appendChild(td6);
    newRow.appendChild(td7);

    td1.innerHTML = "<input id='check_"+domain+"' type='checkbox' onClick=\"productCartSwap(this.checked, '"+domain+"', 1, 'registration', 'alternative');\">"+domain;
    td2.innerHTML = "";
    td3.innerHTML = "registration";
    td4.innerHTML = "1 year";
    td5.innerHTML = "";
    td6.innerHTML = "";
    td7.innerHTML = "<span id=\"span_checkoutProductPriceHiddenAlternative_"+domain+"\" style=\"display: none;\">"+parseFloat(price).toFixed(2)+"</span><span id=\"span_checkoutProductPriceAlternative_"+domain+"\" style=\"color: rgb(0, 0, 0);\">"+parseFloat(price).toFixed(2)+"</span>";

    td5.style.textAlign = "center";
    td6.style.textAlign = "center";
    td7.style.textAlign = "right";
}

function availabilityHandler(status, content, contentType)
{
    var processes = eval('('+content+')');
    var wait = 500;
    var done = processes['done'];
    var domains = processes['domains'];
    var alternativeCount = 0;
    var resultsType = "";

    availabilityHandlerNoreplyTime = new Date();
    search_code = processes['search_id'];
    domainCount = processes['domainCount'];
    resultsType = processes['resultsType'];

    for(var domain in domains)
    {
	var available = domains[domain];

        if(available > 0 && !availabilityHandlerCompleteArray[domain] && document.getElementById("options_"+domain))
        {
	    var checked = "";
	    if(processes["isInCart"][domain] > 0) checked = "checked";
            document.getElementById("options_"+domain).innerHTML = "<input id='check_"+domain+"' type='checkbox' onClick=\"productCartSwap(this.checked, '"+domain+"', 1, 'registration');\" "+checked+">";
            document.getElementById("availableProduct_"+domain).innerHTML = "Registration: $"+processes["prices"][domain];
        }
        else if(available < 1 && !availabilityHandlerCompleteArray[domain] && document.getElementById("options_"+domain))
        {
            document.getElementById("options_"+domain).innerHTML = "<font color='red'><b>X</b></font>";
        }
	else if(available > 0 && !availabilityHandlerCompleteArray[domain] && !document.getElementById("tr_registration_"+domain) && resultsType == "checkout_suggestions")
	{
	    document.getElementById("tr_alternative_header").style.display = "";
	    document.getElementById("tr_alternative_label").style.display = "";
  	    if(document.getElementById("arrow")) document.getElementById("arrow").style.display="";
	    addNewAlternativeDomainRow(domain, processes["prices"][domain], processes["google_apps"][domain], processes["private_whois"][domain]);
	    alternativeCount++;
	}
	else if(available > 0 && !availabilityHandlerCompleteArray[domain] && !document.getElementById("tr_registration_"+domain) && resultsType == "alternative_tld")
	{
	    var domainParts = domain.split(".");
	    var sld = domainParts[0];
	    var tld = domainParts[1];
	    document.getElementById("span_alttld_list_"+sld).innerHTML += " <input id='check_"+domain+"' type='checkbox' onClick=\"productCartSwap(this.checked, '"+domain+"', 1, 'registration', 'alternative_tld');\">"+tld;
	}
	else if(available > 0 && !availabilityHandlerCompleteArray[domain] && !document.getElementById("tr_registration_"+domain) && resultsType == "")
	{
	    document.getElementById("tr_alternative_header").style.display = "";
	    document.getElementById("tr_alternative_label").style.display = "";
  	    if(document.getElementById("arrow")) document.getElementById("arrow").style.display="";
	    addNewAlternativeDomainRow(domain, processes["prices"][domain], processes["google_apps"][domain], processes["private_whois"][domain]);
	    alternativeCount++;
	}

	availabilityHandlerCompleteArray[domain] = 1;
    }

    if(done)
    {
	return;
    }

    if(availabilityHandlerStartTime === null)
        availabilityHandlerStartTime = new Date();
    else
    {
        var current_time = new Date();
        var elapsed_time = ((current_time.getTime() / 1000) - (availabilityHandlerStartTime.getTime() / 1000));
        var elapsed_noreply_time = ((current_time.getTime() / 1000) - (availabilityHandlerNoreplyTime.getTime() / 1000));

        if(elapsed_time > 3)
            wait = 750;
        if(elapsed_time > 10)
            wait = 1000;
        if(elapsed_time > 20)
            wait = 2000;

        if(elapsed_noreply_time > 20)
            return(1);
    }

    setTimeout("getURL('/availability/services/availability.php?code="+search_code+"&domainCount="+domainCount+"&resultsType="+resultsType+"', availabilityHandler);", wait);
}
