var http_request = new Array();
var handled = new Array();

var hr_count = 11;

var robotsId = 0;
var headersId = 1;
var googlePRId = 2;
var yandexAllId = 3;
var googleAllId = 4;
var ramblerAllId = 5;
var dmozId = 7;
var yacaId = 8;
var paanId = 9;
var linksId = 10;

function makeRequest(url, i) {
    if (window.XMLHttpRequest) { // Mozilla, Safari, etc.
        http_request[i] = new XMLHttpRequest();
        if (http_request[i].overrideMimeType) {
            http_request[i].overrideMimeType('text/xml');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request[i] = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request[i] = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!http_request[i]) {
        return false;
    }
    http_request[i].onreadystatechange = handleResponse;
    http_request[i].open('GET', url, true);
    http_request[i].send(null);
    return true;
}

function handleResponse() {
    var nr = -1;
    for (var i = 0; i < hr_count; ++i) {
        if ((handled[i] != true) && http_request[i] && 
            (http_request[i].readyState == 4) && (http_request[i].status == 200)) {
            nr = i;
            break;
        }
    }

    if (nr != -1) {
        var id = -1;
        var xmldoc = http_request[nr].responseXML;
        if (xmldoc == null)
        {
            clearDiv(nr);
            return;
        }
        var response = xmldoc.getElementsByTagName('response').item(0);
        if (response == null)
        {
            clearDiv(nr);
            return;
        }
        var type = response.getAttribute('type');
        if (type == null)
        {
            clearDiv(nr);
            return;
        }
        switch(type) {
		case "robots":
			id = robotsId;
			updateRobots(response);
			break;
		case "headers":
			id = headersId;
			updateHeaders(response);
			break;
		case "go_pr":
			id = 2;
			updatePR(response);
			break;
		case "ya_all":
			id = 3;
			updateYandexData(response);
			break;
		case "go_all":
			id = 4;
			updateGoogleData(response);
			break;
		case "ra_all":
			id = 5;
			updateRamblerData(response);
			break;
        case "dmoz":
			id = 7;
			updateDMOZData(response);
			break;
        case "yaca":
			id = 8;
			updateYaCaData(response);
			break;
		case "paan":
			id = 9;
			updatePageAnalysisData(response);
			break;
		case "links":
			id = 10;
			updateLinksData(response);
			break;
        }
        if (id != -1)
			handled[id] = true;

    } else {
        //alert('There was a problem with the request.');
    }
}

function updateRobots(response) {
	var data = htmlDecode(response.firstChild.data);
	document.getElementById('RobotsData').innerHTML = '<font size="-1">' + removeCDATA(data) + '</font>';
}

function updateHeaders(response) {
	var data = htmlDecode(response.firstChild.data);
	document.getElementById('HeadersData').innerHTML = '<font size="-1">' + removeCDATA(data) + '</font>';
}

function updatePR(response) {
	var prvalue = htmlDecode(response.firstChild.data);
	var output = '<a target=_blank href="http://livepr.raketforskning.com/?u=' + siteUrlFull + 
		'" ><img src="images/pr' + prvalue + '.gif" alt="Распределение PageRank по датацентрам" width="44" heigth="15" border="0"></a>';
	document.getElementById('PRdata').innerHTML = output;
}

function updateYandexData(response) {
	var cy = response.getElementsByTagName('cy').item(0).firstChild.data;
	var ip = response.getElementsByTagName('ip').item(0).firstChild.data;
	var output = '<font size="-1"><i>тИЦ:</i> <b>' + cy + 
			'</b>; <i>проиндексировано:</i> <b>' + ip + 
			'</b></font>';
	document.getElementById('YandexData').innerHTML = output;
}

function updateGoogleData(response) {
	var pr = response.getElementsByTagName('pr').item(0).firstChild.data;
	var ip = response.getElementsByTagName('ip').item(0).firstChild.data;
	var bls = response.getElementsByTagName('bls').item(0).firstChild.data;
	var blp = response.getElementsByTagName('blp').item(0).firstChild.data;
	var output = '<font size="-1"><i>PR:</i> <b>' + pr + '</b>; '+
	        '<i>основной индекс:</i> <b>' + ip + '</b>; '+
	        '<i>обратные ссылки:</i> на сервер: <b>' + bls + '</b>; на страницу: <b>' + blp + '</b></font>';
	document.getElementById('GoogleData').innerHTML = output;
}

function updateRamblerData(response) {
	var ip = response.getElementsByTagName('ip').item(0).firstChild.data;
	var output = '<font size="-1"><i>проиндексировано:</i> <b>' + ip + '</b></font>';
	document.getElementById('RamblerData').innerHTML = output;
}

function updateDMOZData(response) {
	var present = response.getElementsByTagName('present').item(0).firstChild.data;
	if (present == "1") {
		document.getElementById("dmoz").style.cssText = '';
	}
}

function updateYaCaData(response) {
	var present = response.getElementsByTagName('present').item(0).firstChild.data;
	if (present == "1")
		document.getElementById("yaca").style.cssText = '';
}

function updatePageAnalysisData(response) {
	var title = '';
	var kw = '';
	var desc = '';
	var robots = '';
	if (response.getElementsByTagName('metatitle').item(0).firstChild != null)
	    title = response.getElementsByTagName('metatitle').item(0).firstChild.data;
	if (response.getElementsByTagName('metakw').item(0).firstChild != null)
	    kw = response.getElementsByTagName('metakw').item(0).firstChild.data;
	if (response.getElementsByTagName('metadesc').firstChild != null)
	    desc = response.getElementsByTagName('metadesc').item(0).firstChild.data;
	if (response.getElementsByTagName('robots').firstChild != null)
	    robots = response.getElementsByTagName('robots').item(0).firstChild.data;
	var output = '<font size="-1"><b>TITLE:</b> ' + title + '<br/><b>KEYWORDS:</b> ' + kw + '<br/><b>DESCRIPTION:</b> ' + desc + '<br/><b>ROBOTS:</b> ' + robots + '</font>';
	document.getElementById('paan').innerHTML = output;
}

function updateLinksData(response) {
	var totalLinks = response.getElementsByTagName('totalLinks').item(0).firstChild.data;
	var innerLinks = response.getElementsByTagName('innerLinks').item(0).firstChild.data;
	var outerLinks = response.getElementsByTagName('outerLinks').item(0).firstChild.data;
	var emails = response.getElementsByTagName('emails').item(0).firstChild.data;
	var noindex = response.getElementsByTagName('noindex').item(0).firstChild.data;
	var output = '<font size="-1">';
	output += '<b>Ссылки:</b> всего: ' + totalLinks + ', из них внутренних: ' + innerLinks + ', внешних: ' + outerLinks + '<br/>';
	output += '<b>Email-адреса:</b> ' + emails + '<br/>';
	if (noindex != "0")
		output += '<b>Теги &lt;noindex&gt;: </b> ' + noindex;
	output += '</font>';
	document.getElementById('LinksData').innerHTML = output;
}

function htmlDecode(s) {
	var str = new String(s);
	str = str.replace(/&amp;/gi, "&");
	str = str.replace(/&lt;/gi, "<");
	str = str.replace(/&gt;/gi, ">");
	str = str.replace(/&quot;/gi, '"');
	return str;
}

function removeCDATA(s) {
	var str = new String(s);
	str = str.replace('<![CDATA[', '');
	str = str.replace(']]>', '');
	return str;
}

function clearDiv(id) {
	handled[id] = true;
	var name = "";
	switch(id) {
		case robotsId:
			name = "RobotsData";
			break;
		case headersId:
			name = "HeadersData";
			break;
		case googlePRId:
			name = "PRdata";
			break;
		case yandexAllId:
			name = "YandexData";
			break;
		case googleAllId:
			name = "GoogleData";
			break;
		case ramblerAllId:
			name = "RamblerData";
			break;
		case dmozId:
			name = "dmoz";
			break;
		case yacaId:
			name = "yaca";
			break;
		case paanId:
			name = "paan";
			break;
		case linksId:
			name = "links";
			break;
	}
	document.getElementById(name).innerHTML = '<font size="-1">нет данных</font>';
}

function requestData() {
	if (siteUrl == '' || siteUrlFull == '' || appHost == '')
		return;
	makeRequest(appHost + '/pageparts/?part=robots&url=' + siteUrlFull, robotsId);
	makeRequest(appHost + '/pageparts/?part=headers&url=' + siteUrlFull, headersId);
	makeRequest(appHost + '/separams/?param=dmoz&url=' + siteUrlFull, dmozId);
	makeRequest(appHost + '/separams/?param=yaca&url=' + siteUrlFull, yacaId);
	makeRequest(appHost + '/separams/?param=paan&url=' + siteUrlFull, paanId);
	makeRequest(appHost + '/separams/?param=links&url=' + siteUrlFull, linksId);
	makeRequest(appHost + '/separams/?param=go_pr&url=' + siteUrlFull, googlePRId);
	makeRequest(appHost + '/separams/?param=ya_all&url=' + siteUrlFull, yandexAllId);
	makeRequest(appHost + '/separams/?param=go_all&url=' + siteUrlFull, googleAllId);
	makeRequest(appHost + '/separams/?param=ra_all&url=' + siteUrlFull, ramblerAllId);
}

function reloadRobots() {
    makeRequest(appHost + '/pageparts/?part=robots&url=' + siteUrlFull, robotsId);
}

function reloadHeaders() {
    makeRequest(appHost + '/pageparts/?part=headers&url=' + siteUrlFull, headersId);
}

function reloadDMOZ() {
    makeRequest(appHost + '/separams/?param=dmoz&url=' + siteUrlFull, dmozId);
}

function reloadYaCa() {
    makeRequest(appHost + '/separams/?param=yaca&url=' + siteUrlFull, yacaId);
}

function reloadPAAN() {
    makeRequest(appHost + '/separams/?param=paan&url=' + siteUrlFull, paanId);
}

function reloadLinks() {
    makeRequest(appHost + '/separams/?param=links&url=' + siteUrlFull, linksId);
}

function reloadPR() {
    makeRequest(appHost + '/separams/?param=go_pr&url=' + siteUrlFull, googlePRId);
}

function reloadYandexAll() {
    makeRequest(appHost + '/separams/?param=ya_all&url=' + siteUrlFull, yandexAllId);
}

function reloadGoogleAll() {
    makeRequest(appHost + '/separams/?param=go_all&url=' + siteUrlFull, googleAllId);
}

function reloadRamblerAll() {
    makeRequest(appHost + '/separams/?param=ra_all&url=' + siteUrlFull, ramblerAllId);
}
