var PAGEMARKER_JS_VERSION="1.0.0.0";
var pmark_margin = 10;
var pmark_width=40;
var pmark_height = 20;
var pmark_maxGap = 10;
var pmark_minGap= 2;
var pmark_maxNum = 10;
var pmark_arrBookMark;
var pmark_arrColor;
function pmark_pageIndex(page){
	for(var i=0;i<pmark_arrBookMark.length;i++)
		if(page==pmark_arrBookMark[i].page) return i;
	
	return -1;
}
function pmark_objRedraw(idx, rect, leftPage, rightPage, gap){
	var isLeft, nWidth;
	
	if(e_isOldTurn){
		if(this.page>rightPage) isLeft=true;
		else isLeft=false;
	}else{
		if(this.page<rightPage) isLeft=true;
		else isLeft=false;		
	}
	if(this.page==leftPage || this.page==rightPage){
		nWidth = pmark_width;
		if(this.element.css) this.element.css.cursor = "default";
		else this.element.style.cursor = "default";
	}else{
		nWidth=pmark_margin;
		if(this.element.css) this.element.css.cursor = "pointer";
		else this.element.style.cursor = "pointer";
	}

	if(isLeft)
		this.element.style.left = rect.x+e_borderThick - pmark_margin;
	else
		this.element.style.left=rect.x+rect.w-(e_borderThick+nWidth-pmark_margin);
	
	this.element.style.width = nWidth;
	this.element.style.top=rect.y + pmark_maxGap + idx*(pmark_height + gap);	
	if( ( pmark_maxGap+idx*(pmark_height + gap) )<(rect.h-pmark_height) )
		this.element.style.display = "";
	else
		this.element.style.display = "none";
}
function pmark_objHide(){
	this.element.style.display = "none";
}
function pmark_clickEventHandler(evt){
	var sID;
	if(e_isIEBrowser) sID = evt.srcElement.id;
	else sID = evt.target.id;

	var page = parseInt(sID.substring("img_pmark_".length));
	dBook.handle_inputGotoPage(page-e_coverPageFix);
}
function pmark_bookMarkObj(page){
	this.page = page;
	this.element = document.createElement("IMG");
	document.body.appendChild(this.element);
	this.element.id = "img_pmark_" + page;
	this.element.src = e_iconDirectory+"/blank.gif";
	this.element.border = 0;
	this.element.alt = (page+e_pageFix)+"p";
	
	if(e_isIEBrowser){
		try{this.element.style.filter = "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";}catch(e){}
		this.element.attachEvent ("onclick", pmark_clickEventHandler);
	}else{
		try{if(ebook_isWindowOs()) this.element.style.opacity=0.5;}catch(e){}
		this.element.addEventListener("click", pmark_clickEventHandler,false);	
	}
	this.element.oncontextmenu = pmark_returnfalse;
	this.element.style.display = "none";
	this.element.style.position = "absolute";
	this.element.style.height = pmark_height;
	this.element.style.backgroundColor = pmark_arrColor[page-1];
	this.redraw = pmark_objRedraw;
	this.hide = pmark_objHide;
}
function pmark_returnfalse(){
	return false;
}
function pmark_sort(arr){
	return arr;
	for(var i=0;i<arr.length;i++){
		for(var j=i+1;j<arr.length;j++){
			if( arr[i].page>arr[j].page ){
				var tmp = arr[i];
				arr[i] = arr[j];
				arr[j] = tmp;
			}
		}
	}
	return arr;
}
function pmark_init(){
	if( typeof(e_bookMark)=="undefined" ){
		try{
			e_bookMark=document.dBook.handle_getLocalSharedObject("pmark");
		}catch(e){
			e_bookMark="";
		}
	}
	e_bookMark=e_penPageMark+","+e_bookMark;
	pmark_arrBookMark = new Array();
	pmark_arrColor = new Array();
	
	var spage = 1;
	var epage = dBook.handle_getSlideTotal();
	
	for(var i=0; i<epage; i++){
		var residual = i%16;
		var ratio = (16 - ( i%16 ))/16;
		
		var red=0, green=0, blue=0;
		switch( (i%6) ){
			case 0:
				red=1;
				break;
			case 1:
				green=1;
				break;
			case 2:
				green=1;
				break;
			case 3:
				red=1;
				green=1;
				break;
			case 4:
				red=1;
				blue=1;
				break;
			case 5:
				green=1;
				blue=1;
				break;
		}
		var color = ( Math.floor(0xFF0000*red*ratio + 0xFF00*green*ratio + 0xFF*blue*ratio) ).toString(16);
		while( color.length<6 )
			color = "0" + color;
		color = "#" + color;
		pmark_arrColor.push( color );
	}

	var arr = e_bookMark.split(",");
	for(var i=0;i<arr.length;i++){
		var nPage=parseInt( arr[i] );
		if( !isNaN(nPage) && nPage>=spage && nPage<=epage && pmark_pageIndex(nPage)<0 ) 
			pmark_arrBookMark.push( new pmark_bookMarkObj(nPage)  );
	}
	pmark_arrBookMark = pmark_sort(pmark_arrBookMark);
	pmark_draw();
}
function pmark_draw(){
	var zLevel = ebook_getCurrZoomStep();
	if( pmark_arrBookMark.length==0 || (zLevel>e_fitZoomLevel && e_bDbookExtend) )
		pmark_hide();
	else{
		var rect = ebook_getElementRect(viewerDiv);
		var leftPage = dBook.handle_getLeftSlidePage()+e_coverPageFix;
		var rightPage;
		if(e_isDoublePage) rightPage=dBook.handle_getRightSlidePage()+e_coverPageFix;
		else rightPage=leftPage;
		var gap = Math.floor( (rect.h - pmark_maxGap)/pmark_arrBookMark.length-pmark_height );
		if(gap>pmark_maxGap) gap = pmark_maxGap;
		else if(gap<pmark_minGap ) gap = pmark_minGap;

		for(var i=0;i<pmark_arrBookMark.length;i++){
			pmark_arrBookMark[i].redraw(i, rect, leftPage, rightPage, gap);
		}
	}
}
function pmark_hide(){
	for(var i=0;i<pmark_arrBookMark.length;i++) pmark_arrBookMark[i].hide();
}
function pmark_addOrRemove(isLeft){
	var page;
	if(e_isDoublePage){
		if(isLeft) page=dBook.handle_getLeftSlidePage()+e_coverPageFix;
		else page=dBook.handle_getRightSlidePage()+e_coverPageFix;
	}else{
		page=dBook.handle_getLeftSlidePage();
	}
	var idx = pmark_pageIndex(page);
	if( idx<0 ){
		pmark_arrBookMark.push( new pmark_bookMarkObj(page)  );
		pmark_arrBookMark = pmark_sort(pmark_arrBookMark);
	}else{
		var oBMark= pmark_arrBookMark[idx];
			
		var arrF = pmark_arrBookMark.slice(0, idx);
		var arrE = pmark_arrBookMark.slice(idx+1);
		
		pmark_arrBookMark = arrF.concat(arrE);
		
		document.body.removeChild( oBMark.element );
		oBMark.element = null;
		oBMark = null;
	}

	try{ 
		var strPages="";
		for(var i=0;i<pmark_arrBookMark.length;i++){
			if(i==0) strPages=pmark_arrBookMark[i].page;
			else strPages=strPages+","+pmark_arrBookMark[i].page;
		}
		document.dBook.handle_saveLocalSharedObject("pmark", strPages);
	}catch(e){}
	pmark_draw();
}
function pmark_getBookMark(){
	return pmark_arrBookMark.toString();
}
function pmark_resize(){
	setTimeout("pmark_draw()", 10);
}
function pmark_EventListener(){
	try{
		if(typeof(e_penPageMark)=="undefined") e_penPageMark="";
		if(skin_bPageMarker_Button || e_penPageMark!=""){
			ebook_addEventListener("initEnd", "pmark_init");
			ebook_addEventListener("resizeAll", "pmark_resize");
			ebook_addEventListener("endFlip", "pmark_draw");
			ebook_addEventListener("zoomOccure", "pmark_draw");
			ebook_addEventListener("turnResize", "pmark_hide");
		}
	}catch(e){}
}
pmark_EventListener();
