function AdjustSize()
{
//	alert('sizing:'+window.innerHeight+"/"+screen.availHeight + '---'+ window.innerWidth+"/"+screen.availWidth);
	if (BrowserDetect.browser.toLowerCase() == 'firefox')
	{
		h = window.innerHeight - 59;
		w = window.innerWidth;
		pageSpacing = 18;
	}
	else
	{	
		h = document.body.clientHeight - 49;
		w = document.body.clientWidth;
		pageSpacing = 21;
	}
		
//	var w = window.innerWidth - 250;
//	$('pageContent').style.width = w+'px';
	$('pageContent').style.height = h+'px';
	$('navContent').style.height = h+'px';

	paneWidth = $('bookPaneNav').style.width;
	$('bookPaneReader').style.width = w - parseInt(paneWidth);
	
	// 20*2 for 2 scrollbars
	pageContentWidth = w - parseInt(paneWidth) - 40;

	$('loaderDiv').style.left = parseInt(pageContentWidth/2)-50+"px";
	$('loaderDiv').style.top = parseInt(h/2)+'px';
	
	zoomMax = pageContentWidth;
	zoomMin = parseInt(paneWidth);
}

function PreloadImages() 
{
     images = new Array();
     images[0]="../../images/reader/openhand.cur"
     images[1]="../../images/reader/closehand.cur"
     images[2]="../../images/reader/loading.gif"
     for(var i=0; i<images.length; i++)
     {
          new Image().src=images[i];
     }
}

function zoom(factor) 
{
	var x = Math.floor(pageWidth*factor);
	if (x > zoomMax || x <zoomMin)
	{
		return;
	}
	//alert(factor);
	pageWidth=Math.floor(pageWidth*factor);
	pageHeight=Math.floor(pageHeight*factor);
	
	modifyRule('.pageimage','height',pageHeight+'px');
	modifyRule('.pageimage','width',pageWidth+'px');
	modifyRule('.pageholder','width',pageWidth+20+'px');	
}

function zoomActual() 
{
	var factor = pageHeight / initHeight;
	zoom(1/factor);
}

function zoomOut() 
{
	zoom(1/1.2);
}

function zoomIn() 
{
	zoom(1.2);
}

function modifyRule( selector, property, value )
{
	//alert(selector +', '+property+', '+ value);
	if( document.styleSheets )
	{
		//for (var x=0;x<document.styleSheets.length;x++)
		for (var x=0;x<3;x++)
		{
			var mysheet=document.styleSheets[x]
			var myrules=mysheet.cssRules? mysheet.cssRules: mysheet.rules
			//alert(myrules.length);
			for (i=0; i<myrules.length; i++)
			{
				if(myrules[i].selectorText.toLowerCase()==selector)
				{ //find "a:hover" rule
					targetrule=myrules[i];
					//alert('e:'+targetrule.style[property]);				
					targetrule.style[property] = value;
					break;
				}
			}
		}
	}
	return false;
} 

function getRule( selector, property )
{
	//alert(selector +', '+property);
	if( document.styleSheets )
	{
		for (var x=0;x<document.styleSheets.length;x++)
		{
			var mysheet=document.styleSheets[x]
			var myrules=mysheet.cssRules? mysheet.cssRules: mysheet.rules
			//alert(myrules.length);
			for (i=0; i<myrules.length; i++)
			{
				//alert(myrules[i].selectorText.toLowerCase());
				if(myrules[i].selectorText.toLowerCase()==selector)
				{ //find "a:hover" rule
					targetrule=myrules[i];
					//alert('e:'+property+'+'+targetrule.style[property]);				
					return targetrule.style[property];
				}
			}
		}
	}
	return false;
}

function startDrag(o,e) 
{	
	e = e || event;

	var cX = e.clientX;
	var cY = e.clientY;

//	window.status = (pageContentWidth + "|" + cX+","+cY);
	if (cX > pageContentWidth)
		return;
	
	offsetX=cX;
	offsetY=cY;
	
	o.onmouseup=function(event){endDrag(o,event);};
	o.onmousemove= function(event){moveDrag(o,event);};
	o.onmouseout=function(event){endDrag(o,event);};
}

function endDrag(o,e) 
{
	e = e || event;
	if (BrowserDetect.browser.toLowerCase() == 'firefox')
		o.style.cursor = '-moz-grab';
	else
		o.style.cursor = '../../images/reader/openhand.cur';
    o.onmousemove = null;
//	window.status = 'end:'+(o.scrollTop);	
}

function moveDrag(o,e) 
{
    e = e || event;
    var cX,cY;
	if (BrowserDetect.browser.toLowerCase() == 'firefox')
	{
		o.style.cursor = '-moz-grabbing';
	}
	else
	{	
		if (o.style.cursor != '../../images/reader/closedhand.cur')
			o.style.cursor = '../../images/reader/closedhand.cur';
	}
	cX = e.clientX;
	cY = e.clientY;	
//	window.status = 'moving ... x:'+cX + ',y:'+cY;
	
	var yDiff = cY - offsetY;
	var xDiff = cX - offsetX;	
	o.scrollTop += -yDiff;
	o.scrollLeft += -xDiff;	
	offsetY=cY;
	offsetX=cX;	
}	

function GotoPage(page)
{
	// TODO: check if page is non number
	if (!(page > 0 && page <= totalPages))
	{
		alert('Page does not exist!');
		$('form1').pageNo.value = currentPage;
		return false;
	}
		
	if (page == 0)
	{
		//alert('first');
		currentPage++;
		$('form1').pageNo.value = currentPage;
		return false;
	}

	if (page == totalPages+1)
	{
		//alert('last');
		currentPage--;
		$('form1').pageNo.value = currentPage;
		return false;
	}
	
	currentPage = page;
	var o = $('pageContent');
	o.scrollTop = (pageHeight + pageSpacing) * (page-1);
	$('form1').pageNo.value = currentPage;
	LoadImage(currentPage);
	return false;
}

function FindPage()
{
	var o = $('pageContent');
	
	var tempPage = Math.floor(o.scrollTop / (pageHeight + pageSpacing))+1;
	if (tempPage != currentPage)
	{
		currentPage = tempPage;
		$('form1').pageNo.value = currentPage;
		LoadImage(currentPage);
	}
}

function LoadImage(page)
{
	var prevPage = parseInt(page)-1;
	var nextPage = parseInt(page)+1;	
	var nextPage2 = parseInt(page)+2;	

	if ($('pageHolder'+page+'Img') && $('pageHolder'+page+'Img').src != GetPageSrc(page))
	{
//		alert( $('pageHolder'+page+'Img').src +':::'+ GetPageSrc(page));
		$('pageHolder'+page+'Img').onreadystatechange = function(){LoadImage_Callback(event);};
		$('pageHolder'+page+'Img').src = GetPageSrc(page);
	}

	if ($('pageHolder'+prevPage+'Img') && $('pageHolder'+prevPage+'Img').src != GetPageSrc(prevPage))
	{
		$('pageHolder'+prevPage+'Img').src = GetPageSrc(prevPage);
//		alert('loading 2:'+prevPage + '..'+$('pageHolder'+prevPage+'Img').src);		
	}

	if ($('pageHolder'+nextPage+'Img') && $('pageHolder'+nextPage+'Img').src != GetPageSrc(nextPage))
	{
		$('pageHolder'+nextPage+'Img').src = GetPageSrc(nextPage);
//		alert('loading 3:'+nextPage+'..'+$('pageHolder'+nextPage+'Img').src);		
	}

	if ($('pageHolder'+nextPage2+'Img') && $('pageHolder'+nextPage2+'Img').src != GetPageSrc(nextPage2))
	{
		$('pageHolder'+nextPage2+'Img').src = GetPageSrc(nextPage2);
	}
}

function GetPageSrc(id)
{
	//get book name
	var pageName = document.getElementById('book_name').value;
	
	return "http://ashrafiya.org/books/"+ pageName +"/"+$('pageHolder'+id+'Img').getAttribute('pageid')+".jpg";
}

function LoadImage_Callback(ev)
{
	ev = ev||window.event;
    var obj = (ev.srcElement)?ev.srcElement : ev.target;
    
    
    if (obj.readyState != "complete")
    {
//	    alert(obj.readyState + "|" + $('loaderDiv').style.left + "|" + $('loaderDiv').style.top);
    	$('loaderDiv').style.display = "block";
    }
    else if (obj.readyState == "complete")
    { 
//    	alert('hide');
    	$('loaderDiv').style.display = "none";
   	}
}

function FullScreen(o,bool)
{	
	if (bool == undefined)
		bool = true;
		
	if (bool)
	{
		$('bookPaneNav').style.display='none';
		$('bookPaneNav').style.width = '0px';		
//		$('tabletop').style.display = 'none';
		
		$('pageContent').style.height = (h+23) +'px';
//		alert(h+"/"+$('pageContent').style.height);
		
		paneWidth = $('bookPaneNav').style.width;
		$('bookPaneReader').style.width = w - parseInt(paneWidth) + "px";

		// 20*1 for 1 scrollbars
		pageContentWidth = w - parseInt(paneWidth) - 20;
		zoomMax = pageContentWidth;
		
		o.innerHTML = "Exit Full Screen";
		o.onclick = function() {FullScreen(this,false);};
	}
	else
	{
		$('bookPaneNav').style.display='block';
		$('bookPaneNav').style.width = '250px';		

//		$('tabletop').style.display = 'block';
				
		$('pageContent').style.height = (h)+'px';

		paneWidth = $('bookPaneNav').style.width;
		$('bookPaneReader').style.width = w - parseInt(paneWidth) + "px";

		// 20*1 for 2 scrollbars
		pageContentWidth = w - parseInt(paneWidth) - 40;
		zoomMax = pageContentWidth;
		
		o.innerHTML = "Full Screen";
		o.onclick = function() {FullScreen(this);};
	}
}