status="Подготовка к отображению страницы...";
d=document; var Menu; LocalMenu=new Object(); Page=new Object(); Net=new Object(); MenuAccess=new Array();
Page.reload=false;
Page.cash=true;
Net.href="";


onload=function(){
	d.body.style.cursor="wait";
	// ---------- Cодержание меню  --------------
	Page.MenuInLine=["block","block","block","inline","inline"];
	Menu = new MI('-',null,'',
	[ 
		new MI('Информация','/maininfo/info_ru.html','Основная информация, новости, объявления'),
		new MI('Руководство IDU',null,'Руководство IDU',	
		[
			new MI('Президиум','/maininfo/presid_ru.html','Президиум'),
			new MI('Ревизионная комиссия','/maininfo/revis_ru.html','Ревизионная комиссия')
		]),
		new MI('Члены IDU','/maininfo/member_ru.html','Члены IDU'),
		new MI('Регламентирующие документы и решения руководящих органов IDU',null,'Регламентирующие документы и решения руководящих органов IDU',
		[ 
			new MI('Решения Внеочередной Конференции IDU в Блекпуле','/document/blackpool_ru.html','Решения Внеочередной Конференции IDU в Блекпуле (Англия) 30 мая 2007 года.'),
			new MI('Решения Внеочередной Конференции IDU в Мангейме','/document/manhaim_ru.html','Решения Продолжения Внеочередной Конференции IDU в г.Манхейм (Германия) 26-28 октября 2007 года'),
			new MI('Положение о Кубке Мира', '/document/cupIDU_ru.html', 'Положение о Кубке Мира Международного Танцевального Союза (IDU)'),
			new MI('Договор о сотрудничестве IDSA и IDU', '/document/IDU_IDSA_ru.html', 'Договор о сотрудничестве IDSA и IDU')
		]),
		new MI('Единая международная классификация танцоров IDU',null,'Единая международная классификация танцоров IDU',
		[ 
			new MI('Редакция Положения о<br>Единой Международной классификации танцоров','/classification/state_ru.html','Редакция Положения о<br>Единой Международной классификации танцоров'),
			new MI('IDU классификация','/classification/class_ru.html','IDU классификация'),
		]),
		new MI('Результаты чемпионатов мира IDU','/resultat/resultat_ru.html','Результаты чемпионатов мира IDU'),
		new MI('Кубок Мира IDU',null,'Кубок Мира IDU',
		[ 
			new MI('2009','/cup/cup2009_ru.html','Кубок Мира IDU 2009'),
			new MI('2008','/cup/cup2008_ru.html','Кубок Мира IDU 2008')
			//new MI('2006','/cupidu/2006_ru.html','Кубок Мира IDU 2006'),
			//new MI('2005','/cupidu/2005_ru.html','Кубок Мира IDU 2005')
//		]),
//		new MI('Календарь соревнований',null,'Календарь соревнований',
//		[ 
//			new MI('2008','/cupidu/2008_ru.html','Календарь соревнований 2008')
		])
	]);
		
	
	PageContent=d.body.innerHTML;
	d.body.innerHTML=
	// ---------- Каркасная таблица ---------------------------------------------------------
	'<map name="lang"><area shape="rect" coords="854,5,929,35" href="javascript:LangChange(\'ru\')"><area shape="rect" coords="928,2,997,33" href="javascript:LangChange(\'en\')"></map>'+
	'<img id="mbaner" src="/_img/baner.jpg" width="1000" height="198" usemap="#lang">'+
	'<table align="center"><tr><td>'+
	'<table id="carcas2"><tr>'+
	'<td id="tdmenu"></td>'+
	'<td id="tdtext"></td>'+
	//'<td id="tdnews"></td>'+
	'</tr></table>'+
	'<table id="carcas3"><tr><td id="tdend">© INTERNATIONAL DANCE UNION 2009</td></tr></table><br><br></td></tr></table>';
	
	Page.title=d.getElementById('tdtitle');
	Page.text=d.getElementById('tdtext');
	Page.menu=d.getElementById('tdmenu');
	Page.end=d.getElementById('tdend');
	
	// ------------- Наполнение содержимым  --------------------------
	Menu.show(Page.menu,0,0); 
	//LocalMenu["M"].show(Page.top,3,100);
	Page.text.innerHTML=PageContent;
	Page.menu.innerHTML+=
		'<br><input style="visibility: hidden" type="checkbox" class="setting" checked onclick="Page.reload=!Page.reload"><span style="visibility: hidden" class="setting" title="Позволяет ускорить появление страниц и сократить трафик. Перегружается только полезная информация. Меню и оформление сохраняются в браузере.">Быстрая загрузка</span>';
		//'<br><input type="checkbox" class="setting" checked onclick="Page.cash=!Page.cash"><span class="setting" title="Кеширование загруженных страниц">Кеширование</span>';
	//Page.end.innerHTML=Page.CreateCounter();
	// ------------- Привязка функций для обработки перемещения и кликов мыши --------------
	Page.menu.onclick=Page.MenuClick;
	//Page.top.onclick=Page.MenuClick;
	d.body.style.cursor="auto";	
	
	d.body.style.display='block';
	status="Страница сформирована";
}

//Счетчики
/*Page.CreateCounter=function(){ 
	var rt="<p>О замеченных неточностях Вы можете сообщить: <a style='color:gray' href='mailto:temp@dancedvd.ru'>temp@dancedvd.ru</a></p>";
	if (/localhost/.test(d.location)) return rt;
	return rt + '<a href="http://top100.rambler.ru/top100/"><img src="http://counter.rambler.ru/top100.cnt?1006578" alt="" width=1 height=1 border=0></a><a href="http://top100.rambler.ru/top100/"><img src="http://top100-images.rambler.ru/top100/b1.gif" alt="Rambler\'s Top100" width=88 height=31 border=0></a>';
	 
}*/	  

//******************** Переключение языка *********************	

function LangChange(lang){ 	  
	if (Net.href=="") newlocation=location.href;
	else newlocation = location.protocol+'//'+location.host+Net.href;
	re=/_..\.html/;
	switch (lang) {
	   case 'ru' :
	   		newlocation=newlocation.replace(re, '_ru.html');
	       	break; 
	   case 'en' :
	   		newlocation=newlocation.replace(re, '_en.html');
	       	break;
	   default :
	   		newlocation=newlocation.replace(re, '_en.html');
	}
	location=newlocation;
}


//***********************************************************************************
//***********************  Структура и функции меню *********************************
Page.MenuClick=function(){if (MenuAccess[event.srcElement.id]) {MenuAccess[event.srcElement.id].click();return false;}}
	 
function MI(text,href,title,sarray,OnReadyFunc){
	this.text=text;
	this.href=href;//Адрес страницы или ссылка на объект-контейнер, куда вложены подменю
	this.title=title;
	this.sarray=sarray;//Массив вложенных элементов меню
	this.viewObj=null;//Ссылка на объект визуального представления
	this.activePage=false;// пункт меню активной страницы
	this.level=0;// уровень вложенности
	this.OnReadyFunc=OnReadyFunc;//Ссылка на объект визуального представления
}
ActivPage=new Array();
MI.prototype.show=function(box,level,i){
	i++; this.level=level;
	var MenuID='MI'+'_'+i;
	ActivPage[level] = this.activePage = (d.location.pathname==this.href);
	var MIClass; if (this.activePage) MIClass='MIactive'; else MIClass='MInorm';
	if (level) box.innerHTML+='<a id='+MenuID+' href="'+this.href+'" class="'+MIClass+'" title="'+this.title+'" >'+this.text+'</a>';
	
	this.viewObj=MenuID;MenuAccess[MenuID]=this;
	//Контейнер для подменю 
	if (this.sarray){
		var BoxID='MB'+'_'+i;
		this.href=BoxID;
		box.innerHTML+='<span id='+BoxID+' class=MC'+level+'></span>';
		
		for (j in this.sarray){//Отрисовка вложенных пунктов меню 
			i=this.sarray[j].show(d.getElementById(BoxID),level+1,i);
			if (ActivPage[level+1]) ActivPage[level]=true;
			if (ActivPage[level] || level==0 ) d.getElementById(BoxID).style.display=Page.MenuInLine[level];//Открытие блоков имеющих активные пункты меню
		}
	}
	return i;
}
MI.prototype.click=function(){
	if (this.activePage) return;
	if (this.sarray){ 
		box=d.getElementById(this.href);
		if (box.style.display!=Page.MenuInLine[this.level]) box.style.display=Page.MenuInLine[this.level]; 
		else box.style.display='none';
	}else{
		for (i in MenuAccess) if (MenuAccess[i].activePage) {
			d.getElementById(MenuAccess[i].viewObj).className="MInorm";
			MenuAccess[i].activePage=false;
		}
		d.getElementById(this.viewObj).className="MIactive";
		this.activePage=true;
		Net.LoadHTML(this.href,Page.text,this.OnReadyFunc);
	}
}
 
//*****************************************************************************
//************************ Другие функции **********************************

//Загрузка данных из интернета ----------------------------------------------------------------
Net.NewHTTPReq=function(){if (window.XMLHttpRequest){return new XMLHttpRequest();}else if (window.ActiveXObject){return new ActiveXObject("Microsoft.XMLHTTP");}}
Net.HTMLReq=Net.NewHTTPReq();//Объект XMLHttpRequest для загрузки HTML страниц

Net.OnRecLoad=function(ReqName){
	var req=Net.Reqs[ReqName].Req;
	if (req.readyState!=4) return; 
	if (req.status ==200 || req.status ==0) {
		//Net.Reqs[ReqName].OnReqLoad(req.responseText);
		MFST.RatingShow(req.responseText);
	}else alert('Запрашиваемая страница\n'+ReqName+'\nв данный момент недоступна.\n\nПопробуйте повторить снова или сообщите администратору.');
}  

//Объекты и функции для загрузки других данных (форум, реклама, банеры)	
Net.Reqs=new Object();
Net.Req=function(OnReqLoad){
	this.Req=Net.NewHTTPReq();
	this.OnReqLoad=OnReqLoad;
}
Net.Req.prototype.LoadData=function(href){	
	if (this.Req.readyState!=4) this.Req.abort();
	if (Page.cash){
		if (/\?/.test(href)){this.Req.open("GET", href+'&RND='+Math.round(Math.random()*1000), true);}
		else{this.Req.open("GET", href+'?RND='+Math.round(Math.random()*1000), true);}
	}else{this.Req.open("GET", href, true);}
	this.Req.onreadystatechange=this.OnReqLoad;
	this.Req.send(""); 
}

Net.Reqs["LA"]=new Net.Req(function(){Net.OnRecLoad("LA")});


//Загрузка HTML кода страниц и размещение его в елементе box, вызов функции после формирования страницы (если она указана)
Net.LoadHTML=function(href,box,OnReadyFunc){
	d.body.style.cursor="wait";
	Page.menu.style.cursor="wait";
	if (Page.reload){
		d.location=href;
	}else {
		Net.href=href;
		if (Net.HTMLReq.readyState!=4) Net.HTMLReq.abort();
		if (Page.cash){
			if (/\?/.test(href)){Net.HTMLReq.open("GET", href+'&RND='+Math.round(Math.random()*1000), true);}
			else{Net.HTMLReq.open("GET", href+'?RND='+Math.round(Math.random()*1000), true);}
		}else{Net.HTMLReq.open("GET", href, true);}
		
		Net.HTMLReq.onreadystatechange=function(){
			if (Net.HTMLReq.readyState!=4) return; 
			if (Net.HTMLReq.status ==200 || Net.HTMLReq.status ==0) {
				box.innerHTML=Net.HTMLReq.responseText.split(/<\/*body>/)[1];//*/
				if (OnReadyFunc) {OnReadyFunc();}
			}
			//else box.innerHTML='<div style="text-align: center;text-indent: 0"><big>Запрашиваемая страница<br><br>'+d.location.protocol+"//"+d.location.host+href+'<br><br>в данный момент недоступна.<br><br><br><br>Попытайтесь повторить загрузку или сообщите администратору.</big></div>';
			else box.innerHTML='<div style="text-align: center;text-indent: 0">Извините, запрашиваемая страница<br><br>'+d.location.protocol+"//"+d.location.host+href+'<br><br>в данный момент находится в процессе создания.</div>';
			d.body.style.cursor="auto";
			Page.menu.style.cursor="hand";
		};
		Net.HTMLReq.send();
	}
}

//Для отладки - показывает все свойства объекта  
function debuG(obj){
	var temp="";
	for (i in obj){
		temp+= i+" = "+ obj[i]+'\n';
	}
	alert(obj+'\n\n'+temp);
}

//Функции страниц (вызываются после загрузки страницы), например для загрузки и отображения реплик форума
MFST=new Object();
MFST.Rating=new Array();

MFST.RatingLoad=function(){
	Net.Reqs["LA"].LoadData('/cgi-bin/cup2007/get.cgi?p=10&g=102');
}

MFST.RatingShow=function(txtData){
	var HTML='<table>';
	var Records=txtData.split('\n');
	var Fields=new Array();
	for (i in Records){
		Fields[i]=Records[i].split('\t');
		HTML+='<tr>';
		for (j in Fields[i]){
			HTML+='<td>'+ Fields[i][j] +'</td>'
		}
		HTML+='</tr>';
	}
	HTML+='</table>';
	//alert(Records.length); 
    d.getElementById('mfstrating').innerHTML=HTML;
}

//Открытие картинок в отдельном окне
function openIMG(phref){
	window.open(phref,"MAINW","scrollbars=0,location=0,menubar=0,resizable=1,toolbar=0,status=0,height=760,width=500");
}



