function getHTTPRequestObject() {
	var xmlHttpRequest;
	/*@cc_on
	@if (@_jscript_version >= 5)
		try {
			xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (exception1) {
			try {
				xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (exception2) {
				xmlHttpRequest = false;
			}
		}
	@else
		xmlhttpRequest = false;
	@end @*/
	 
	if (!xmlHttpRequest && XMLHttpRequest) {
		try {
			xmlHttpRequest = new XMLHttpRequest();
		} catch (exception) {
			xmlHttpRequest = false;
		}
	}
	return xmlHttpRequest;
}

var catalog_ganr=[[4,5,6,7,15,18],['Фэнтези','Фантастика','Horror','Школы магии','Повседневность','Другие']];
var the_best_number='19';
var the_best_exception={};
var the_best_status_failure={'Стартует':false,'Активна':false,'Заморожена':true,'Реконструкция':false,'Неисправна':true,'Не принимает':false,'ТРУП':true,'Нет данных':true};
var the_best_exist=false;

function getNavigator(){
	function getGames(){
		var data={'Фэнтези':[],'Фантастика':[],'Horror':[],'Школы магии':[],'Повседневность':[],'Другие':[],
			join:function(){
				return this['Фэнтези'].concat(
					this['Фантастика'],
					this['Horror'],
					this['Школы магии'],
					this['Повседневность'],
					this['Другие']
				);
			}
		};
		var cur_ganr;
		
		posts[0].base.innerHTML.replace(
			/<big><b>(Фэнтези|Фантастика|Horror|Школы магии|Повседневность|Другие)<\/b><\/big>|<a target="?_new"? href="?(https?:\/\/[A-Za-z0-9\-_]+(?:\.[A-Za-z0-9\-_]+)*(?:\/[A-Za-z0-9\.\/%&=\?\-_]*)?)"?><u>&lt;игра&gt;<\/u><\/a>\s?<b><a target="?_new"? href="?(http:\/\/roles\.borda\.ru\/\?\d-\d{1,2}-\d{1,2}-\d{8}-\d{3}-\d-\d-\d+)"?><u>((?:[^<\x28]|<(?!\/A>)|\x28(?!\d{1,2}\.\d{1,2}))*[^\s\x28<])\s*(?:\x28(\d{1,2}\.\d{1,2})(?: - ([^\x29]+))?\x29)?<\/u><\/a><\/b>/gi,
			//'a',
			function(str,ganr,urlgame,url,name,dat,res){	
				if(ganr)cur_ganr=ganr;
				else data[cur_ganr].push([url,urlgame,name,dat,res]);
				return '';
			}
		);
		return data;
	}
	if(isDirective('1:0/30#3-')){
		//alert('ok');
		//alert(postIterator);
		var posts=[];
		
		if(postIterator(function(o,b){posts.push(b);})){
			var n=createNodeByArray.d(['tr',,
				['td',{style:{backgroundColor:diz[2]}},
					['input',{type:'button',value:'Создать The Best',
						onclick:function(){
							//if(the_best_exist) return;
							var allgames=getGames().join();
							var links=[];
							allgames.forEach(function(obj){
								if(!the_best_status_failure[obj[4]]&&!the_best_exception[obj[1]]) links.push(obj[1]);
							});
							links.sort();
							//alert(1);
							var d=(new Date()).valueOf()+86400000;
							//alert(new Date(d));
							function date_format(d){
								return d.getDate()+'.'+(d.getMonth()+1)+'.'+d.getFullYear();
							}
							var data=[the_best_number,date_format(new Date(d)),date_format(new Date(d+86400000*9)),links.join('\n')];
							var title='The BEST $0. Формирование списка участников ($1 - $2)'
							var text='Любой зарегистрированный пользователь (как сотрудник, так и простой участник) Ролес может предложить свой список лучших форумов.\n\nТребования к форумам:\n- форумы должны быть действующими, т.е. НЕ мертвыми, НЕ замороженными и технически исправными;\n- форумы должны присутствовать в каталоге Ролес;\n- в конкурсе НЕ участвует форум занявший первое место в предыдущем конкурсе.\n[small][b]Примечание:[/b] в список так же не попадают форумы, активность которых невозможно проверить.[/small]\n\nТребования к сообщениям-спискам от участников:\n- в вашем сообщении должно быть не более и не менее [b]7 (семи) ролевых[/b] форумов.\nУбедительная просьба НЕ использовать теги форматирования - это зарудняет автоматический подсчёт голосов. Если вам нужно добавить в пост какую-то дополнительную информацию - отделите её от голосов горизонтальной линией - [[b][/b]hr]\n\nФормирование списка будет длиться [b]10 (десять) дней[/b], т.е. по $2.\n\nСписок всех игр, соответствующих требованиям, приведен в скрытом тексте.\n[more]\n$3\n[/more]';
							var w=window.open('http://roles.borda.ru/?2-16');
							multiInterval(500,[
								function(){
									if(w.loaded){
										w.theForm.title.value=title.template$(data);
										w.theForm.message.value=text.template$(data);
										return true;
									}
									else return false;
								}
							]);

						}
					}],' ',
					['input',{type:'button',value:'Подсказка для проверки',
						onclick:function(){
							var t=new Date();
							var m=t.getMonth();
							var y=t.getFullYear();
							t=t.valueOf();
							var allgames=getGames();

							var ret='<big><b>Нуждаются в проверке:</b></big><br>';
							var format='<a href="$1" target="_new"><u>&lt;игра&gt;</u></a> <b><a href="$0" target="_new"><u>$2 ($3?4( - )$4)</u></a></b><br>';
							function getListForTestGameAsHTML(games,format,period){
								var out=[],ret='';
								games.forEach(function(obj){
									var s=obj[3].split('.').map(Number);
									s[1]--;
									var d=(new Date(y-(m<s[1]),s[1],s[0])).valueOf();
									if(t-d>period*86400000){
										obj.push(t-d);
										out.push(obj);
									}
								});
								out.sort(function(a,b){
									return b[5]-a[5];
								});
								for(var j=0;j<out.length;j++){
									ret+=format.template$(out[j])
								}
								return ret;
							}
							var l=catalog_ganr[1],a;
							for(var j=0;j<l.length;j++){
								a=l[j];
								if(allgames[a].length) ret+='<b>'+a+'</b><br>'+getListForTestGameAsHTML(allgames[a],format,30);
							}

							document.getElementById('navigator_out').innerHTML=ret;
						}
					}]
				],
				['td',{style:{backgroundColor:diz[2]}},
					['div',{className:'font1',id:'navigator_out'},'']
				]
			]);
			//alert('ok');
			posts[0].runPath('../../++').after(n);

			
		}
	}
	document.body.appendChild(createNodeByArray.d(['div',,
		['select',{id:'ganr_select'}].concat(catalog_ganr.transponer().map(function(a){return ['option',{value:'/?0-'+a[0]},a[1]];})),
		['input',{type:'button',onclick:function(){updateNavigator('http://roles.borda.ru'+this.previousSibling.value);}}]
	]));
}

function updateNavigator(url){

	var links=[];

	var urlout='http://roles.borda.ru/?7-0-0-00000030-000-0-0';
	var w=window.open(url);
	//var xmlhttp=getHTTPRequestObject();
	var razdelname='';
	/*with(xmlhttp){
		open('GET',url,true);
		send(null);
	}*/
	//debugPrint('ok');

	multiInterval(500,[
		function(){
			var ret=false;
			if(w.loaded){
			//if(xmlhttp.readyState=='4'){
				var t=w.document.body.innerHTML;
				//var t=xmlhttp.responseText;
				w.close();
				//debugPrint(t);
				if(razdelname==''){
					razdelname=t.match(/<a[^>]*><u>Форум<\/u><\/a> +\u00BB +<a[^>]*><u>([^<]*)<\/u><\/a>/i)[1];
				}
				//debugPrint(razdelname);
				t.replace(/<FONT class="font3"><A href="(\/\?1-\d{1,2}-\d+-\d{8}-000-0-0-\d{10})"[^>]*>(http:\/\/[^\s]*) \/ ((?:[^<\x28]|<(?!\/A>)|\x28(?!\d{1,2}.\d{1,2}))*[^\s\x28<])\s*(?:\x28(\d{1,2}.\d{1,2})(?: - ([^\x29]+))?\x29)?<\/A><\/FONT>/gi,
					function(str,url,urlgame,name,dat,res){
						if(name=='')name=urlgame.replace(/http:\/\/|(?:borda|forum24)\.ru/,'');
						links.push([url,urlgame,name,dat,res]);
					}
				);

				url.replace(/\?0-(\d{1,2})(?:-(\d+))?/,function(str,razdel,startpage){
					if(startpage===undefined) startpage=0;
					else startpage=Number(startpage);
					if(t.search(new RegExp('<A href="\\/\\?0-'+razdel+'-'+(startpage+40)+'">','i'))>-1){
						ret=false;
						url='http://roles.borda.ru/?0-'+razdel+'-'+(startpage+40);
						w=window.open(url);
						/*with(xmlhttp){
							open('GET',url,true);
							send(null);
						}*/
					}
					else{
						ret=true;
						w=window.open(urlout);
						/*with(xmlhttp){
							open('GET',urlout,true);
							send(null);
						}*/
					}
				});
			}
			return ret;
		},
		function outputLinks(){
			var ret=false;
			
			if(w.loaded){
				links.sort(function(a,b){
					if(a[2]>b[2]) return 1;
					else if(a[2]<b[2]) return -1;
					else if(a[2]==b[2]){
						if(a[1]>b[1]) return 1;
						else if(a[1]<b[1]) return -1;
					}
				});
				for(var j=links.length-1;j>0;j--){
					if(links[j][0].match(/-(\d{8})-/)[1]==links[j-1][0].match(/-(\d{8})-/)[1]) links.splice(j,1)
				}
				//[url,urlgame,name,dat,res]
				var t='',format='[url=$1]<игра>[/url] [b][url=http://roles.borda.ru$0]$2 ($3?4( - )$4)[/url][/b]\r\n';
				for(j=0;j<links.length;j++){
					t+=format.template$(links[j]);
				}
				
				w.theForm.message.value=w.theForm.message.value.replace(
					new RegExp('\\[big\\]\\[b\\]'+razdelname+'\\[\\/b\\]\\[\\/big\\](?:[^\\[]|\\[(?!big\\]\\[b\\]))*','gi'),
					'[big][b]'+razdelname+'[/b][/big]\r\n\r\n'+t+'\r\n\r\n'
				);
				w.theForm.submit();
				
				return true;
			}
			else return false;
		}
	]);

}

function debugPrint(text){
	document.body.appendChild(document.createTextNode(text));
	document.body.appendChild(document.createElement('br'));
}

