var domainsS = new Array();
var domainsSA = new Array();

/* Получение объекта DOM */
function $(s) {
	return document.getElementById(s);
}

/* Реализация функции обрезания строки от пробелов */
String.prototype.trim = function () {
	return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}

/* Проверка латинского домена(-ов) */
function checkLatDomain (form) {

	//Доменные зоны
	var zones = new Array('ru', 'su', 'com', 'net', 'org', 'biz', 'info', 'tv');
	
	//Какие отмечены доменные зоны
	var checkedZones = new Array();
	for (var i = 0; i < form.elements.length; i++) 
		for (var j = 0; j < zones.length; j++) 
			if (form.elements[i].name == zones[j] && form.elements[i].checked) 
				checkedZones[checkedZones.length] = zones[j];
	if (checkedZones.length == 0) checkedZones = zones;

	//Инициализация
	var fieldObj = form.name1;	
	var domains = fieldObj.value.split('\n');
	var trustedDomains = new Array();
	
	//Проверка написания
	for (var i = 0; i < domains.length; i++) {
		var domainName = domains[i].trim();
		if (domainName != '') {
			for (var j = 0; j < checkedZones.length; j++) {
				var tda = new Array(domainName + '.' + checkedZones[j], checkedZones[j], domainName);
				trustedDomains[trustedDomains.length] = tda;
			}
		}
		if (!checkStr(domainName, 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM-1234567890')) {
			alert('В написании доменного имени "' + domainName + '" допущена ошибка.\nВ имени могут быть только буквы латинского алфавита, тире и арабские цифры.\nКоличество знаков должно быть не менее 2-х.');
			return;
		}
	}
	
	//нет доменов
	if (trustedDomains == '') {
		alert('Введите доменное имя.');
		return;
	}

	//Проверка доменов
	resultsShow();
	
	//Построение результатов
	buildResults(trustedDomains);
	
	//Проверка доменов
	domainsS.length = 0;
	domainsSA.length = 0;
	for (var i = 0; i < trustedDomains.length; i++) {		
		checkDomain(trustedDomains[i][2], trustedDomains[i][1]);
	}

}

/* Проверка русского домена */
function checkCyrDomain (form) {

	//Доменные зоны
	var zones = new Array('rf', 'su', 'com', 'net');
	
	//Какие отмечены доменные зоны
	var checkedZones = new Array();
	for (var i = 0; i < form.elements.length; i++) 
		for (var j = 0; j < zones.length; j++) 
			if (form.elements[i].name == zones[j] && form.elements[i].checked) 
				checkedZones[checkedZones.length] = zones[j];
	if (checkedZones.length == 0) checkedZones = zones;
	
	//Инициализация
	var fieldObj = form.name1;	
	var domains = fieldObj.value.split('\n');
	var trustedDomains = new Array();
	
	//Проверка написания
	for (var i = 0; i < domains.length; i++) {
		var domainName = domains[i].trim();
		if (domainName != '') {
			for (var j = 0; j < checkedZones.length; j++) {
				var tda = new Array(domainName + '.' + checkedZones[j], checkedZones[j], domainName);
				trustedDomains[trustedDomains.length] = tda;
			}
		}
		if (!checkStr(domainName, 'йцукенгшщзхъфывапролджэячсмитьбюёЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ-1234567890')) {
			alert('В написании доменного имени "' + domainName + '" допущена ошибка.\nВ имени могут быть только буквы русского алфавита, тире и арабские цифры.\nКоличество знаков должно быть не менее 2-х.');
			return;
		}
	}	
	
	//нет доменов
	if (trustedDomains == '') {
		alert('Введите доменное имя.');
		return;
	}
	
	//Проверка доменов
	resultsShow();
	
	//Построение результатов
	buildResults(trustedDomains);	
	
	//Проверка доменов
	domainsS.length = 0;
	domainsSA.length = 0;
	for (var i = 0; i < trustedDomains.length; i++) {
		checkDomainCyr(trustedDomains[i][2], trustedDomains[i][1]);
	}
	
}

/* Проверка написания домена */
function checkStr (s, chars) {

	//Пустая строка
	if (s == '') return true;
	
	//Маленький домен
	if (s.length < 2) return false;

	//Инициализация
	var trustedSymbols = chars;	
	var isTrusted = true;
	
	//Проверка
	if (s.substr(0, 1) == '-' || s.substr(s.length - 1, 1) == '-') 
		return false;
		
	//Проверка каждого символа	
	for (var i =  0; i < s.length; i++) {
		var sChar = s.substr(i, 1);
		var isTrustedChar = false;
		for (var j = 0; j < trustedSymbols.length; j++) {
			var tChar = trustedSymbols.substr(j, 1);
			if (sChar == tChar) isTrustedChar = true;
		}
		if (!isTrustedChar) isTrusted = false;
	}

	return isTrusted;
	
}

function resultsShow () {
	if ($('results') != null)
		$('results').style.display = "";
	if ($('resultDomains') != null)
		$('resultDomains').innerHTML = "";
	if ($('additionalDomains') != null)
		$('additionalDomains').style.display = "none";	
} 

function buildResults(domains) {
	var html = '<table cellspacing="0" cellpadding="0" border="0" >';
	var color = '';
	for (var i = 0; i < domains.length; i++) {
		color = (color == '')? ' class="grey" ': '';
		html += '<tr' + color + '>';
		html += '<td width="180">' + domains[i][0].replace('.rf', '.рф') + '</td>';
		html += '<td width="85">';
		html += '<td width="155"><div id="' + domains[i][0] + 'e1">Загрузка...</div></td>';//<a target="_blank" href="whois.htm">занят</a>
		html += '<td><div id="' + domains[i][0] + 'e2"></div></td>'; //<a href="domen1_1.htm" title="К имени выбранного домена будут сделаны подстановки">еще варианты</a>
		html += '</tr>';
	}
	html += '</table>';
		
	if ($('resultDomains') != null)
		$('resultDomains').innerHTML = html;
}

function checkDomain(domain, zone) {
	
	JsHttpRequest.query(
		'/ajax/domains',
		{'domain': domain + '.' + zone, 'zone': zone},
		function(result, errors) {
			if (errors) {
				alert('Ошибка в отправке запроса.');
				return;
			}
			if (result) {
				e = $(domain + '.' + zone + 'e1');
				e2 = $(domain + '.' + zone + 'e2');
				
				if (e != null && e2 != null) {
					if (result['result'] == 'registered') {
						e.innerHTML = '<a target="_blank" href="?domain=' + domain + '.' + zone + '&zone=' + zone + '">занят</a>';
						e2.innerHTML = '<a target="_blank" href="" onclick="additionalDomains(\'' + domain + '\', \'' + zone + '\'); return false;">еще варианты</a>';
					} else if (result['result'] == 'free') {
						e.innerHTML = '<span class="free_domen">свободен</span>';
					} else {
						e.innerHTML = 'ошибка';
					}
				}		
				
				var domainData = new Array(domain, result['result'], domain, zone);
				domainsS[domainsS.length]	= domainData;	
			}
		},
		false
	);			
	
}

function checkDomainCyr(domain, zone) {
	
	JsHttpRequest.query(
		'/ajax/domains',
		{'domain': domain + '.' + zone, 'zone': zone, 'cyr': 'true'},
		function(result, errors) {
			if (errors) {
				alert('Ошибка в отправке запроса.');
				return;
			}
			if (result) {
				e = $(domain + '.' + zone + 'e1');
				e2 = $(domain + '.' + zone + 'e2');
				e.innerHTML = result['cname'];
				
				if (e != null && e2 != null) {
					if (result['result'] == 'registered') {
						e2.innerHTML = '<a target="_blank" href="?domain=' + result['cname'] + '&zone=' + zone + '">занят</a>';
					} else if (result['result'] == 'free') {
						e2.innerHTML = '<span class="free_domen">свободен</span>';
					} else {
						e2.innerHTML = 'ошибка';
					}
				}
				
				var domainData = new Array(domain, result['result'], result['cname'], zone);
				domainsS[domainsS.length]	= domainData;	
								
			}
		},
		false
	);
	
}

function additionalDomains (domain, zone) {

	//Префиксы
	var prefixes = new Array('i-*', 'e-*', 'i*', 'e*', 'my*', '*info', '*-office', '*office', '*-group', '*group', '*company', '*corp', '*-co', '*-live', '*plus', '*-rus', '*-moscow');
	
	//Строим html
	var html = '<table cellspacing="0" cellpadding="0" border="0">';
	html += '<tr><td colspan="2" class="grey"><img height="1"src="/nc/templates/E-Age/images/px.gif" class="noborder" /></td></tr>';
	
	for (var i = 0; i < prefixes.length; i++) {
		var htmlName = prefixes[i].replace(/^(.*)\*(.*)$/i, '<b>$1</b>' + domain + '<b>$2</b>.' + zone);
		var dName = prefixes[i].replace(/^(.*)\*(.*)$/i, '$1' + domain + '$2.' + zone);
		html += '<tr><td nowrap width="250">&nbsp;&nbsp;' + htmlName + '</td><td width="85"><div id="' + dName + 'a1">Загрузка...</div></td></tr>'
		html += '<tr><td colspan="2" class="grey"><img height="1"src="/nc/templates/E-Age/images/px.gif" class="noborder" /></td></tr>';		
	}
	
	html += '</table><br /><br />';	
	
	//Показываем
	if ($('additionalDomains') != null) {
		$('additionalDomains').style.display = '';
		$('additionalDomains').innerHTML = html;
	}	
	
	//Проверка домена
	domainsSA.length = 0;
	for (var i = 0; i < prefixes.length; i++) {
		var dName = prefixes[i].replace(/^(.*)\*(.*)$/i, '$1' + domain + '$2');
		checkDomainA(dName, zone);
	}	
	
}

function checkDomainA(domain, zone) {
	
	JsHttpRequest.query(
		'/ajax/domains',
		{'domain': domain + '.' + zone, 'zone': zone},
		function(result, errors) {
			if (errors) {
				alert('Ошибка в отправке запроса.');
				return;
			}
			if (result) {
				e = $(domain + '.' + zone + 'a1');
				
				if (e != null) {				
					if (result['result'] == 'registered') {
						e.innerHTML = '<a target="_blank" href="?domain=' + domain + '.' + zone + '&zone=' + zone + '">занят</a>';
					} else if (result['result'] == 'free') {
						e.innerHTML = '<span class="free_domen">свободен</span>';
					} else {
						e.innerHTML = 'ошибка';
					}
				}	
				
				var domainData = new Array(domain, result['result'], domain, zone);
				domainsSA[domainsSA.length]	= domainData;					
							
			}			
		},
		false
	);	
	
}

function sendEmail (form) {

	if (form.email.value == '') {
		alert('Укажите e-mail.');
		return;
	}
	
	if(/^[a-z0-9\._-]+\@[a-z0-9\._-]+\.[a-z]{2,4}$/.exec(form.email.value) == null) {
		alert('E-mail указан неверно.');
		return;
	}
	
	
	var s = '';
	for (var i = 0; i < domainsS.length; i++) {
		var sa = '';		
		for (var j = 0; j < domainsS[i].length; j++) {
			sa += ((sa == '')? '': ':') + domainsS[i][j];
		}
		s += ((s == '')? '': '&') + sa;
	}
	
	for (var i = 0; i < domainsSA.length; i++) {
		var sa = '';		
		for (var j = 0; j < domainsSA[i].length; j++) {
			sa += ((sa == '')? '': ':') + domainsSA[i][j];
		}
		s += ((s == '')? '': '&') + sa;
	}	
	
	
	JsHttpRequest.query(
		'/ajax/domains',
		{'action': 'sendmail', 'data': s, 'mail': form.email.value},
		function(result, errors) {
			if (errors) {
				alert('Ошибка отправки письма.');
				return;
			}		
			if (result) {
				alert('Результаты проверки отправлены успешно.');				
				return;				
			}
		},
		false
	);
	
}
