var totreqs = 0;
var makereqs = 0;
var curiddomain = 0;
var exts = new Array(".it", ".com", ".eu", ".net", ".mobi",  
					 ".biz", ".info", ".name", ".org", ".gov",
					 ".dj", ".fm", ".cd", ".tv", ".travel", ".aero", ".coop", ".museum",
					 ".at", ".be", ".ch", ".cz", ".de", ".dk", ".fr", ".hu", ".ie", ".li", ".mc", ".nl", ".pl", ".se", ".sk", ".sm");
var auto_exts = 5;

showLoading();
showExtsNote();
document.getElementById("domains").focus();

// creo la richiesta asincrola per l'url specificato
// e gli assegno l'handler handleResponse()
function createRequest(url, id) {
	var req;
	req = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest) {
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }
	if(req) {
		totreqs++;
		req.onreadystatechange = handleResponse(req, id, url);
		req.open("GET", "http://www.trovadomini.net/whoissvr.aspx?url=" + url, true);
		req.send(null);
	}
}

function swapCellDisponibile(cell, value) {
	if (value == "1") cell.innerHTML = "Registralo ora!";
	else cell.innerHTML = "Disponibile";
}
// gestisco la risposta della richiesta
function handleResponse(req, id, url){
	return function(){
		if (req.readyState == 4) {
			var r = document.getElementById("tbl" + id).rows[0];
			var c0 = r.cells[0];
			var c1 = r.cells[1];
			var c2 = r.cells[2];
			var c3 = r.cells[3];
			c0.style.color = '';
			if (req.responseText == "1") {
				c1.innerHTML = "";
				//c2.innerHTML = "<div class='RegisterBox' onclick='javascript:window.open(\"http://www.seitek.it/register.htm?url=" + url + "\",\"_blank\"); return false;' title=\"Registra subito questo dominio!\" ></div>";
				c2.innerHTML = "<div style='cursor: hand' onclick='javascript:window.open(\"mailto:info@seitek.it?subject=Richiesta registrazione dominio&body=Desidero registrare il dominio " + url + " - gradirei che mi contattaste al mio indirizzo e-mail per avere maggiori informazioni.\",\"_blank\"); return false;' title=\"Registra subito questo dominio!\" ><div class='RegisterBox' ></div><span onmouseenter='javascirpt:swapCellDisponibile(this,1)' onmouseout='javascrpt:swapCellDisponibile(this,0)';>Disponibile</span></div>";
				c2.innerHTML += "";//" Disponibile";
				r.style.backgroundColor = '#ccffcc';
			}
			else {
				c1.innerHTML = "<div style='cursor: hand' onclick='javascript:window.open(\"" + url + "\",\"_blank\"); return false;' title=\"Vai al dominio\" ><div class='OpenBox'></div>Non disponibile</div>";
				c1.innerHTML += ""; //" Non disponibile" 
			}
			c3.innerHTML = "<div class='CloseBox' onclick='javascript:hideUrl(this); return false;' title=\"Nascondi questa riga\" ></div>"; 								// disponibile
			makereqs++;
			showLoading();
		}
	}
}

function hideNotDisp() {
	var rowcount
	var tblresponse = document.getElementById("tblResponse");
	for (rowcount = 1; rowcount < tblresponse.rows.length; rowcount++) {
		var rowdomain = tblresponse.rows[rowcount].cells[0].children[0].rows[0];
		if (rowdomain.cells[1].innerHTML != "" && rowdomain.cells[3].innerHTML != "" && tblresponse.rows[rowcount].style.display != "none") {
			tblresponse.rows[rowcount].style.display="none";
			makereqs--; 
			totreqs--;
		}
	}
	showLoading();
}
function hideUrl(obj) {
	var prt = obj.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement; // div.td.tr.tbody.table.td.tr
	prt.style.display="none";
	makereqs--; 
	totreqs--;
	showLoading();
}

function showLoading() {
	var divLoad = document.getElementById('loading');
	divLoad.innerHTML="Verifica in corso...";
	if (makereqs == 0) 
		divLoad.innerHTML="Inserisci il nome del dominio da cercare, seleziona l'estensione e fai click sul tasto Verifica.";
	else if (makereqs != totreqs) 
		divLoad.innerHTML="<div class='WaitBox' ></div> Verifica (" + Math.round(makereqs / totreqs * 100) + "% completata)...";
	else
		divLoad.innerHTML="Verifica completata. Inserisci altri domini per aggiungerli alla lista.";

	if (totreqs == 0) {
		document.getElementById("tblContainer").style.display = "none";
		document.getElementById("intro").style.display = "";
	}
	else {
		document.getElementById("tblContainer").style.display = "";
		document.getElementById("intro").style.display = "none";
	}
}

function showExtsNote() {
	var ext = document.getElementById("exts").value;
	var extsnote = document.getElementById("extsnote");
	var extscheck = document.getElementById("extscheck");
	if (ext == "*") {
		extsnote.innerHTML = "Il nome dominio verrà cercato per le estensioni .it .com .eu .net";
		extscheck.style.display = "none";
	}
	else if (ext == "**") {
		extsnote.innerHTML = "Il nome dominio verrà cercato per tutte le estensioni disponibili<br />(l'operazione potrebbe richiedere diversi minuti)";
		extscheck.style.display = "none";
	}
	else if (ext == "***") {
		extsnote.innerHTML = "";
		extscheck.style.display = "";
	}
	else {
		extsnote.innerHTML = "";
		extscheck.style.display = "none";
	}
	
}

// aggiungo una riga
function showUrl(url, ext, id)
{
	var r = document.getElementById("tblResponse").insertRow(-1);
	var c = r.insertCell(-1);
	c.className = "CellContainer";
	c.innerHTML = "<table id='tbl" + id + "' cellspacing='0' cellpadding='8' border='0'></table>";
	
	var nr = document.getElementById("tbl" + id).insertRow(-1);
	var nc
	nc = nr.insertCell(-1)
	nc.innerHTML = url + "<b>" + ext + "</b>"; 		// url
	nc.style.width = "220px";
	nc.borderColor = "#ffffff";
	nc.style.color = "#999999";
	nc = nr.insertCell(-1)
	nc.innerHTML = "<div class='WaitBox' />"; 								// non disponibile
	nc.style.width = "130px";
	nc.borderColor = "#ffffff";
	nc = nr.insertCell(-1)
	nc.innerHTML = ""; 								// disponibile
	nc.style.width = "130px";
	nc.style.color = "#009900";
	nc.style.fontWeight = "bold";
	nc.borderColor = "#ffffff";

	nc = nr.insertCell(-1);
	nc.style.width = "20px";
	nc.style.color = "#009900";
	nc.style.fontWeight = "bold";
	nc.borderColor = "#ffffff";
}

function mailResult() {
	var w=window.open("#","_blank","");
	w.focus();
	w.document.write('<link href="styles.css" rel="stylesheet" type="text/css" />');
	w.document.write(document.getElementById("tblContainer").outerHTML);
}

// creo una nuova richiesta ed inserisco la riga
function checkUrl(url, ext, id) {
	showUrl(url, ext, id);
	createRequest("http://" + url + ext, id);
}

function goSearch() {
	var dm, ext
	dm = document.getElementById("domains").value;
	ext = document.getElementById("exts").value;
	dm = dm.toLowerCase();
	if (dm != "") {
		if (dm.indexOf(";") > -1 || dm.indexOf(" ") > -1 || dm.indexOf("(") > -1 || dm.indexOf(")") > -1 || dm.indexOf("[") > -1 || dm.indexOf("]") > -1) {
	   		extsnote.innerHTML = "<span class='Errore'>Il nome dominio può contenere sono lettere, numeri,<br /> e simboli comuni come il trattino (-) e il sottolineato (_).</span>";
			return false;
		}
		if (dm.indexOf(".") > -1) {
	   		extsnote.innerHTML = "<span class='Errore'>Il nome dominio non può contenere il punto,<br />per indicare l'estensione selezionala dalla casella a destra.</span>";
			return false;
		}

		showExtsNote();
		
		dm = "www." + dm;
		//if (totreqs != 0) showDivider();
		//if (dm.indexOf("http://") == 0) dm = dm.substring(0,7);
		//if (dm.indexOf("www.") == -1 && dm.indexOf("http://") == -1) dm = 'www.' + dm;
		//if (dm.indexOf("http://") == -1) dm = 'http://' + dm;
		if (ext == "*" || ext == "**" || ext == "***") {
			var numext
			for (numext in exts) {
				if (numext == auto_exts && ext == "*") break;
				if (document.getElementById(exts[numext]).checked || ext != "***") {
					curiddomain++;
					checkUrl(dm, exts[numext], curiddomain);
				}
			}
		}
		else {
			curiddomain++;
			checkUrl(dm, ext, curiddomain);
		}
	}

	showLoading();
	document.getElementById("domains").value = "";
	document.getElementById("domains").focus();
	document.getElementById("check").value = "Aggiungi";
}
