
var agt=navigator.userAgent.toLowerCase();
var scrollBrIsDOM = document.getElementById ? true : false;
var scrollBrIsNN4 = document.layers ? true : false;
var scrollBrIsIE4 = document.all ? true : false;
var scrollBrIsSafari =((agt.indexOf('safari')!=-1)&&(agt.indexOf('mac')!=-1))?true:false;


var dragHeight = 26; // Height of scrollbtn
var dragWidth = 26; // Width of scrollbtn
var scrollHeight = 360; // Height of scrollbar
var scrollSpeed = 4; // Scroll speed
var contentFrame, contentWindow, contentHeight, frameHeight, scrollContentPos;
var scrollDragLeft, scrollDragTop, scrollRulerTop;
var scrollMouseY, scrollMouseX, scrollStartY;
var scrollTimer, scrollAdjustTimer;
var scrollButtonDir = 0;
var scrollClickDrag = false; // If click on scrollbar
var scrollClickAbove = false; // If click above scrollbar
var scrollClickBelow = false; // If click below scrollbar
var scrollClickUp = false; // If click above scrollbar
var scrollClickDn = false; // If click below scrollbar
var scrollDnFlashing = false;

var scrollUpImgOvr, scrollDnImgOvr, scrollDragImgOvr;

var name_Continer = "textTdScrollConatiner";
var name_FrameName = 'textFrame';
var name_FrameId = 'textIFrame';
var name_ScrollBtn = "textTdScrollBtn";
var name_ScrollRuler = "textTdScrollRuler";
var name_ScrollImgUpName = 'scr_up';
var name_ScrollImgDnName = 'scr_dn';
var name_ScrollImgDragName = 'scr_drg';
var name_ScrollImgDrag = 'pic/kopejas/skrollis/thumbs.jpg';
var name_ScrollImgDragOvr = 'pic/kopejas/skrollis/thumbs_act.jpg';
var name_ScrollImgUp = "pic/kopejas/skrollis/uz_augshu.jpg";
var name_ScrollImgUpOvr = "pic/kopejas/skrollis/uz_augshu_act.jpg";
var name_ScrollImgDn = "pic/kopejas/skrollis/uz_leju.jpg";
var name_ScrollImgDnOvr = "pic/kopejas/skrollis/uz_leju_act.jpg";
var name_ScrollImgDnFlash = "pic/kopejas/skrollis/uz_leju.jpg";

function initScrollbar() {
	//alert('aaaaaaaaaaaaaaaaaaa_ir');
	placeScrollbar();
	contentWindow = frames[name_FrameName].window;
	contentFrame = document.getElementById(name_FrameId);
	scrollHeight = parseInt(document.getElementById(name_Continer).offsetHeight/*style.height*/);
	contentHeight = (contentWindow.document.body.scrollHeight > contentWindow.document.body.offsetHeight) ? 
					contentWindow.document.body.scrollHeight : contentWindow.document.body.offsetHeight;
	frameHeight = contentFrame.offsetHeight;
	//alert(contentHeight + ' = ' + frameHeight);
	//scrollDragLeft = parseInt(document.getElementById(name_ScrollBtn).style.left);
	scrollDragTop = parseInt(document.getElementById(name_ScrollBtn).style.top);
	scrollRulerTop = parseInt(document.getElementById(name_ScrollRuler).style.top);
	scrollContentPos = 0;
	
	scrollCoeff = frameHeight > 0 ? ((scrollHeight-dragHeight)/(contentHeight-frameHeight)) : 0;
	//alert(scrollCoeff + ' = ' + scrollHeight + ',' + dragHeight + ',' + contentHeight + ',' + frameHeight);
	
	if(scrollCoeff <= 0 || scrollCoeff == 'Infinity') {
		document.getElementById(name_ScrollBtn).style.visibility = "hidden";
		document.getElementById(name_ScrollRuler).style.visibility = "hidden";
	}
	else
	{
		document.getElementById(name_ScrollBtn).style.visibility = "visible";
		document.getElementById(name_ScrollRuler).style.visibility = "visible";
	}
	
	if(contentHeight > frameHeight) {
		document.images[name_ScrollImgDnName].src = name_ScrollImgDnFlash;	
		scrollDnFlashing = true;
	}
	
	document.onmousedown = scrollBtnPress;
	document.onmousemove = scrollBtnMove;
	document.onmouseup = scrollBtnRelease;
	
	if(scrollAdjustTimer) clearTimeout(scrollAdjustTimer);
	scrollAdjustTimer = setTimeout("scrollAdjustScrollbar()", 1000);
	
	scrollUpImgOvr = new Image;
	scrollUpImgOvr.src = name_ScrollImgUpOvr;
	scrollDnImgOvr = new Image;
	scrollDnImgOvr.src = name_ScrollImgDnOvr;
	scrollDragImgOvr = new Image;
	scrollDragImgOvr.src = name_ScrollImgDragOvr;
}

function deInitScrollbar() {
	dePlaceScrollBar();
	clearTimeout(scrollAdjustTimer);
}

// places the drag accorging to the page scroll value
function scrollAdjustScrollbar() {
	scrollGetContentPos();
	scrollDragTop = scrollRulerTop + scrollContentPos * scrollCoeff;
	scrollMoveTo(true);
	
	scrollAdjustTimer = setTimeout("scrollAdjustScrollbar()", 1000);
}


// places the scrollbar on the page
function placeScrollbar() {
	var sC = document.getElementById(name_Continer);
	sCCoords = scrollGetOffsetCoords(sC);
	//var scrollPane = document.getElementById("scrollPane");
	var scrollButton = document.getElementById(name_ScrollBtn);
	var scrollRuler = document.getElementById(name_ScrollRuler);
	/*scrollPane.style.left = */
	//scrollButton.style.left = (sCCoords.left) + "px";
	scrollRuler.style.left = (sCCoords.left) + "px";
	/*scrollPane.style.top = */
	scrollButton.style.top = (sCCoords.top) + "px";
	scrollRuler.style.top = (sCCoords.top) + "px";
	/*scrollPane.style.visibility = */
	scrollButton.style.visibility = scrollBrIsSafari ? "hidden" : "visible";
	scrollRuler.style.visibility = scrollBrIsSafari ? "hidden" : "visible";
}

function dePlaceScrollBar() {
	document.getElementById(name_ScrollBtn).style.visibility = "hidden";
	document.getElementById(name_ScrollRuler).style.visibility = "hidden";
}


function scrollGetMouse(e) {
	if(scrollBrIsIE4) {
		scrollMouseY = event.clientY + document.body.scrollTop;
		scrollMouseX = event.clientX + document.body.scrollLeft;
	} else if(scrollBrIsNN4 || scrollBrIsDOM) {
		scrollMouseY = e.pageY;
		scrollMouseX = e.pageX;
	}
}

// Reads content layer top
function scrollGetContentPos(){
	if (contentWindow.pageYOffset)  // all except Explorer
		scrollContentPos = contentWindow.pageYOffset;
	else if (contentWindow.document.documentElement && contentWindow.document.documentElement.scrollTop)
		scrollContentPos = contentWindow.document.documentElement.scrollTop;
	else if (contentWindow.document.body) // all other Explorers
		scrollContentPos = contentWindow.document.body.scrollTop;
}

// does the scrolling
function scrollMoveTo(doSkipContentScroll){
	if(!doSkipContentScroll)
		contentWindow.scrollTo(0, scrollContentPos);
		
	if(scrollBrIsDOM) {
		document.getElementById(name_ScrollBtn).style.top = scrollDragTop + "px";
		document.getElementById(name_ScrollRuler).style.top = scrollDragTop + "px";
	} else if(scrollBrIsIE4) {
		document.all.scrollRuler.style.top = dragT;
		document.all.scrollButton.style.top = dragT;
	} else if(scrollBrIsNN4) {
		document.scrollRuler.top = dragT;
		document.scrollButton.top = dragT;
	}
	
	if(window.scrollOnScrollEvent)
		scrollOnScrollEvent();
}

// Scrolls up
function scrollUp(){
	scrollGetContentPos();
	if(scrollClickAbove || scrollClickUp) {
		if(scrollClickAbove && (scrollDragTop <= (scrollMouseY - dragHeight / 2)) || scrollClickUp && (scrollDragTop <= scrollRulerTop))
			return scrollBtnRelease();
		if(scrollContentPos > 0) {
			scrollDragTop = scrollDragTop - (scrollSpeed * scrollCoeff);
			if(scrollDragTop < scrollRulerTop) scrollDragTop = scrollRulerTop;
				
			scrollContentPos = scrollContentPos - scrollSpeed;
			if(scrollContentPos < 0)
				scrollContentPos = 0;
			
			scrollMoveTo();
			scrollTimer = setTimeout("scrollUp()", 25);
		}
	}
	return false;
}

// Scrolls down
function scrollDown() {
	scrollGetContentPos();
	if(scrollClickBelow || scrollClickDn) {
		if(scrollClickBelow && (scrollDragTop >= (scrollMouseY - dragHeight / 2)) || scrollClickDn && (scrollDragTop >= (scrollRulerTop + scrollHeight - dragHeight)))
			return scrollBtnRelease();
		
		if(scrollContentPos < contentHeight - frameHeight){			
			scrollDragTop = scrollDragTop + (scrollSpeed * scrollCoeff);
			if(scrollDragTop > (scrollRulerTop + scrollHeight - dragHeight))
				scrollDragTop = (scrollRulerTop + scrollHeight - dragHeight);
			
			scrollContentPos = scrollContentPos + scrollSpeed;
			if(scrollContentPos > contentHeight - frameHeight)
				scrollContentPos = contentHeight - frameHeight;
			
			if(scrollDnFlashing) {
				document.images[name_ScrollImgDnName].src = name_ScrollImgDn;	
			}
			
			scrollMoveTo();
			scrollTimer = setTimeout("scrollDown()", 25);
		}
	}
	return false;
}


function scrollBtnSet(btn) {
	if(btn != 0) {
		if(btn == 2) {
			//alert(name_ScrollImgDragName + ", " + scrollDragImgOvr.src);
			document.images[name_ScrollImgDragName].src = scrollDragImgOvr.src;	
		} else if(btn > 0) {
			if(scrollContentPos < contentHeight - frameHeight) document.images[name_ScrollImgDnName].src = scrollDnImgOvr.src;	
			scrollDnFlashing = false;
		} else {
			if(scrollContentPos > 0) document.images[name_ScrollImgUpName].src = scrollUpImgOvr.src;	
		}
	} else {
		document.images[scrollButtonDir > 0 ? name_ScrollImgDnName : name_ScrollImgUpName].src = scrollButtonDir > 0 ? name_ScrollImgDn : name_ScrollImgUp;	
		document.images[name_ScrollImgDragName].src = name_ScrollImgDrag;
	}
	if(btn != 2) scrollButtonDir = btn;
}

function scrollBtnPress(e) {
	if((document.layers && e.which!=1) || (document.all && event.button!=1)) return true; // Enables the right mousebutton
	
	//alert(scrollMouseX + ',' + scrollMouseY + "; " + scrollDragLeft + "," + scrollDragTop + "; " + dragWidth + "," + dragHeight);
	//alert(scrollMouseX + ' >= ' + scrollDragLeft + "\n" + scrollMouseY + ' >= ' + scrollDragTop);
	
	// if click on up or down button
	if(scrollButtonDir != 0) {
		if(scrollButtonDir > 0) {
			scrollClickDn = true;
			return scrollDown();
		} else {
			scrollClickUp = true;
			return scrollUp();
		}
	
	} else {
		scrollGetMouse(e);
		scrollStartY = scrollMouseY - scrollDragTop;
		
		// if click on scroll button
		//vecais scrollMouseX >= scrollDragLeft && (scrollMouseX <= (scrollDragLeft + dragWidth)) && scrollMouseY >= scrollDragTop && (scrollMouseY <= (scrollDragTop + dragHeight))
		if(scrollMouseY >= scrollDragTop && (scrollMouseY <= (scrollDragTop + dragHeight))){
			scrollClickDrag = true;
			return false;
		
		// if click above or below scroll button
		} else if(scrollMouseX >= scrollDragLeft && (scrollMouseX <= (scrollDragLeft + dragWidth)) && scrollMouseY >= scrollRulerTop && (scrollMouseY <= (scrollRulerTop + scrollHeight))){
			if(scrollMouseY < scrollDragTop) { // If click above drag
				scrollClickAbove = true;
				return scrollUp();
			} else { // Else click below drag
				scrollClickBelow = true;
				return scrollDown();
			}
			
		// If no scrolling is to take place
		} else { 
			return true;
		}
	}
}

// Drag function
function scrollBtnMove(e){
	if(scrollClickDrag && contentHeight > frameHeight){
		
		scrollGetMouse(e);
		scrollDragTop = scrollMouseY - scrollStartY;
		
		if(scrollDragTop < scrollRulerTop)
			scrollDragTop = scrollRulerTop;		
		if(scrollDragTop > (scrollRulerTop + scrollHeight - dragHeight))
			scrollDragTop = scrollRulerTop + scrollHeight - dragHeight;
		
		scrollContentPos = (scrollDragTop - scrollRulerTop) / scrollCoeff;

		scrollMoveTo();
		
		// So ie-pc doesn't select gifs
		if(scrollBrIsIE4)
			return false;
	}
}

function scrollBtnRelease(){
	clearTimeout(scrollTimer);
	// Resetting variables
	scrollClickDrag = false;
	scrollClickAbove = false;
	scrollClickBelow = false;
	scrollClickUp = false;
	scrollClickDn = false;
	return true;
}




// ------------------------------------------------------------------------

function scrollGetOffsetCoords(obj) {
	realC = new Object();
	realC.top = obj.offsetTop;
	realC.left = obj.offsetLeft;
	
	while(obj.offsetParent.nodeName != 'BODY') {
		obj = obj.offsetParent;
		realC.top += obj.offsetTop;
		realC.left += obj.offsetLeft;
	}
	
	realC.width = obj.offsetWidth;
	realC.height = obj.offsetHeight;
	
	return realC;
}
