var default_tlds='.ru,.com,.net,.biz,.org,.in,.info,.mobi,.name';
var default_checked_tlds='.ru,.com,.net,';
var enabled_tlds='.ru,.com,.net,.biz,.org,.info,.mobi,.eu,.name,.in,.ws,.de,.cc,.it,.su,.me,.us,.ua,.com.ru,.net.ru,.org.ru,.pp.ru,.msk.ru,.spb.ru,.ru.net,.co.uk,.com.ua,.net.ua,.org.ua,.kiev.ua,.ac,.ae,.ag,.al,.at,.au,.as,.be,.bg,.br,.ca,.cd,.ch,.ck,.cl,.cn,.cx,.cz,.dk,.ee,.edu,.eg,.es,.fi,.fj,.fo,.fr,.ge,.gl,.gr,.gs,.gs,.hm,.hk,.hu,.ie,.int,.is,.il,.jp,.kr,.la,.li,.lk,.lt,.lu,.lv,.mc,.mil,.mn,.ms,.mx,.nl,.no,.nz,.pl,.pt,.ro,.se,.sg,.sh,.si,.sk,.sm,.st,.tc,.th,.to,.tr,.tv,.tw,.uk,.va,.vg,.ac.cn,.ac.jp,.ac.uk,.ad.jp,.adm.br,.adv.br,.agr.br,.ah.cn,.am.br,.arq.br,.art.br,.asn.au,.ato.br,.bio.br,.bj.cn,.bmd.br,.cim.br,.cng.br,.cnt.br,.com.au,.com.br,.com.cn,.com.eg,.com.hk,.com.mx,.com.tw,.conf.au,.co.jp,.co.uk,.cq.cn,.csiro.au,.ecn.br,.edu.au,.edu.br,.esp.br,.etc.br,.eti.br,.eun.eg,.emu.id.au,.eng.br,.far.br,.fj.cn,.fm.br,.fnd.br,.fot.br,.fst.br,.g12.br,.gd.cn,.ggf.br,.gr.jp,.gs.cn,.gov.au,.gov.br,.gov.cn,.gov.hk,.gob.mx,.gz.cn,.gx.cn,.he.cn,.ha.cn,.hb.cn,.hi.cn,.hl.cn,.hn.cn,.hk.cn,.id.au,.ind.br,.imb.br,.inf.br,.info.au,.idv.tw,.jl.cn,.jor.br,.js.cn,.jx.cn,.lel.br,.ln.cn,.ltd.uk,.mat.br,.med.br,.mil.br,.ne.jp,.net.au,.net.br,.net.cn,.net.eg,.net.hk,.net.lu,.net.mx,.net.uk,.net.tw,.nm.cn,.mo.cn,.mus.br,.nom.br,.not.br,.ntr.br,.nx.cn,.plc.uk,.odo.br,.oop.br,.or.jp,.org.au,.org.br,.org.cn,.org.hk,.org.lu,.org.tw,.org.uk,.ppg.br,.pro.br,.psi.br,.psc.br,.qh.cn,.qsl.br,.rec.br,.sc.cn,.sd.cn,.sh.cn,.slg.br,.sn.cn,.srv.br,.sx.cn,.tj.cn,.tmp.br,.trd.br,.tur.br,.tv.br,.tw.cn,.vet.br,.wattle.id.au,.xj.cn,.xz.cn,.yn.cn,.zlg.br,.zj.cn';

var DOMAIN_INPUT_ID='domainname';
var CONTENT_ID='request_content';
var TLD_INFO_START_ID='request_';
var TLD_INFO_CLASS='request_tld';
var CHECK_BOX_ID='tlds_box';
var WAITING_FOR_INPUT_HTML='<DIV CLASS="info_input_head">{TLD}</DIV><DIV CLASS="info_input_body"><br />введите данные</DIV><DIV CLASS="info_input_foot">&nbsp;</DIV>';
var WAITING_FOR_TRANSFER_HTML='<DIV CLASS="info_transfer_head">проверяем {TLD}</DIV><DIV CLASS="info_transfer_body"><br />подождите</DIV><DIV CLASS="info_transfer_foot">&nbsp;</DIV>';
var WAITING_FOR_TRANSFER_CLASS='infobox_transfer';
var WAITING_FOR_INPUT_CLASS='infobox_input';
var LOOKUP_URL='get.php?do=lookup';
var KEY_PRESSED_TIMER=200;

var TLDS=new Array();
var CHECKED_TLDS=new Array();
var press_timeout=null;

function page_load()
{
	get_tlds();
	create_tlds_box();
	create_tld_infoboxes();
	document.myform.domainname.focus();
}
function keypressed(tlds)
{
window.clearTimeout(press_timeout);
press_timeout=window.setTimeout("lookup('"+to_str(tlds)+"')",KEY_PRESSED_TIMER);
}

function lookup(checked)
{
var domain=domain_to_lookup();
checked=checked.split(",");
if (domain.length>1&&checked.length)
{
	var ident=0;
	var part_ident=0;
	var checked_part=new Array();
	for (var i=0;i<checked.length;i++)
	{
		if (ident==0) checked_part[part_ident]=new Array();
		checked_part[part_ident]=addToArray(checked_part[part_ident],checked[i]);
		ident++;
		if (ident==4) {part_ident++; ident=0;}
	}
	for (i=0;i<checked_part.length;i++)
	{
		set_tld_info_status(2,checked_part[i]);
		get_content(checked_part[i],domain);
	}
}
else set_tld_info_status(1,checked);
}

function get_content(tlds,domain){
		string_checked=to_str(tlds);
		
		var param='domain='+domain+'&tlds='+string_checked;
		new Ajax.Request(LOOKUP_URL,{method:'get',parameters:param,onComplete:show_result});
}

function show_result(response)
{
	var myThing=new Array();
	var INFO_BOX;

	myThing = PHP_Unserialize(response.responseText);

	if (myThing[0]==domain_to_lookup())
	{
		for (var i in myThing[1])
		{
			INFO_BOX=document.getElementById(TLD_INFO_START_ID+i);
			if (INFO_BOX)
			{
				INFO_BOX.className=myThing[1][i][0];
				INFO_BOX.innerHTML=myThing[1][i][1];
			}		
		}
	}
}

function set_tld_info_status(status,tlds)
{
var HTML_CODE='';
var TLD_INFO_BOX;
var BOX_HTML_CODE;
	switch (status)
	{
		case 1:
			HTML_CODE=WAITING_FOR_INPUT_HTML;
			BOX_CSS=WAITING_FOR_INPUT_CLASS;
		break;
		case 2:
			HTML_CODE=WAITING_FOR_TRANSFER_HTML;
			BOX_CSS=WAITING_FOR_TRANSFER_CLASS;
		break;
	}
	for (var i=0;i<tlds.length;i++)
	{
		BOX_HTML_CODE=HTML_CODE.replace('{TLD}',tlds[i]);
		TLD_INFO_BOX=document.getElementById(TLD_INFO_START_ID+tlds[i]);
		if (TLD_INFO_BOX){
		TLD_INFO_BOX.innerHTML=BOX_HTML_CODE;
		TLD_INFO_BOX.className=BOX_CSS;
		}
	}
}

function get_tlds()
{
var cookie=get_cookie('tlds');
	if (cookie==null) TLDS=default_tlds.split(',');
	else if (cookie!='') TLDS=cookie.split(',');
	cookie=get_cookie('checked_tlds');	
	if (cookie==null) CHECKED_TLDS=default_checked_tlds.split(',');
	else if (cookie!='') CHECKED_TLDS=cookie.split(',');	
}

function create_tlds_box()
{
var box=document.getElementById(CHECK_BOX_ID);
var tmp='';
var j=0;
	for (i=0; i<TLDS.length; i++)
	{
		tmp+='<INPUT type="checkbox" id="check_'+TLDS[i]+'" value="'+TLDS[i]+'" ONCLICK="tld_checkbox_click(this);"';
		if (in_array(CHECKED_TLDS,TLDS[i])>-1) tmp+=' CHECKED';
		tmp+='><LABEL for="check_'+TLDS[i]+'">'+TLDS[i]+'</LABEL>&nbsp;';
		j++;
		if (j==3)
		{
		tmp+='<br>';
		j=0;
		}
		{
		}
	}
	box.innerHTML=tmp;
}

function create_tld_infoboxes()
{
var container=document.getElementById('request_content');
	container.innerHTML='';
	for (var i=0; i<CHECKED_TLDS.length; i++)
	{
		if (in_array(TLDS,CHECKED_TLDS[i])>-1) add_tld_infobox(CHECKED_TLDS[i]);
	}
	SetCookie('checked_tlds',to_str(CHECKED_TLDS));
	lookup(to_str(CHECKED_TLDS));
}

function tld_checkbox_click(checkbox)
{
	if (checkbox.checked)
	{
		CHECKED_TLDS=addToArray(CHECKED_TLDS, checkbox.value);
		add_tld_infobox(checkbox.value);
		lookup(checkbox.value);
	}
	else
	{
		CHECKED_TLDS=removeFromArray(CHECKED_TLDS,checkbox.value);
		remove_tld_infobox(checkbox.value);
	}	
	SetCookie('checked_tlds',to_str(CHECKED_TLDS));
}

function removeFromArray(arr,value)
{
	var in_arr=in_array(arr,value);
	if(in_arr>-1)
	{
		arr.splice(in_arr,1);
	}
	return arr;
}

function addToArray(arr,value)
{
	if(in_array(arr,value)==-1)
		arr.push(value);
	return arr;
}

function add_tld_infobox(tld)
{
var container=document.getElementById(CONTENT_ID);
if (!document.getElementById(TLD_INFO_START_ID+tld))
{
var tldDiv=document.createElement('div');
	tldDiv.id=TLD_INFO_START_ID+tld;
	tldDiv.className=TLD_INFO_CLASS;
	container.appendChild(tldDiv);
}
}

function remove_tld_infobox(tld)
{
var tldDiv=document.getElementById(TLD_INFO_START_ID+tld);
	if (tldDiv)
	{
	var container=document.getElementById(CONTENT_ID);
		container.removeChild(tldDiv);
	}
}

function users_tlds_box()
{
var enabled_tlds_arr=enabled_tlds.split(',');
var enabled_tlds_box="";
var enabled_tlds_in_box_part=Math.floor(enabled_tlds_arr.length/2);
var box_part=new Array();
var box_ID=0;
	for (var i=0;i<enabled_tlds_arr.length;i++)
	{
		if(!box_part[box_ID]) box_part[box_ID]="";
		box_part[box_ID]+='<input type="checkbox" id="en_check_'+enabled_tlds_arr[i]+'" value="'+enabled_tlds_arr[i]+'" onclick="en_tld_checkbox_click(this);"';
		if (in_array(TLDS,enabled_tlds_arr[i])>-1) box_part[box_ID]+=' CHECKED';
		box_part[box_ID]+='><LABEL for="en_check_'+enabled_tlds_arr[i]+'">'+enabled_tlds_arr[i]+'</LABEL><br>';
		if (i==enabled_tlds_in_box_part) box_ID++;
	}
	enabled_tlds_box="<div id='lbContent'><div id='lightboxcontent'>";
	for (i=0;i<box_part.length;i++)
	{
		enabled_tlds_box+='<div style="width:50%;position:relative;float:left;margin-left:15px;margin-top:5px;">'+box_part[i]+'</div>';
	}
	enabled_tlds_box+="</div><div class='link_close'><a href='#' class='lbAction' rel='deactivate'>Закрыть</a></div></div>";
	var valid = new lightbox(enabled_tlds_box,'html');
}

function en_tld_checkbox_click(check){
	if (check.checked) TLDS=addToArray(TLDS,check.value);
	else
	{
		TLDS=removeFromArray(TLDS,check.value);
		if (in_array(CHECKED_TLDS,check.value)>-1)
		{
			CHECKED_TLDS=removeFromArray(CHECKED_TLDS,check.value);
			remove_tld_infobox(check.value);
		}
	}
	SetCookie('checked_tlds',to_str(CHECKED_TLDS));
	SetCookie('tlds',to_str(TLDS));
	create_tlds_box();
	
}

function to_str(arr)
{
	return arr.join(',');
}

function in_array(arr, value)
{
var result=-1;
	for (var i=0;i<arr.length;i++)
	{
		if (arr[i]==value) result=i;
	}
	return result;
}

function domain_to_lookup()
{
var domain=document.getElementById(DOMAIN_INPUT_ID).value;
domain=trim(domain).toLowerCase();
if(domain.indexOf("www.")==0||domain.indexOf("http://")==0||domain.indexOf("https://")==0)
domain=domain.substring(domain.indexOf("www.")+4);
domain=domain.replace(/[^abcdefghijklmnopqrstuvwxyz 01234567890-]/gi,'');
return domain;
}


function SetCookie(name, value){
var d=new Date();
d.setTime(d.getTime()+(86400000*365));
document.cookie = name + "=" + escape (value) + "; expires=" + d.toGMTString();
}

function get_cookie(name)
{
cookie_name = name + "=";
cookie_length = document.cookie.length;
cookie_begin = 0;
while (cookie_begin < cookie_length)
{
value_begin = cookie_begin + cookie_name.length;
if (document.cookie.substring(cookie_begin, value_begin) == cookie_name)
{
var value_end = document.cookie.indexOf (";", value_begin);
if (value_end == -1)
{
value_end = cookie_length;
}
return unescape(document.cookie.substring(value_begin, value_end));
}
cookie_begin = document.cookie.indexOf(" ", cookie_begin) + 1;
if (cookie_begin == 0)
{
break;
}
}
return null;
}

function trim(str)
{
return str.replace(/^\s*|\s*$/g,'');
}

function PHP_Unserialize(input)
{
	var result = PHP_Unserialize_(input);
	return result[0];
}

function PHP_Unserialize_(input)
{
var length = 0;
        
	switch (input.charAt(0))
	{
		case 'a':
			length = PHP_Unserialize_GetLength(input);
			input  = input.substr(String(length).length + 4);

		var arr   = new Array();
		var key   = null;
		var value = null;

			for (var i=0; i<length; ++i)
			{
				key   = PHP_Unserialize_(input);
				input = key[1];

				value = PHP_Unserialize_(input);
				input = value[1];

				arr[key[0]] = value[0];
			}

			input = input.substr(1);
			return [arr, input];
		break;
		case 'O':
			length = PHP_Unserialize_GetLength(input);
		var classname = String(input.substr(String(length).length + 4, length));
                
			input  = input.substr(String(length).length + 6 + length);
		var numProperties = Number(input.substring(0, input.indexOf(':')))
			input = input.substr(String(numProperties).length + 2);

		var obj      = new Object();
		var property = null;
		var value    = null;

			for (var i=0; i<numProperties; ++i)
			{
				key   = PHP_Unserialize_(input);
				input = key[1];

				key[0] = key[0].replace(new RegExp('^\x00' + classname + '\x00'), '');
				key[0] = key[0].replace(new RegExp('^\x00\\*\x00'), '');

				value = PHP_Unserialize_(input);
				input = value[1];

				obj[key[0]] = value[0];
			}
			input = input.substr(1);
			return [obj, input];
		break;
		case 's':
			length = PHP_Unserialize_GetLength(input);
			return [String(input.substr(String(length).length + 4, length)), input.substr(String(length).length + 6 + length)];
		break;
		case 'i':
		case 'd':
		var num = Number(input.substring(2, input.indexOf(';')));
			return [num, input.substr(String(num).length + 3)];
		break;
		case 'b':
		var bool = (input.substr(2, 1) == 1);
			return [bool, input.substr(4)];
		break;
		case 'N':
			return [null, input.substr(2)];
		break;
		case 'o':
		case 'r':
		case 'C':
		case 'R':
		case 'U':
			alert('Error: Unsupported PHP data type found!');
		default:
			return [null, null];
		break;
	}
}
    
function PHP_Unserialize_GetLength(input)
{
	input = input.substring(2);
var length = Number(input.substr(0, input.indexOf(':')));
	return length;
}
