function processAjax(pos) {
	document.documentElement.scrollTop = 0;
	
	var id = document.getElementById('bid').innerHTML;
	var fs = document.getElementById('fs').innerHTML;
	var fontSize = getCookie('fontSize');
	if (!fontSize) {
		fontSize = 14;
	}
	var fontName = getCookie('fontName');
	var fontColor = getCookie('fontColor');
	var bgColor = getCookie('bgColor');
	var progress;
	
	var pages = Math.round(fs / 10240);
	
	
	document.getElementById('contentDiv').style.fontSize = fontSize + 'px';
	document.getElementById('contentDiv').style.fontFamily = fontName;
	document.getElementById('contentDiv').style.color = fontColor;
	document.getElementById('contentDiv').style.backgroundColor = bgColor;
	document.getElementById('fontColor').style.backgroundColor = fontColor;
	document.getElementById('bgColor').style.backgroundColor = bgColor;
	
	
	
	document.getElementById("loadingDiv").style.display = "block";
	
	
	
	var url = 'http://royallib.ru/br.php?i='+ id + 
	( ( pos ) ? "&pos=" + pos : "" )
	+ '&rnd=' + Math.random();
	
	window.location.hash = 	( ( pos ) ? pos : 0 );
	
	var currPos = parseInt(window.location.hash.replace('#', ''));
	var currPage = Math.round(currPos / 10240) + 1;
	
	
	document.getElementById('page_' + currPage).selected = true;
	//document.getElementById('pager').innerHTML = 'Страница ' + currPage;
	
	if (fs > 0) {
		progress = Math.round((currPos+10240)/(fs/100));
		if (progress > 100) {
			progress = 100;
		}
		setProgress(progress);
	}
	
	var nextPos = parseInt(window.location.hash.replace('#', '')) + 10240;
	
	if (progress < 100) {
		document.getElementById("nextPage").style.display='inline';
		document.getElementById("nextPageBottom").style.display='inline';
		document.getElementById("nextPage").setAttribute('onclick', 'javascript:processAjax('+ nextPos + ');');
		document.getElementById("nextPageBottom").setAttribute('onclick', 'javascript:processAjax('+ nextPos + ');');
	} else {
		document.getElementById("nextPage").style.display='none';
		document.getElementById("nextPageBottom").style.display='none';
	}
	
	
	if ((currPos - 10240) > 0) {
		var prevPos = currPos - 10240;
		document.getElementById("prevPage").style.display = "inline";
		document.getElementById("prevPageBottom").style.display = "inline";
	} else if ((currPos - 10240) <= 0 && (currPos - 10240) > -10240) {
		var prevPos = 0;
		document.getElementById("prevPage").style.display = "inline";
		document.getElementById("prevPageBottom").style.display = "inline";
	} else if ((currPos - 10240) <= 0 && (currPos - 10240) <= -10240) {
		document.getElementById("prevPage").style.display = "none";
		document.getElementById("prevPageBottom").style.display = "none";
	}
	document.getElementById("prevPage").setAttribute('onclick', 'javascript:processAjax('+ prevPos + ');');
	document.getElementById("prevPageBottom").setAttribute('onclick', 'javascript:processAjax('+ prevPos + ');');
		
	if (window.XMLHttpRequest) { // Non-IE browsers
		req = new XMLHttpRequest();
		req.onreadystatechange = targetDiv;
		try {
			req.open("GET", url, true);
		} catch (e) {
			alert(e);
		}
		req.send(null);
	} else if (window.ActiveXObject) { // IE
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) {
			req.onreadystatechange = targetDiv;
			req.open("GET", url, true);
			req.send();
		}
	}
}

function changePage(i) {
	var pos = i * 10240;
	processAjax(pos);
}

function targetDiv() {
	if (req.readyState == 4) { // Complete
		if (req.status == 200) { // OK response
			document.getElementById("loadingDiv").style.display = "none";
			document.getElementById("topSearchDiv").style.display = "inline";
			document.getElementById("bottomSearchDiv").style.display = "inline";
			document.getElementById("contentDiv").innerHTML = req.responseText;			
		} else {
			alert("Problem: " + req.statusText);
		}
	}
}

function showhideOptTd() {
	var optTd = document.getElementById('optTd');
	var showhideOptText  = document.getElementById('showhideOptText');
	
	if (optTd.style.display == 'none') {
		optTd.style.display = 'block';
		showhideOptText.innerHTML = 'Спрятать опции';
	} else {
		optTd.style.display = 'none';
		showhideOptText.innerHTML = 'Показать опции';
	}
}

function openDiv(name) {
	var button = document.getElementById(name+'Button');
	var menuDiv = document.getElementById(name);
	
	if (button.innerHTML == '+') {
		button.innerHTML = '-';
		menuDiv.style.display = 'inline';
		if (name == 'opt') {
			document.getElementById('fonts').style.display = 'inline';
			document.getElementById('fontColor').style.display = 'inline';
			document.getElementById('bgColor').style.display = 'inline';
		}
	} else {
		button.innerHTML = '+';
		menuDiv.style.display = 'none';
		if (name == 'opt') {
			document.getElementById('fonts').style.display = 'none';
			document.getElementById('fontColor').style.display = 'none';
			document.getElementById('bgColor').style.display = 'none';
		}
	}
}

function setCookie( name, value, path, domain, secure ) { 
	var today = new Date(); 
	today.setTime( today.getTime() ); 
	expires = 1000 * 86400 * 365; 
	 
	var expires_date = new Date( today.getTime() + (expires) ); 
	document.cookie = name + "=" +escape( value ) + 
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +  
	( ( path ) ? ";path=" + path : "" ) +  
	( ( domain ) ? ";domain=" + domain : "" ) + 
	( ( secure ) ? ";secure" : "" ); 
}


function getCookie(name) {
	var cookie = " " + document.cookie;
	var search = " " + name + "=";
	var setStr = false;
	var offset = 0;
	var end = 0;
	if (cookie.length > 0) {
		offset = cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			end = cookie.indexOf(";", offset)
			if (end == -1) {
				end = cookie.length;
			}
			setStr = unescape(cookie.substring(offset, end));
		}
	}
	return(setStr);
}

function resetOpt() {
	setCookie('fontSize', '14', '/');
	setCookie('fontName', '', '/');
	setCookie('fontColor', '', '/');
	setCookie('bgColor', '', '/');
	
	
	var currPos = parseInt(window.location.hash.replace('#', ''));
	
	if (document.getElementById("contentDiv").innerHTML != '') {
		processAjax(currPos ? currPos : '');
	}
	
	showStatus('Установлены настройки по умолчанию');
}

function setFontSize(size) {
	
	var currPos = parseInt(window.location.hash.replace('#', ''));
	var fontSize = size + '';
	
	setCookie('fontSize', fontSize, '/');
	
	if (document.getElementById("contentDiv").innerHTML != '') {
		processAjax(currPos ? currPos : '');
	}
	
	showStatus('Установлен размер шрифта ' + fontSize);
	
}

function setFontName(name) {
	
	var currPos = parseInt(window.location.hash.replace('#', ''));
	var fontName = name + '';
		
	setCookie('fontName', fontName, '/');
	
	if (document.getElementById("contentDiv").innerHTML != '') {
		processAjax(currPos ? currPos : '');
	}
	
	showStatus('Установлен шрифт ' + fontName);
	
}


function setFontColor() {
	
	var currPos = parseInt(window.location.hash.replace('#', ''));
	var fontColor = document.getElementById('fontColor').style.backgroundColor + '';
		
	setCookie('fontColor', fontColor, '/');
	
	if (document.getElementById("contentDiv").innerHTML != '') {
		processAjax(currPos ? currPos : '');
	}
	
	showStatus('Установлен цвет текста ' + fontColor);
	
}

function setBgColor() {
	
	var currPos = parseInt(window.location.hash.replace('#', ''));
	var bgColor = document.getElementById('bgColor').style.backgroundColor + '';
		
	setCookie('bgColor', bgColor, '/');
	
	if (document.getElementById("contentDiv").innerHTML != '') {
		processAjax(currPos ? currPos : '');
	}
	
	showStatus('Установлен цвет фона ' + bgColor);
	
}

function setProgress(progress) {
	var pb = document.getElementById('progressBar');
	var pt = document.getElementById('progressText');
	var pbWidth = pb.style.width.replace('px', '');
	
	pt.innerHTML = progress + '%';
	
	px = -120 + pbWidth/100*progress;
	pb.style.backgroundPosition = px;
}

function savePosition() {
	var currPos = parseInt(window.location.hash.replace('#', ''));
	var bid = document.getElementById('bid').innerHTML;
	
	currPos = currPos + '';
	
	if (currPos != '') {
		setCookie('savedPos_' + bid, currPos, '/');
	}
	showStatus('Позиция сохранена');
}


function opacity(id, opacStart, opacEnd, millisec) {
     //speed for each frame
     var speed = Math.round(millisec / 100);
     var timer = 0;
  
     //determine the direction for the blending, if start and end are the same nothing happens
     if(opacStart > opacEnd) {
         for(i = opacStart; i >= opacEnd; i--) {
             setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
             timer++;
         }
     } else if(opacStart < opacEnd) {
         for(i = opacStart; i <= opacEnd; i++) {
             setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
             timer++;
         }
     }
 }
  
 //change the opacity for different browsers
 function changeOpac(opacity, id) {
     var object = document.getElementById(id).style;
     object.opacity = (opacity / 100);
     object.MozOpacity = (opacity / 100);
     object.KhtmlOpacity = (opacity / 100);
     object.filter = "alpha(opacity=" + opacity + ")";
 }
 
 function showStatus(text) {
 	statusDiv = document.getElementById('statusDiv');
 	statusDiv.innerHTML = text;
 	opacity("statusDiv", 100, 0, 2000);
 }
