var doc_id=0;

function fixIE ()
{
	var thumbs = document.getElementById("holder");
	if (thumbs==null){
		return;
	}
	var alla = thumbs.getElementsByTagName("A");
	if (/MSIE (5\.5|6).+Win/.test(navigator.userAgent))
	{
		for (var i=0;i<alla.length;i++)
		{			
			alla[i].onmouseover = function()
			{	
				var alls = this.getElementsByTagName("SPAN");
				if (alls.length > 1)
				{
					alls[1].style.display = "block";					
					alls[0].style.display = "none";
				}
			}
			alla[i].onmouseout = function()
			{	

				var alls = this.getElementsByTagName("SPAN");
				if (alls.length > 1)
				{
					alls[0].style.display = "block";
					alls[1].style.display = "none";
				}
			}
			if (/MSIE (5\.5).+Win/.test(navigator.userAgent))
			{
				var allspan = alla[i].getElementsByTagName("SPAN");
				for (var j=0;j<allspan.length;j++)
				{
					allspan[j].style.width = "180px";
				}
			}
		}
	}	
}


var kaboom_var;
var kaboom_var1;
var ka_run = 0;
var book_marks_changed=false;

var Counters={
	ids:{},
	add:function(id) {Counters.ids[id]=$(id).value},
	show:function (id) {	
		var countercode=Counters.ids[id];
		if (countercode) {
			var reg=/<script([^>]+)?>([^<]*)?<\/script>/i;
			if (reg.test(countercode)) {
				var params=RegExp.$1;
				var code=RegExp.$2;
				Counters.ids[id]=countercode.replace(reg,"");
				var scpparam=/src=['"]?([^\s'"]*)['"]?/i;

				if (scpparam.test(params)) {
					var scpurl=RegExp.$1
					var script=document.createElement('SCRIPT');
					script.type = 'text/javascript';
					script.src=scpurl;
					document.body.appendChild(script);
					Counters.ids[id]=countercode.replace(reg,"");
					setTimeout("Counters.show('"+id+"')",3000);
				} else {
					if (code) {
						evalSCP(code);
						Counters.show(id);
					}
				}
			}
		}
	}
};

function evalSCP(code) {
	var script=document.createElement('SCRIPT');
	script.type = 'text/javascript';
	script.text=code;
	document.body.appendChild(script);
}

var flash_banners=new Array();/*assoc array, key is div's id */


/*
 Goes thru elemenst of flash_banners Array (they are SWFObjects) and calls 'write' on them
*/

function refreshFlash()
{
	var processed=new Object;
	for(var i=0;i<flash_banners.length;i++)
	{
		var s1=flash_banners[i];
		if (processed[s1.my_div]==undefined){
			processed[s1.my_div]=true;
			s1.write(s1.my_div);
		}
	}
}

function kaboom() {
	if (ka_run == 1){
		return;
	}
	ka_run = 1;
	clearTimeout(kaboom_var);
	kaboom_var1 = setTimeout("ka_run = 0;",800);
	var tagCur = $$('div.mainfoot');
	if ((tagCur==null) || (tagCur=='') || (tagCur[0].hasClassName('runfixer')) || ((tagCur.length>0)&&(!tagCur[0].match('div.russianow')) &&(!tagCur[0].hasClassName('nofixer')) &&(!tagCur[0].match('div.aboutus'))))	//&&(!tagCur[0].match('div.aboutus'))
	{
		retube();
	}

	if ((tagCur[0]!=null) && (tagCur[0]!='') && (tagCur[0].match('div.russianow'))) {grouplist_retube()}	
	if ($('mainholder')) {if ($('mainholder').select('.search')[0]) {Stube.wd>0?Stube.onresize():0}}
	
	fixLoRes();
	if ((tagCur[0]==null) || (tagCur=='') || ((!tagCur[0].match('div.russianow'))&&(!tagCur[0].match('div.aboutus'))))
	{
		movie_init();
	}
	refreshFlash();
	fixFooter();
	fixBookmarks();
	runSidebar();
	getRelatedStory();
	addOnloadEvent("setGeoIP");
}


var Banners={};
function Banner(params) {this.params = params;  this.create()}
Banner.prototype={
	params:{},			/*  {name, width, height, type, src} */
	create:function() {
		var p=this.params;
		p.checkCount=0;
		p.curheight=0; 
		document.write("<IFRAME id='"+p.name+"'  name='"+p.name+"'  src='"+p.src+"' frameborder=0 scrolling=0 height=0 onload=Banners['"+p.name+"'].checkready() width="+p.width+" style='margin:0 0 0 0;overflow-y:hidden; overlow-x:hidden;'></IFRAME>");
		Banners[p.name]=this;
	},

	checkready:function() {
		var completed=0;
		try{
			completed=frames[this.params.name].document.getElementsByTagName('img')[0].complete;
		} catch (e) {};
		if (completed) {
			this.init();
		} else {
			if (this.params.checkCount<=5) {
				this.params.checkCount++;
				setTimeout("Banners['"+this.params.name+"'].checkready()", 1000);
			}
		}
	},
	
	init:function(){
		var href=frames[this.params.name].document.close();
		var href=frames[this.params.name].document.getElementsByTagName('a')[0];
		href.target="_top";
		var img=frames[this.params.name].document.getElementsByTagName('img')[0];
		img.border=0;
		var body=frames[this.params.name].document.getElementsByTagName('body')[0];
		body.style.margin='0px';
		body.style.overflow='hidden';
		this.fade();
	},
	
	fade:function() {
		if (this.params.curheight < this.params.height) {
				this.params.curheight+=10;
				if (this.params.curheight>this.params.height) {this.params.curheight = this.params.height}
				$(this.params.name).height=this.params.curheight+"px";
				setTimeout("Banners['"+this.params.name+"'].fade()", 10);
		}
	}

};



window.onresize = function() {
	clearTimeout(kaboom_var);	
	kaboom_var = setTimeout("kaboom();",800);
}

window.onload = function() {
	var tagCur = $$('div.mainfoot');
	if ((tagCur==null) || (tagCur=='') || (tagCur[0].hasClassName('runfixer')) || ((tagCur.length>0)&&(!tagCur[0].match('div.russianow')) &&(!tagCur[0].hasClassName('nofixer')) &&(!tagCur[0].match('div.aboutus'))))	
	{
		initresizedivs();
	}   
	fixIE();
	setShowHideRules();
	fixLoRes();
	h1init();
	if ((tagCur[0]==null) || (tagCur=='') || ((!tagCur[0].match('div.russianow'))&&(!tagCur[0].match('div.aboutus'))))
	{
		movie_init();
	}
	refreshFlash();
	fixBookmarks();
	fixFooter();
	if ((tagCur[0]!=null) && (tagCur[0]!='') && (tagCur[0].match('div.russianow'))) {grouplist_init()}
	fixLongContent();
	runSidebar();
	try {_BROWSER_TYPE_?getRelatedStory():0;} catch(e) {}	
	for (var i in Counters.ids) {Counters.show(i)}	
}



/****************************************/
function CssClassesHandler(object) { this.object = object }

CssClassesHandler.prototype = {
    object      : null,
    all         : function() {
                    return this.object.className.split(/\s+/)
                },
    exists      : function(className) {
                    var classes = this.all()
                    for(var i = 0; i < classes.length; i++)
                        if(classes[i] == className) return true
                    return false
                },
    add         : function(className) {
                    var classes = this.all()
                    for(var i = 0; i < classes.length; i++)
                        if(classes[i] == className) return
                    this.object.className = this.object.className + " " + className
                },
    remove      : function(className) {
                    var classes = this.all()
                    var cn = ""
                    for(var i = 0; i < classes.length; i++) {
                        var isMatch = (typeof className.test == "function")
                            ? className.test(classes[i])
                            : (classes[i] == className)
                        if(!isMatch) cn = cn + " " + classes[i]
                    }
                    this.object.className = cn.substr(1)
                },
    set         : function(className, state) {
                    if(state)
                        this.add(className)
                    else
                        this.remove(className)
                },
    flip        : function(className) {
                    if(this.exists(className))
                        this.remove(className)
                    else
                        this.add(className)
                }
}

function CssClasses(object) { return new CssClassesHandler(object)}
/*******************************************************/
Tube={xcurent:0,tf:-1, tm:0,ltb:3};
var persistentelements=new Array();
function initresizedivs() {
	container = $('holder');
	if (container!=null)
	{
	var _persistentelements = container.select('.element');
	for (var i = 0; i < _persistentelements.length; i++)  {
		if (_persistentelements[i].childNodes[0]) {persistentelements.push(_persistentelements[i].cloneNode(true))}
	}
	formatdivs();
	}
}

function getheight(el) {
	if ($(el)!=null){
    if ($(el).down().hasClassName('rian2')) { return 3; }
	if ($(el).down().hasClassName('triple')) { return 3; }
    if ($(el).down().hasClassName('poll')) { return 2; }
    if ($(el).down().hasClassName('double')) { return 2; }
	}
    return 1;
}

function getwidth(el) {
	if ($(el)!=null){
		if ($(el).down().hasClassName('forum')) { return newelw; }
		if ($(el).down().hasClassName('blog')) { return 2; }
		if ((($(el).down().hasClassName('programm'))&&(!($(el).down().hasClassName('addt'))))||($(el).down().hasClassName('teaserbox'))) { return 2; }
	}
    return 1;
}

/*
 getWithWidth(Array arr,int w)
 
 Returns element from Array arr, which has specified widgth w (measured in thumbs)
 
*/
function getWithWidth(arr,w) {
    if(!w) return null;/*abnormal width*/
    var tmp=new Array;
    var el;
    while (arr.length && getwidth(el=arr.shift())!=w) { tmp.push(el)};/*find element with appropriet length*/
    while (tmp.length) {arr.unshift(tmp.pop())};/*return unused elements back*/
    if(getwidth(el)==w) return el;/*we found what we needed*/
    return getWithWidth(arr,w-1);/*all is bad - no such element found - try smaller w. For forum there will be 2 nested recurcive calls and at last it will return first 2x1 Thumb, cause it will better fill the 4x1 hole */
}

/* places for SEO banners */
var seoPlaces={placementSEOBanner1x1:3,placementSEOBanner2x1:4,placementSEOBanner1x3:2};


/*
 Checks if banner is SEO.
 If yes, returns its place (starting from 1)
*/
function isSEO(elc){
					for (prop in seoPlaces){
						if (elc.hasClassName(prop)){ /* SEO banner */
							return seoPlaces[prop];
						}
					}
					return false;
}


function formatdivs() {
    Tube.xcurent?0:retube();/*call retube on first entry*/
    newelw=Tube.xcurent;/*here will be 5 (for standart monitor)*/
    if (elw==newelw) return;/*here elw==0 and will not return*/
    elw=newelw;/*elw == row length in Thumbs*/
	if (container == null){
		return;
	}
    container.innerHTML='';/*init place where all thumbs will be put*/
    var elements=new Array;
    var leftels=new Array;
    var rightels=new Array;
	var forums=new Array;
    for (var i=0; i<persistentelements.length; i++) {
		var el=persistentelements[i];
		var elc=el.down();/*.down() - getting Child Element which has all information classes*/
		/*distributing elements to either leftels,rightels,elements or forums*/
		if (elc.hasClassName('toleft')) leftels.push(el);
		else if (elc.hasClassName('toright')) rightels.push(el);
		else if (elc.hasClassName('forum')) forums.push(el);
		else elements.push(el);
    };
    var p=new Array;/*array of 1/0 to display taken/free places in current row*/
    var tbl=document.createElement('table');
    var tb=document.createElement('tbody');
    tbl.appendChild(tb);
    container.appendChild(tbl);
    var tr=document.createElement('tr');
    tb.appendChild(tr);/*create first row*/
    for (var i=0; i<elw; i++) { /*go thru row*/
		p[i]=0;
		var td=document.createElement('td');
		td.width=mw;
		td.valign='top';
		tr.appendChild(td);
    }
	var line_number=0;/*row counter*/
    while(elements.length) { /*go thru elements which are not RSS or Polls*/
		/*added for spare thumbs*/
		var cur_el=elements[0];
		if (cur_el){
			if ($(cur_el).down().style.display=='none'){
				break;
			}
		}
		/***********/
		tr=document.createElement('tr'); /*create second row*/
		line_number++;/*first row with thumbs - is number #1*/
		tb.appendChild(tr);
		if (!p[0] && leftels.length) { /*if first place is not taken (and can not imagine how it can be) ...*/
			elements.unshift(leftels.shift());/* ... add RSS to the start of Array elements */
		}else{
			if ((line_number>1) && (forums.length>0)) { /*if line is not first and we have forums, places forum thumbs*/
			/*check if row is free*/
				var row_is_free=true;
				for(i=0;i<newelw;i++){
					if (p[i]){
						row_is_free=false;
					}
				}
				if (row_is_free){
					elements.unshift(forums.shift());
				}
			}
		}
		var c=-1;/*init counter*/
		while (c<=elw && elements.length) { /*go thru row or till the end of elements*/
			c++;/* will start from 0*/
			if(p[c]>0) { /*if place is taken....*/
				p[c]--; /* ... make it free */
			} else {    /*else fill the row*/
				/*on first iteration if there is a forum on page we will get c==1*/
				var avail=0;/*number of free places in current row for current iteration*/
				var string=new Array;/*current row (will contain HTML Elements)*/
				var totalwidth=0;/*width of taken places*/
				while (p[c+avail]==0 && c+avail<elw) { avail++; } /*count places to the first taken or to the end of row (what ever first)*/
				while (totalwidth<avail && elements.length) { /*push elements to row until we get a full row or an element wich will overflow the row (this element will stay in Array string !)*/
					var el=elements.shift();
					var elc=el.down();
					var banner_place;
					if (banner_place=isSEO(elc)-1 ){
						if (totalwidth<banner_place) { /* too early - must wait */
								var seo_banner=el;
								if (elements.length>0){ /* check that we have elements */
									el=elements.shift();
									var banner_place2;
									if (banner_place2=isSEO(el.down())-1){/* if we have 2 or more SEO banners */
										var seo_banner2=el;
										/* add here 3-rd and 4-th closure if will make 1x3 and 2x2 banners */
										if (elements.length>0){
											el=elements.shift();
										}
										elements.unshift(seo_banner2);
									}
									elements.unshift(seo_banner);
								}
							}
					}
					totalwidth+=getwidth(el);/*For forum total length of row will be returned*/
					string.push(el);
				}
				if (totalwidth>avail) { /* we got overflow*/
					var el=string.pop();/*el - element that overflowed the row (if forum is on page - it's forum)*/
					totalwidth-=getwidth(el);
					elements.unshift(el);/*put this element to the start of Array elements (not processed yet)*/
					if (totalwidth<avail) { /*we removed element and got a row, which is not full (that's the case for forum)*/
						if(el=getWithWidth(elements, avail-totalwidth)) { /*we must get element of specified width (for forum and standart monitor it will be called with w==4)*/
							/*got such an element...*/
						} else {
							el=getWithWidth(elements, 1);/*... else get some simple 1x1 doc*/
						}
						string.push(el);/*put element to row*/
						totalwidth+=getwidth(el);
					}
				}
				/* if we have Poll (from Array rightels) we must put it to Array string*/
				if(c+avail==elw && !p[elw] && rightels.length && string.length)  {
					var e=string.pop();
					if (!(isSEO(e.down()))){ /* if element is not SEO banner - follow common logic */
						var w=getwidth(e);
						elements.unshift(e);
						e=getWithWidth(rightels,w);
						if(e) string.push(e);
							else totalwidth-=w;
					}else{ /* else just push it back to string */
						string.push(e);
					}
				}
				/* iterating var string, containing ready row for table */
				while(string.length) {
					var el=string[0];
					string.shift();					
					var cw=getwidth(el); var ch=getheight(el); 
					var td=document.createElement('td');
					tr.appendChild(td); 
					td.colSpan=cw; 
					td.rowSpan=ch;
					td.valign="top";
					td.style.height='50px';
					p[c]=ch-1;
					/*here is actual output. Any changes to elements must be done here*/
					if (el!=null){
					el.down().style.display='block';
					td.innerHTML=el.innerHTML;
					td.id=el.id;
					}
					c+=cw;
					if (ch>1&&ch>Tube.tf) {Tube.tf=ch} 
				}
				if(avail>0) c--;
				
				
			}
		}
		if (Tube.tf>0) Tube.tf--;
    }

for (var i=0;i<Tube.tf;i++) {
		var tr=document.createElement('tr');
		tb.appendChild(tr);
		var td=document.createElement('td');
		tr.appendChild(td);
		td.innerHTML="&nbsp;";
	}
}

function retube() {
	var $=getClientWidth();
	var $=$>990?Math.floor(($-295)/185):3;
	if ($!=Tube.xcurent) {Tube.xcurent=$;formatdivs()}/*set Tube.xcurent to length of one row measured in thumbs and call formatdivs again*/
	fixIE();
}

function movedivs(id,$,regen) {
	var obj=document.getElementById(id).childNodes[1];
	CssClasses(obj).remove('toleft');
	CssClasses(obj).remove('toright');
	CssClasses(obj).add($);
	regen?formatdivs():0;
}

function getClientWidth()
{  return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientWidth:document.body.clientWidth}


/*
 Show and Hide content between h3 in Russia Now
*/
function toggleContent(itemcur)
{
	var cur = $(itemcur).next(0);					
	while ((cur)&&(!(cur.match('h3')))&&(!(cur.match('h2')))&&(!(cur.match('div.navff')))&&(!(cur.match('div.russianow')))&&(!cur.match('div#horbooks'))&&(!(cur.match('div.livecams')))&&(!(cur.match('div.aboutus')))&&(!(cur.match('div.nofold'))))
	{
		cur.toggle();
		cur = cur.next(0);
	}	 
}

/* 
 Set Show and Hide rules for Russia Now
*/
function setShowHide(divs)
{
	var maintag = $$('h1')[0];	
	var htopics = $$(divs);
	if (htopics.length>0)
	{
		var topics = htopics[0].getElementsBySelector('h3');
		if (topics.length>0)
		{
			for (var i=0;i<topics.length;i++)
			{
				if (((i>0)&&(!($(topics[i]).hasClassName('nohid'))))||(maintag.innerHTML == "Russian literature")){
					if (!((i==1)&&(topics[i].innerHTML=="Cooking")))
					{
						toggleContent(topics[i]); 
					}					
				}								
				topics[i].onclick = function(){
					toggleContent(this); 
				}
				topics[i].onmouseover = function() {
					$(this).addClassName('on');
				}	
				topics[i].onmouseout = function() {
					$(this).removeClassName('on');
				}
				topics[i].style.cursor = "pointer";
			}
		}
	}	
}
/*
 Show and hide rules initialiser
*/
function setShowHideRules()
{
	setShowHide('div.russianow');
	setShowHide('div.livecams');
	setShowHide('div.Extras');
	setShowHide('div.GoOutMain');
	setShowHide('div.foldh3');
}

/*
 Width and Height fixer
*/
function fixLoRes()
{
	var xy = document.viewport.getDimensions();	
	if (xy.width<1200)
	{
		var curtable = $('feedback_form');		
		if (curtable)
		{
			curtable.style.width = "630px";
		}				
	}
	var advs = $$('div.banner468x60');
	if (advs.length>0)
	{
		for (var i=0;i<advs.length;i++)
		{
			if (xy.width<1200)
			{
				advs[i].style.marginLeft = "-332px";				
			}				
			else
			{
				advs[i].style.marginLeft = "0";
			}
		}
	}
}

function getdCookie(name) {
      var prefix = name + "=";
      var cookieStartIndex = document.cookie.indexOf(prefix);
      if (cookieStartIndex == -1) return null;
      var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
      if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;
      return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
}

function setBannerCookie(id) {
	var dt=new Date();
	dt.setSeconds(dt.getSeconds()+10);
	document.cookie = "banner_id=" + id+ "; path=/; expires=" + dt.toUTCString() + ";";/*Thu, 01-Jan-70 00:00:01 GMT*/
}

function setdCookie(name, value) {
		 document.cookie = name + "=" + escape(value)+ "; path=/;" ;
}


/*
 Show rt-cut
*/
var flagRT  = new Object();
function openFullStory(rtcut)
{
	var rtdiv = $(rtcut).parentNode;
	if (!(rtdiv.hasClassName('rtcutp'))){
		rtdiv = $(rtdiv).parentNode;
	}
	
	if(typeof flagRT.tagName != 'undefined' && document.location.href.indexOf("Top_News/Scientist")!=-1){ 
		flagRT.select('div.rtcut')[0].style.display = 'none';
		flagRT.select('.rtcutp')[0].down("a",0).style.display = "block";	
	}
	flagRT = rtdiv.parentNode;
	if (rtdiv)
	{
		rtcut.style.display = "none";
		rtdiv = rtdiv.parentNode.select('div.rtcut')[0];
		rtdiv.style.display = "block";
		if (doc_id){
			setdCookie('fdoc_id', 0);			/*doc_id*/
			setdCookie('fdoc_opened', 0);		/*1 - запоминает на какой страницы открытый кат / 0 -закрытые каты (откл) */
		}
	}
	fixBookmarks();
	getRelatedStory();
	return false;
}



/*
 Show all stories by clicking on h1
*/
function openFullStories(topic)
{	
	var divs = $$('div.rtcut');	
	if (divs.length>0)
		{	
		for (var i=0;i<divs.length;i++)
		{
			divs[i].style.display = "block";		
		}
		divs = $$('p.rtcutp');
		for (i=0;i<divs.length;i++)
		{
			divs[i].style.display = "none";
		}
		topic.style.cursor = "auto";
	}
	fixBookmarks();
}
/*
 h1&h2 initialiser
*/
function h1init()
{
	var items = $$('div.rtcut');
	if (items.length>0)
	{
		var topics = $$('h1');		
		if (topics.length>0)
		{
			for (var i=0;i<topics.length;i++)
			{
				topics[i].style.cursor = "pointer";
			}
		}
		topics = $$('h2');		
		if (topics.length>0)
		{
			for (var i=0;i<topics.length;i++)
			{
				if (topics[i].hasClassName('nohand')) {continue};
				topics[i].style.cursor = "pointer";
			}
		}
	}
}

/*
 Bookmarks manager
*/


function resetFixBookmarks()
{
	book_marks_changed=false;
}

function fixBookmarks()
{
	if (book_marks_changed){
		return;
	}
	if ($('mainholder'))
	{		
		var mainheight = $('mainholder').getDimensions();
		if ($('bookmarks_holder')) 
		{
			if ((mainheight.height > 600))	
			{
				$('bookmarks_holder').style.width = "140px";
				
			} 
			else 
			{ 
				$('bookmarks_holder').style.width = "260px";
			}
			book_marks_changed=true;
			setTimeout("resetFixBookmarks()",1000);
		}
	}
}

/*
 CloseIt for single items
*/
function closeIt(cur)
{
	var maindiv = $(cur).parentNode;
	maindiv = $(maindiv).parentNode;	
	$(maindiv).remove();	
	initresizedivs();
}


var ruscontainer;
var ruselements=new Array();
var isruscon=0;
function grouplist_init() {
	var c,par=document.getElementById('rusnowmenu');
	if (par){
		var divs=$$('div.rnitem');		
		for (var i in divs) {if (c=divs[i].innerHTML) {ruselements.push (c)}}
		if (ruselements.length>2) {isruscon=1;grouplist_retube();grouplist_show(); }
		
	}
}

function grouplist_retube() {
	if (isruscon) {
		var cols=Math.floor((getClientWidth()-200)/250); 
		if (cols!=Tube.ltb) {Tube.ltb=cols;grouplist_show()}
	}
}

function grouplist_show() {
	if (ruscontainer=$('rusnowmenu')) {
		ruscontainer=$('rusnowmenu').firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild;
		var tx='';
		for (var i in ruscontainer) {tx+=i+"\n"}
		ruscontainer.innerHTML='<div class="clr"><!-- --></div>';
		var p=new Array;
		var tbl=document.createElement('table');
		tbl.style.width='100%';
		var tb=document.createElement('tbody');
		
		tbl.appendChild(tb);
		ruscontainer.appendChild(tbl);
		
		var tr=document.createElement('tr');
		tb.appendChild(tr);
			
		var cols=Tube.ltb;
		var rows=Math.floor(ruselements.length/cols)+((Math.floor(ruselements.length/cols)!=ruselements.length/cols)?1:0);
		var i,j;
		for (var i=0; i<cols; i++) {
			p[i]=0;
			var td=document.createElement('td');
			td.valign='top';
			td.style.width=Math.floor(100/cols)+'%';
			for (j=0; j<rows&&ruselements[i*rows+j];j++) { 
				td.innerHTML+=ruselements[i*rows+j]+"<br>";
			}
			tr.appendChild(td);
		}
		ruscontainer.innerHTML+='<br>';
	}
}

/*
 Height fixer
*/
function fixFooter()
{
	var maint = $('maint');
	if (maint){
		var delta = document.viewport.getHeight() - 93 - $('footer').viewportOffset()[1];		
		if (delta > 0) {
			$('maint').style.marginBottom = delta + 'px';
			/* $('maint').style.height = $('maint').style.height + delta + 'px'; */
		}	
	} else {
		if ($('footer') == null){
			return;
		}
		$('footer').style.marginTop = '0';
		var delta = document.viewport.getHeight() - 93 - $('footer').viewportOffset()[1];		
		if (delta > 0) {
			$('footer').style.marginTop = delta + 'px';
		}
	}

}

/*
 Opens hidden content when loading is finished
*/
function fixLongContent()
{
	if ($('mainholder'))
	{
		var all_items = $('mainholder').getElementsBySelector('p','div');
		for (var i=0;i<all_items.length;i++)
		{
			if ($(all_items[i]).hasClassName('disall'))
			{
				$(all_items[i]).removeClassName('disall');
			}
		}
	}
}

/*
 * Get related stories by ajax request and insert result into #also
 */

 var RelatedBusy=0;	/* состояние: 0-ниче не происходит, 1-загружается список, 2-уже загружается список, но надо будет еще потом догрузить более новый */
 var foolish=false;
function getRelatedStory() {
	if (RelatedBusy) {RelatedBusy=2; return false} else {RelatedBusy=1}
	
	if ((!$('also') || !doc_id || !$('pic_n_related') || !$('forbig'))&&(!foolish)){RelatedBusy=0;return;}/* 	var doc_id = must be set in html */
 if (!foolish) {
	var l_h = $('pic_n_related').offsetHeight;
	var r_h = $('forbig').offsetHeight;
	var num = Math.floor ((r_h - l_h - 60)/113); /* 108 height of related story div.blog 150px <H3> height */
} else {
num = 1; 
}
	if (num < 0 ){
		while ($('also').childNodes.length && num < 0){
			$('also').removeChild($('also').lastChild);/* <div> */
			$('also').removeChild($('also').lastChild);/* <br> */
			num++;
		}
		if ($('also').childNodes.length == 1){ /* H3 */
			$('also').removeChild($('also').lastChild);
		}
		RelatedBusy=0;
		return;
	}

	if (num == 0){
		RelatedBusy=0;
		return;
	}
	var offset = 0;
	var also = $('also');
	for (var ii = 0; ii < also.childNodes.length; ii++){
/*		if (also.childNodes[ii].hasClassName('blog')){ */
			offset++; //тут 1-h3 много div br
/*		} */
	}
	
	if (offset){
		offset--;
		offset = offset/2;
	}
	
	var pars = new Array();
	var url = '/A/GetRelatedStory/';
	pars.push('doc_id=' + doc_id);
	pars.push('num=' + num);
	pars.push('offset=' + Math.floor(offset));
	new Ajax.Request(url, {
		method:       'post', 
		parameters:   pars.join('&'),
		asynchronous: true,
		onSuccess: function(response){
			res = response.responseText;
			
			if (!$('also').childNodes.length && res){ 
				$('also').innerHTML = $('also').innerHTML + '<h3>More on the story</h3>';
			}
			$('also').innerHTML = $('also').innerHTML + res;
			RelatedBusy--; RelatedBusy=RelatedBusy<0?0:RelatedBusy;
			if (RelatedBusy) {getRelatedStory()}
			return false;
		}
	});
	return;
}


var sidebar_unfolded=new Object();
var sidebar_block_folding=new Object();

/*
 Custom handlers to work properly in IE (without them sidebar shakes)
*/
	
function sidebarMouseOver(id)
{
	$('inner'+id).style.display='block';
	if (eval('sidebar_block_folding.unfolded'+String(id))==undefined){
		eval('sidebar_block_folding.unfolded'+String(id)+'=0');
	}
	eval('sidebar_unfolded.unfolded'+String(id)+'=1');
}

function sidebarMouseOut(id)
{
	setTimeout('sidebarHideInner('+id+')',100);
	eval('sidebar_unfolded.unfolded'+String(id)+'=0');
}

function sidebarHideInner(id)
{
	if ((eval('sidebar_unfolded.unfolded'+String(id))==0) && (eval('sidebar_block_folding.unfolded'+String(id))==0)) {
		$('inner'+id).style.display='none';
	}	
}

function BlockFolding(id)
{
	global_drag_block=true;
	eval('sidebar_block_folding.unfolded'+String(id)+'=1');
}

  function GetPos(elem){
   var offTrial=document.getElementById(elem);
   var offL=0;
   var offT=0;
   while(offTrial){
    offL+=offTrial.offsetLeft;
    offT+=offTrial.offsetTop;
    offTrial=offTrial.offsetParent;
   }
   if (navigator.userAgent.indexOf("Mac")!=-1 && typeof document.body.leftMargin!="undefined") {
    offL+=document.body.leftMargin;
    offT+=document.body.topMargin;
   }
   return {x:offL , y:offT}
  }

  function GetPosObj(obj){
   var offL=0;
   var offT=0;
   while(obj){
    offL+=obj.offsetLeft;
    offT+=obj.offsetTop;
    obj=obj.offsetParent;
   }
   if (navigator.userAgent.indexOf("Mac")!=-1 && typeof document.body.leftMargin!="undefined") {
    offL+=document.body.leftMargin;
    offT+=document.body.topMargin;
   }
   return {x:offL , y:offT}
  }

  function scrollIt(obj){
   elto = obj.getAttribute('href');
   elto = elto.substr(elto.indexOf('#')+1)
   elposfrom = GetPosObj(obj);
   elposto = GetPos(elto);
   yfrom = elposfrom.y;
   yto = elposto.y;

   if (yfrom >= yto){
    for (i = yfrom; i >= yto; i = (i / 2)-1){
     self.scroll(0,i);
    }

    for (j = i * 2; j >= yto; j--){
     self.scroll(0,j);
    }
   } else {
    ystep = (yto - yfrom) / 2;
    for (i = yfrom; i <= yto-1; i = i + ystep){
     self.scroll(0,i);
     if (ystep > 100) {ystep = (ystep / 2) + 1;} else {ystep = 50;}
    }
    for (j = i; j <= yto-1; j++){
     self.scroll(0,j);
    }
   }
  }
  
var block_comment_submit=false;

/*
 Checks, if maximum comment length is exeeded
								*/

  function checkMaxComment(curr){
	if ($F(curr).length > 2000){
		if (!$(curr).hasClassName('overdoze')){
			$(curr).addClassName('overdoze');
			Effect.toggle('too_long_summary', 'appear');
			block_comment_submit=true;
			/*$('saveButton').disabled=true;*/
		}
	}else if ($(curr).hasClassName('overdoze')){
		$(curr).removeClassName('overdoze');
		Effect.toggle('too_long_summary', 'blind');
		block_comment_submit=false;
		/*$('saveButton').disabled=false;*/
	}
}

/*
 Submit's form with comment
					   */

function submit_comment(form_object)
{
	if (block_comment_submit){
		alert('The comment is limited to 2000 characters maximum!');
		return false;
	}
	form_object.submit();
	return false;
}


