

function setGlobalOnLoad(f) 
{
	var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null
	if (root)
	{
		if(root.addEventListener) root.addEventListener("load", f, false)
		else if(root.attachEvent) root.attachEvent("onload", f)
	} 
	else 
	{
		if(typeof window.onload == 'function') 
		{
			var existing = window.onload
			window.onload = function() 
			{
				existing()
				f()
			}
		} 
		else 
		{
			window.onload = f
		}
	}
}

function getBounds(element)
{
	var left = element.offsetLeft;
	var top = element.offsetTop;
	
	for (var parent = element.offsetParent; parent; parent = parent.offsetParent)
	{
		left += parent.offsetLeft - parent.scrollLeft;
		top += parent.offsetTop - parent.scrollTop;
	}
	
	return {left: left, top: top, width: element.offsetWidth, height: element.offsetHeight};
}

function getPageSizeWithScroll()
{
	if (window.innerHeight && window.scrollMaxY) {// Firefox
		yWithScroll = window.innerHeight + window.scrollMaxY;
		xWithScroll = window.innerWidth + window.scrollMaxX;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		yWithScroll = document.body.scrollHeight;
		xWithScroll = document.body.scrollWidth;
	} else { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
		yWithScroll = document.body.offsetHeight;
		xWithScroll = document.body.offsetWidth;
  	}
	arrayPageSizeWithScroll = new Array(xWithScroll,yWithScroll);
	//alert( 'The height is ' + yWithScroll + ' and the width is ' + xWithScroll );
	return arrayPageSizeWithScroll;
}



/* Browser detection code by Kruglov */
isDOM=document.getElementById //DOM1 browser (MSIE 5+, Netscape 6, Opera 5+)
isOpera=isOpera5=window.opera && isDOM //Opera 5+
isOpera6=isOpera && window.print //Opera 6+
isOpera7=isOpera && document.readyState //Opera 7+
isMSIE=document.all && document.all.item && !isOpera //Microsoft Internet Explorer 4+
isMSIE5=isDOM && isMSIE //MSIE 5+
isNetscape4=document.layers //Netscape 4.*
isMozilla=isDOM && navigator.appName=="Netscape" //Mozilla или Netscape 6.*
/* End code */


var timer;
var scrollSpeed = 3;
var scrollWheelSpeed = 20;
var scrollStep = 50;
var contentHeight = 380;
/*var contentHeight = 453;*/
var scrollPos = 0;
var scrollTop = '';
var div = null;
var divHeight = 0;
//var scroll_line = null;
var scroll_pos = null;
var perc = 0, pos = 0;
var scrollPosMax = 375;
var startScrollPos = 0;

/*
if(isOpera || isOpera6 || isOpera7)
{
	scrollTop = 'pixelTop';
}
else
*/
{
	scrollTop = 'top';
}


function scrollUp()
{		
	//var div = document.getElementById('right_text');
	//var test = document.getElementById('test');
	//alert(div.scrollTop);
	
	//var divHeight = div.clientHeight - contentHeight;
	
	scrollPos -= scrollWheelSpeed;
	if(scrollPos < 0)
	{
		scrollPos = 0;
	}
	
	/*
	if( (div.scrollTop - scrollSpeed) > 0)
	{
		div.scrollTop -= scrollSpeed;
	}
	else
	{
		div.scrollTop = 0;
	}
	*/
	
	//div.scrollTop = scrollPos;
	//eval("document.getElementById('right_text').style." + scrollTop + "=-scrollPos");
	//div.style.top = -scrollPos;
	//eval("document.getElementById('right_text').style." + scrollTop + "=-scrollPos + 'px';");
	div.style.top = (-scrollPos) + 'px';
	
	perc = (scrollPos / divHeight) * 100;
	perc = Math.round(perc);
	//test.innerHTML = perc + '%';
	
	var scroll_line = document.getElementById('scroll_line');
	//var scroll_pos = document.getElementById('scroll_pos');
	
	//pos = Math.round( (scroll_line.offsetHeight / 100) * perc );
	pos = Math.round( ( (scroll_line.offsetHeight-5) / 100) * perc );
	scroll_pos.style.top = pos + 'px';
}

function scrollDown()
{
	
	//var div = document.getElementById('right_text');
	//var test = document.getElementById('test');
		
	//var divHeight = div.offsetHeight - contentHeight;
				
	scrollPos += scrollWheelSpeed;
	if(scrollPos > divHeight)
	{
		scrollPos = divHeight;
	}
	
	//div.scrollTop += scrollSpeed;
	div.style.top = (-scrollPos) + 'px';
	//div.style.MozOpacity = 1;
	//eval("document.getElementById('right_text').style." + scrollTop + "=-scrollPos + 'px';");
	//alert(scrollPos);
	//alert(div.offsetTop);
	//alert(div.style.top);
	//div.style.top = -scrollPos;
	//alert(div.style.top);
	//div.scrollTop = scrollPos;
	
	perc = (scrollPos / divHeight) * 100;
	perc = Math.round(perc);
	//test.innerHTML = perc + '%';
	
	
	var scroll_line = document.getElementById('scroll_line');
	//var scroll_pos = document.getElementById('scroll_pos');
	
	//var 
	pos = Math.round( ( (scroll_line.offsetHeight-5) / 100) * perc );
	//alert(pos);
	//pos = Math.round( 5 * perc );
	////scroll_pos.style.top = pos;
	scroll_pos.style.top = pos + 'px';
	////scroll_pos.style.marginTop = pos + 'px';
	//scroll_pos.style.top = '20px';
		
	
	//alert(scroll_line.offsetHeight);
}

function scrollStart(dir)
{
	if(dir == 'up')
	{
		timer=setInterval('scrollUp()', scrollStep);
	}
	else
	{
		timer=setInterval('scrollDown()', scrollStep);
	}
}

function scrollClear()
{
	clearInterval(timer);
}



function onLoadPage()
{
	
	div = document.getElementById('right_text');
	
	divHeight = div.clientHeight - contentHeight;
	//alert(divHeight);
	
	
	//scroll_line = document.getElementById('scroll_line');
	scroll_pos = document.getElementById('scroll_pos');
			
	if(scroll_pos) {	
	
	//alert(scroll_pos.offsetTop);
	var bounds = getBounds(scroll_pos);
	//alert(bounds.top);
	startScrollPos = bounds.top;
	
	scroll_pos.onmousedown = function(e)
	{
		e = fixEvent(e);
		
	    // запомнить переносимый объект 
	    // в переменной dragObject
	    dragObject  = this;
		
		//alert(dragObject.nodeName);
		//dragObject.style.borderTop = '2px black solid';
		
		// получить сдвиг элемента относительно курсора мыши
		mouseOffset = getMouseOffset(this, e);
		
		bounds = getBounds(dragObject);
		
		// эти обработчики отслеживают процесс и окончание переноса
		document.onmousemove = mouseMove;
		document.onmouseup = mouseUp;
		
		// отменить перенос и выделение текста при клике на тексте
        document.ondragstart = function() { return false }
        document.body.onselectstart = function() { return false }
	 
	    // остановить обработку события
	    return false;
	}
	
	}
	
	
	var extra = document.getElementById('extra');
	var main = document.getElementById('main');
	if(extra && main) {
	extra.style.left = main.offsetLeft + 'px';
	extra.style.top = (main.offsetTop - 14) + 'px';
	extra.style.visibility = 'visible';
	}
		
	
	/*
	scroll_img.onmouseup = function() 
	{
		dragObject.style.border = '';
		
		// опустить переносимый объект
		dragObject = null
	}
	*/

}



function fixEvent(e) 
{
    // получить объект событие для IE
    e = e || window.event
 
    // добавить pageX/pageY для IE
    if ( e.pageX == null && e.clientX != null ) {
        var html = document.documentElement
        var body = document.body
        e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0)
        e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0)
    }
 
    // добавить which для IE
    if (!e.which && e.button) {
        e.which = e.button & 1 ? 1 : ( e.button & 2 ? 3 : ( e.button & 4 ? 2 : 0 ) )
    }
 
    return e
}

function mouseMove(e)
{ 	
	//alert(dragObject.nodeName); // IMG :)
	
	if (dragObject) 
	{
		//отобразить перенос объекта
		e = fixEvent(e)
					
		//dragObject.style.left = e.pageX + mouseOffset.x + 'px'
		//alert(dragObject.offsetTop);
		
		//var bounds = getBounds(dragObject);
		
		//var scroll_pos = Math.round(e.pageY + mouseOffset.y - (bounds.top + bounds.height / 2) );
		//var scroll_pos = Math.round(e.pageY + mouseOffset.y - 247 ); // что такое 247?
		var scroll_pos = Math.round(e.pageY + mouseOffset.y - 240 );
		//var scroll_pos = (e.pageY + mouseOffset.y - 240);
		if(scroll_pos < 0) {scroll_pos = 0}
		if(scroll_pos > scrollPosMax) {scroll_pos = scrollPosMax}
					
		dragObject.style.top = scroll_pos + 'px';
		
		
		//perc = (scroll_pos / 5);
		perc = (scroll_pos / scrollPosMax) * 100;
		perc = Math.round(perc);
		
		//scrollPos = ( (divHeight+55) / 100) * perc;
		scrollPos = ( divHeight / 100) * perc;
		
		//var scroll_line = document.getElementById('scroll_line');
		//scrollPos = Math.round( ( (scroll_line.offsetHeight-5) / 100) * perc );
		
		div.style.top = (-scrollPos) + 'px';		
	}
}

function mouseUp(e)
{
	//dragObject.style.border = '';
		
	// опустить переносимый объект
	dragObject = null
	
	// очистить обработчики, т.к перенос закончен
	document.onmousemove = null
	document.onmouseup = null
	document.ondragstart = null
	document.body.onselectstart = null
}

function getPosition(e)
{
    var left = 0
    var top  = 0
 
    while (e.offsetParent)
	{
        left += e.offsetLeft
        top  += e.offsetTop
        e     = e.offsetParent
    }
 
    left += e.offsetLeft
    top  += e.offsetTop
 
    return {x:left, y:top}
}

function getMouseOffset(target, e) 
{
	var docPos = getPosition(target);
    return {x:e.pageX - docPos.x, y:e.pageY - docPos.y}
}

/*
var dragMaster = ( function() 
{
    // private методы и свойства
    var dragObject;
 
    function mouseDown(e) 
	{
		//клик на переносимом элементе: начать перенос
		
    }
 
    function mouseMove(e)
	{
        if (dragObject) 
		{
			//отобразить перенос объекта
			
        }
    }
 
    function mouseUp(e)
	{
        if (dragObject) 
		{
			//конец переноса
			
        }
    }
 
    // public методы и свойства    
    return 
	{
        init: function() 
		{
            // инициализовать контроллер
            document.onmousemove = mouseMove
            document.onmouseup = mouseUp
        },
 
        makeDraggable: function(element)
		{
            // сделать элемент переносимым
            element.onmousedown = mouseDown
        }
    }
 
} () )
*/


setGlobalOnLoad(onLoadPage);


function show_code(code)
{
	//alert(code);
	
	var body = document.body;
	
	var screen_width = 0;
	if(document.documentElement.clientWidth)
	{
		screen_width = document.documentElement.clientWidth;
	}
	else
	{
		screen_width = document.body.offsetWidth - 21;
	}
		
	var screen_height = 0;
	var body_height = 0;
	if(document.documentElement.clientHeight)
	{
		screen_height = document.documentElement.clientHeight + 4;
	}
	else
	{
		var sizes = getPageSizeWithScroll();
		screen_height = body.offsetHeight;
	}
	
	//alert(screen_height);
	
	var sizes = getPageSizeWithScroll();
	body_height = sizes[1];	
	
	var scroll = body.scrollTop ? body.scrollTop : document.documentElement.scrollTop;

	var div = document.createElement('div');
	div.id = 'bglayer';
	div.style.position = 'absolute';
	//div.style.border = '2px black solid';
	div.style.border = 'none';
	div.style.backgroundColor = 'rgb(233,233,233)';
	div.style.top = '0px';
	div.style.left = '0px';
	div.style.width = screen_width + 'px';
	div.style.height = body_height + 'px';
	div.style.opacity = '0.8';
	div.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(opacity=0.8)';
	div.style.zIndex = 999;

	body.appendChild(div);

	
	var layer = document.getElementById('msg');
	if(layer)
	{	
		var width = layer.offsetWidth;
		var height = layer.offsetHeight;
		
		layer.style.top = scroll + 'px';
		
		if(width < screen_width)
		{
			var offset = (screen_width - width) / 2;
			layer.style.left = offset + 'px';
		}
		
		if(height < screen_height)
		{
			var offset = (screen_height - height) / 2;
			layer.style.top = (scroll + offset) + 'px';
		}		
		
		layer.style.visibility = 'visible';
		layer.style.zIndex = '1000';
		
		document.msg.code.value = code;
		
	}
}

function hide_code()
{
	var layer = document.getElementById('msg');
	if(layer)
	{	
		layer.style.visibility = 'hidden';		
	}
	
	var bglayer = document.getElementById('bglayer');
	if(bglayer)
	{
		bglayer.parentNode.removeChild(bglayer);
	}
}



function wheel_handle(delta) 
{
    if (delta < 0)
	{
		scrollUp();
    }
    else
	{
		scrollDown();
	}
}

/** Event handler for mouse wheel event. */
function mouse_wheel(event)
{

	var delta = 0;
	
    if (!event) /* For IE. */
	{
		event = window.event;
	}
	
    if (event.wheelDelta) 
	{ 
		/* IE/Opera. */
        delta = event.wheelDelta/120;
        
        /** In Opera 9, delta differs in sign as compared to IE. */
        //if (window.opera)
			delta = -delta;
       } 
	else if (event.detail) 
	{ 
		/** Mozilla case. */
		/** In Mozilla, sign of delta is different than in IE. Also, delta is multiple of 3. */
		//delta = -event.detail/3;
		//delta = event.detail/3;
		delta = event.detail;
	}
	
	delta = delta * 5; // warp mode ;)
	
	/** If delta is nonzero, handle it.
	* Basically, delta is now positive if wheel was scrolled up,
	* and negative, if wheel was scrolled down.
	*/
	
	if (delta)
	{
		wheel_handle(delta);
	}
	
	/** Prevent default actions caused by mouse wheel.
	* That might be ugly, but we handle scrolls somehow
	* anyway, so don't bother here..
	*/
	if (event.preventDefault)
	{
			event.preventDefault();
	}
	event.returnValue = false;
	
}

/* If you use your own event management code, change it as required. */
if (window.addEventListener)
{
	/** DOMMouseScroll is for mozilla. */
    window.addEventListener('DOMMouseScroll', mouse_wheel, false);
}
/** IE/Opera. */
window.onmousewheel = document.onmousewheel = mouse_wheel;

