﻿var LINK_JS_VERSION="2.0.1.7";
var link_arrLink=new Array();
var link_mouseOverLinkInfo;
function link_clickEventHandler(evt){
	var sID;
	if(e_isIEBrowser) sID = evt.srcElement.id;
	else sID = evt.target.id;
	if(sID.indexOf("link_obj_")<0) return false;
	var oLink=link_arrLink[parseInt(sID.substring("link_obj_".length, sID.length) )];
	link_clickHandler(oLink.info);
	evt.cancelBubble=true;
	evt.returnValue=false;
}
function link_obj_resize(ratio,rect, maxR){
	this.element.style.left= Math.floor(this.info.bound.x*ratio.x - rect.x);
	this.element.style.top= Math.floor(this.info.bound.y*ratio.y - rect.y);
	var sHtml=this.info.desc.toLowerCase();
	if(e_isIEBrowser && this.element.tagName.toUpperCase()=="DIV" && !(this.info.type=="html" && sHtml.indexOf("<iframe")>=0) ){
		if(e_ghostZoomLevel==1) maxR=maxR/2;
		this.element.style.zoom=ratio.x*maxR;
		this.element.style.width= Math.floor(this.info.bound.w/maxR);
		this.element.style.height= Math.floor(this.info.bound.h/maxR);
	}else{
		this.element.style.width= Math.floor(this.info.bound.w*ratio.x);
		this.element.style.height= Math.floor(this.info.bound.h*ratio.y);
	}
}
function link_attatchMouseEvent(obj, isIE, bClick){
	if(isIE){
		if(bClick) obj.attachEvent ("onclick", link_clickEventHandler);
		obj.attachEvent ("onmouseover", ebook_mouseOver);
		obj.attachEvent ("onmouseout", ebook_mouseOut);
		obj.attachEvent ("onmousedown", ebook_mouseDown);
		obj.attachEvent ("onmouseup", ebook_mouseUp);
	}else{
		if(bClick)  obj.addEventListener("click", link_clickEventHandler,false);
		obj.addEventListener("mouseover", ebook_mouseOver,false);
		obj.addEventListener("mouseout", ebook_mouseOut,false);
		obj.addEventListener("mousedown", ebook_mouseDown,false);
		obj.addEventListener("mouseup", ebook_mouseUp,false);
	}
}
function link_obj(info, id){
	this.info=info;
	this.id = id;
	if(info.type=="image"){
		var imgURL=info.url;
		if(imgURL.toLowerCase().indexOf("http:")<0 && imgURL.toLowerCase().indexOf("https:")<0){
			if(imgURL.indexOf(e_dataDirectory+"/link/")<0) imgURL=e_dataDirectory+"/link/"+imgURL;
		}
		this.element = document.createElement("IMG");
		this.element.style.zIndex=999-id;
		this.element.src=imgURL;
		this.element.alt = info.desc;
	}else{
		this.element = document.createElement("DIV");
		this.element.style.overflow="hidden";
		if(info.type=="html") this.element.style.zIndex=2000+id;
		else this.element.style.zIndex=999-id;
		try{
			var arrStyle = info.style.split(";");
			for(var i=0;i<arrStyle.length;i++){
				var arrProp = arrStyle[i].split(":");
				if(arrProp.length==2){
					switch(arrProp[0]){
						case "background-color" : 
							this.element.style.backgroundColor= arrProp[1];
							break;
						case "color" : 
							this.element.style.color= arrProp[1];
							break;
						case "font-family" : 
							this.element.style.fontFamily= arrProp[1];
							break;
						case "font-size" : 
							this.element.style.fontSize= arrProp[1];
							break;
						case "font-style" : 
							this.element.style.fontStyle= arrProp[1];
							break;
						case "font-weight" : 
							this.element.style.fontWeight= arrProp[1];
							break;
						case "text-decoration" : 
							this.element.style.textDecoration= arrProp[1];
							break;
					}
				}
			}
		}catch(e){}
	}
	if(info.type!="html") link_attatchMouseEvent(this.element, e_isIEBrowser, true);
	this.element.id="link_obj_" + id;
	this.element.style.position = "absolute";
	this.element.style.display="none";
	this.element.style.visibility="visible";
	ebook_linkDiv.appendChild(this.element);
	this.resize = link_obj_resize;
	this.draw = link_obj_draw;
	this.clear = link_obj_clear;
}
function link_obj_draw(){
	if(this.element.tagName.toUpperCase()=="DIV") this.element.innerHTML = link_getLinkHtml(this.info);
	this.element.style.display="";
	this.element.style.visibility="visible";
}
function link_obj_clear(){
	try{
		if(this.element.tagName.toUpperCase()=="DIV"){
			try{
				var player=this.element.removeChild(document.getElementById("link_player_"+this.info.id));
				player.isForceStop=true;
				player.pause();
				player.stop();
				player=null;
			}catch(ae){}
			this.element.innerHTML="";
		}
		this.element.style.visibility="hidden";
		this.element.style.display="none";
	}catch(e){}
}
function link_getLinkHtml(info){
	var ret="";
	var linkURL = info.url;
	if(info.type!="html" && linkURL.indexOf("://")<0){
		if(linkURL.indexOf(e_dataDirectory+"/link/")<0) linkURL=e_dataDirectory+"/link/"+linkURL;
		
		if(e_absHref.indexOf("file")==0) linkURL = e_absHref.replace("%20"," ") + linkURL;
		else linkURL = e_absHref+linkURL;
	}
	if(info.type=="flash"){
		if(e_isIEBrowser){
			ret += '<OBJECT id="link_player_'+info.id+'" name="link_player_'+info.id+'" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" WIDTH="100%" HEIGHT="100%">';
			ret += '<param name="movie" VALUE="'+linkURL+'">';
			ret += '<param name="play" VALUE="true">';
			ret += '<param name="loop" VALUE="false">';
			ret += '<param name="quality" VALUE="high">';
			ret += '<param name="scale" VALUE="exactfit">';
			ret += '</OBJECT>';
		}else{
			ret += '<embed id="link_player_'+info.id+'" name="link_player_'+info.id+'" src="'+linkURL+'" quality="high" play="true" loop="false" scale="exactfit" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" WIDTH="100%" HEIGHT="100%" />';
		}
	}else if(info.type=="movie"){
		if(e_isIEBrowser){
			ret += '<table id="link_tbl_loading_'+info.id+'" width="100%" height="100%" border=0 cellpadding=0 cellspacing=0 bgcolor=#000000>';
			ret += '<tr><td align=center valign=middle><img id="link_img_loading_'+info.id+'" src="'+e_absURL+'images/append_movie_loading.gif" width=205 height=64></td></tr></table>';
		}
	    ret += '<embed id="link_player_'+info.id+'" name="link_player_'+info.id+'" type="application/x-ms-wmp" ';
		ret += 'src="' + linkURL + '"  WIDTH="100%" HEIGHT="100%" enablejavascript="true" ';
		ret += 'autostart="true" autosize="true" enabletracker="false" showcontrols="false"  autoplay="true" controller="false" ';
		ret += '><\/embed>';
	    ret += '<script for="link_player_'+info.id+'" event="Buffering(bStart)" defer="true">';
	    ret += 'try{if(!bStart) link_media_play('+info.id+', true);}catch(e){}';
	    ret += '<\/script>';
	    ret += '<script for="link_player_'+info.id+'" event="ReadyStateChange(lReadyState)" defer="true">';
	    ret += 'try{if(lReadyState==4 && link_img_loading_'+info.id+'.src.indexOf("images/append_movie_loading.gif")>=0) link_media_play('+info.id+', true);}catch(e){}';
	    ret += '<\/script>';
	    ret += '<script for="link_player_'+info.id+'" event="PlayStateChange(lOldState, lNewState)" language="javascript" defer="true">';
		ret += 'try{';
	    ret += 'if(lNewState==0 && !document.getElementById("link_player_'+info.id+'").isForceStop){';
	    ret += 'document.getElementById("link_player_'+info.id+'").isForceStop=true;';
	    ret += 'link_playStateHandler("stop",'+info.id+');';
	    ret += '}else if(lNewState==2 && link_img_loading_'+info.id+'.src.indexOf("images/append_movie_loading.gif")>=0) link_media_play('+info.id+', true);';
		ret += '}catch(e){}';
	    ret += '<\/script>';
	    ret += '<script for="link_player_'+info.id+'" event="OpenStateChange(lOldState, lNewState)" defer="true">';
	    ret += 'try{if(lNewState==6 && link_img_loading_'+info.id+'.src.indexOf("images/append_movie_loading.gif")>=0) link_media_play('+info.id+', true);}catch(e){}';
	    ret += '<\/script>';
	    ret += '<script for="link_player_'+info.id+'" event="Error(bStart)" defer="true">';
		ret += 'try{link_media_play('+info.id+', true);}catch(e){}';
	    ret += '<\/script>';
	}else if(info.type=="music"){
		ret += '<embed id="link_player_'+info.id+'" name="link_player_'+info.id+'" type="application/x-ms-wmp" src="' + linkURL + '"  autostart="1" autosize="1" enabletracker="0" showcontrols="0" width="1" height="1" autoplay="true" controller="false"></embed>';
		ret += '<script for="link_player_'+info.id+'" event="PlayStateChange(lOldState, lNewState)" language="javascript" defer="true">';
		ret += 'try{';
		ret += 'if(lNewState==0 && !document.getElementById("link_player_'+info.id+'").isForceStop){';
		ret += 'document.getElementById("link_player_'+info.id+'").isForceStop=true;';
		ret += 'link_playStateHandler("stop",'+info.id+');';
		ret += '}else if(lNewState==2) link_media_play('+info.id+', false);';
		ret += '}catch(e){}';
		ret += '<\/script>';
	}else if(info.type=="vrmall"){
		ret += '<OBJECT id="link_player_'+info.id+'" name="link_player_'+info.id+'" WIDTH="100%" HEIGHT="100%" CLASSID="CLSID:D7959311-BFA5-11D4-AC33-0050DA92CB80" CODEBASE="http://www.humandream.com/VRmall/Release/VRmall.cab#version=2,9,0,0">';
		ret += '<PARAM NAME="SOURCE" VALUE="'+linkURL+'">';
		ret += '<PARAM NAME="WIDTH"  VALUE="100%">';
		ret += '<PARAM NAME="HEIGHT" VALUE="100%">';
		ret += '</OBJECT>';
	}else if(info.type=="html"){
		ret += info.desc;
	}
	return ret;
}
function link_media_play(linkid, isMovie){
	link_playStateHandler("start",linkid);
	if(isMovie) document.getElementById("link_tbl_loading_"+linkid).style.display="none";
	
}
function link_media_error(linkid, isMovie){
	link_playStateHandler("error",linkid);
	if(isMovie){
		document.getElementById("link_img_loading_"+linkid).src=e_absURL+"images/append_movie_error.gif";
		document.getElementById("link_tbl_loading_"+linkid).style.display="";
	}
}
function link_info(idx){
	this.id = idx;
	this.type = link_getLinkInfo(idx, "type").toLowerCase();
	this.owner = link_getLinkInfo(idx, "owner");
	this.page =  parseInt(link_getLinkInfo(idx, "page"));
	this.bound = new ebook_rect();
	this.pos=link_getLinkInfo(idx, "pos");
	var arrPos = this.pos.split(";");
	if(arrPos.length==4){
		this.bound.x = parseInt(arrPos[0]);
		this.bound.y = parseInt(arrPos[1]);
		this.bound.w = parseInt(arrPos[2]) - this.bound.x;
		this.bound.h = parseInt(arrPos[3]) - this.bound.y;
		
		if(e_isDoublePage && !e_isOneImgTwoPage){
			var isRightPage=false;
			if(this.page%2==1){
				if( (e_isOldTurn && !e_bCoverSlide) || (!e_isOldTurn &&  e_bCoverSlide) ) isRightPage=true;
			}else{
				if( (e_isOldTurn && e_bCoverSlide) || (!e_isOldTurn &&  !e_bCoverSlide) ) isRightPage=true;
			}
			var ghostRatio=1;
			if(parent.e_ghostZoomLevel==1) ghostRatio=2;
			if(isRightPage){
				if(e_isVerticalTurn) this.bound.y=this.bound.y+e_canvasHeight/ghostRatio;
				else this.bound.x=this.bound.x+e_canvasWidth/ghostRatio;
			}
		}
	}else{
		this.bound.x=0;
		this.bound.y=0;
		this.bound.w=0;
		this.bound.h=0;
	}
	this.url = link_getLinkInfo(idx, "url");
	this.icon =  link_getLinkInfo(idx, "icon");
	this.start = link_getLinkInfo(idx, "start");
	if(this.start=="") this.start="turn";
	this.end = link_getLinkInfo(idx, "end");
	if(this.end=="") this.end="turn";
	this.href = link_getLinkInfo(idx, "href");
	this.target="_blank";
	this.popw=0;
	this.poph=0;
	var sTarget=link_getLinkInfo(idx, "target");
	var arrTarget = sTarget.split(";");
	for(var i=0;i<arrTarget.length;i++){
		switch(i){
			case 0 : this.target=arrTarget[i];
			case 1 : this.popw = parseInt(arrTarget[i]);
			case 2 : this.poph = parseInt(arrTarget[i]);
		}
	}
	if(this.type=="mailqna"){
		this.qnaTo = link_getLinkInfo(idx, "qnaTo");
		this.qnaSubject = link_getLinkInfo(idx, "qnaSubject");
	}else{
		this.qnaTo=""
		this.qnaSubject=""
	}
	this.target=this.target==""?"_blank":this.target;
	this.isHtml = link_getLinkInfo(idx, "isHtml");
	this.style = link_getLinkInfo(idx, "style");
	this.save = link_getLinkInfo(idx, "save");
	this.desc = link_getLinkInfo(idx, "desc");
	
	try{
		var arrStyle = this.style.split(";");
		for(var i=0;i<arrStyle.length;i++){
			var arrProp = arrStyle[i].split(":");
			if(arrProp.length==2){
				if(arrProp[0]=="onend") this.onend=arrProp[1];
				else if(arrProp[0]=="sratio"){
					if(arrProp[1]=="true") this.sratio=true;
					else this.sratio=false;
				}
			}
		}
	}catch(e){}

}
function link_getLinkInfo(idx,attr){
	try{ return dBook.handle_getLinkInfo(idx,attr);}catch(e){ return "";}
}
function link_getLinkObjectFromIndex(idx){
	for(var i=0;i<link_arrLink.length;i++){
		var oLink = link_arrLink[i];
		if(oLink.info.id==idx) return oLink;
	}
	return null;
}
function link_mouseOver(idx){
	var oLink=link_getLinkObjectFromIndex(idx);
	var info;
	if(oLink==null)
		info = new link_info(idx);
	else{
		info = oLink.info;
		if(oLink.info.start=="over" && oLink.element.style.display!="") oLink.draw();
	}
	link_mouseOverLinkInfo=info;
	if(link_isMouseInTip || info.type=="html" || info.type=="desc" || (e_isLinkEditMode && info.type!="memo")) return;
	if(info.isHtml=="yes"){
		link_isMouseInTip=false;
		ebook_htmlTip.innerHTML = link_getTipHtml(info);
		ebook_htmlTip.style.display = "";
		ebook_htmlTip.style.visibility = "hidden";
		setTimeout("link_tipResize(null)",100);
	}
	ebook_dispatchEvent("mouseLinkOver", idx);
}
function link_mouseOut(idx){
	link_mouseOverLinkInfo=null;
	if(!link_isMouseInTip || idx==-1){
		setTimeout("link_tipSleep()", 10);
	}

	var oLink=link_getLinkObjectFromIndex(idx);
	if(oLink!=null){
		if(oLink.info.end=="out" && oLink.element.style.display=="")
			oLink.clear();
	}
	ebook_dispatchEvent("mouseLinkOut", idx);
}
var link_isMouseInTip=false;
function link_tipOver(evt){
	link_isMouseInTip=true;
	dBook.handle_setNotAct(true);
}
function link_tipOut(evt){
	try{
		dBook.handle_setNotAct(false);
		link_isMouseInTip=false;
		var srcNode=e_isIEBrowser?evt.toElement:evt.relatedTarget;
		if(srcNode.id=="dBook" || srcNode.name=="dBook"){
			setTimeout("link_tipSleep()", 10);
			ebook_dispatchEvent("linkTipOut");
		}
	}catch(e){}	
}

function link_tipSleep()
{
		link_mouseOverLinkInfo=null;
		ebook_htmlTip.innerHTML= "";
		ebook_htmlTip.style.display = "none";
}
function link_mouseOutDBook(){
	if(link_isMouseInTip){
		dBook.handle_setNotAct(false);
	}
}
function link_mouseOverDBook(){
	if(link_isMouseInTip){
		dBook.handle_setNotAct(false);
		link_isMouseInTip=false;
		link_mouseOverLinkInfo=null;
		ebook_htmlTip.innerHTML= "";
		ebook_htmlTip.style.display = "none";
	}	
}
function link_tipResize(evt){
	if(link_mouseOverLinkInfo==null || ebook_htmlTip.style.display!="") return;
	var info=link_mouseOverLinkInfo;
	var ratio = link_getCurRatio();    
	var rect = ebook_getCurZoomRect();
	var left = Math.floor(info.bound.x*ratio.x - rect.x + info.bound.w*ratio.x/2);
	var top = Math.floor(info.bound.y*ratio.y - rect.y + info.bound.h*ratio.y/2);
	
	var vRect = ebook_getElementRect(viewerDiv);
	vRect.x=0;
	vRect.y=0;
	if(e_bCoverSlide && ebook_getCurrZoomStep()==e_fitZoomLevel){
		var bndState=dBook.handle_getBoundState();
		if(bndState=="right") vRect.x=vRect.w;
	}
	if( left>(vRect.x+vRect.w) ) left=vRect.x+vRect.w;
	if( top>(vRect.y+vRect.h) ) top=vRect.y+vRect.h;
	var tRect = ebook_getElementRect(ebook_htmlTip);
	if( (left+tRect.w)>(vRect.x+vRect.w) && (left-tRect.w)<vRect.x ) left=vRect.x+(vRect.w-tRect.w)/2;
	else if( (left+tRect.w)>(vRect.x+vRect.w) ) left=left-tRect.w;
	
	if( (top+tRect.h)>(vRect.y+vRect.h) && (top-tRect.h)<vRect.y ) top=vRect.y+(vRect.h-tRect.h)/2;
	else if( (top+tRect.h)>(vRect.y+vRect.h) ) top=top-tRect.h;
	ebook_htmlTip.style.left = left;
	ebook_htmlTip.style.top = top;
	ebook_htmlTip.style.visibility="visible";
}
function link_checkIsLinkClick(){
	if(e_isLinkEditMode) return false;
	if(link_mouseOverLinkInfo==null) return false;
	var info=link_mouseOverLinkInfo;
	if(info.type=="url" || info.href.indexOf("http://")==0 || info.href.indexOf("https://")==0) return true;
	else if(info.type=="mail" && info.href.indexOf("mailto:")==0) return true;
	else return false;
}
function link_click(idx, mstart){
	if(e_isLinkEditMode) return false;
	if(link_mouseOverLinkInfo==null){
		if(typeof(idx)=="number"){
			var oLink=link_getLinkObjectFromIndex(idx)
			link_mouseOverLinkInfo=(oLink==null)?new link_info(idx):oLink.info;
		}else return false;
	}
	return link_clickHandler(link_mouseOverLinkInfo,mstart);
}
function link_clickHandler(info, mstart){
	ebook_dispatchEvent("linkClick", info.id);
	if(e_isLinkEditMode) return false;
	mstart=(mstart==null || typeof(mstart)=="undefined")?"":mstart;

	if(info.type=="url" || info.href.indexOf("http://")==0 || info.href.indexOf("https://")==0 || info.href.indexOf("ftp://")==0 || info.href.indexOf("javascript")==0){
		var sHref=info.href;
		if(sHref.length==0) return false;
		
		if(sHref.indexOf("javascript")==0){
			eval(info.href);
		}else{
			if(sHref.indexOf("://")<0 && e_absHref.indexOf("file")!=0) sHref=e_absHref+sHref;
			
			var sFeature="";
			if(info.popw>0 && info.poph>0) sFeature="width="+info.popw+",height="+info.poph+",resizable=yes,scrollbars=no,menubar=no";
			var sTarget="";
			if( e_bLinkTargetOne ) sTarget="dBookLinkWin";
			else sTarget=info.target;
			var oWin=window.open(sHref, sTarget, sFeature);
			try{ oWin.focus();}catch(e){}
		}
		try{ dBook.handle_addLinkClickInfo(info.id); }catch(e){}
		return true;
	}else if(info.type=="mail" && info.href.indexOf("mailto:")==0){
		document.location.replace(info.href);
		try{ dBook.handle_addLinkClickInfo(info.id); }catch(e){}
		return true;
	}else if(info.type=="mailqna"){
		if(g_isEditable){
			var frameID="link_mailqna";
			var oFrame = document.getElementById(frameID);
			if(oFrame) oFrame.style.visibility="hidden";
			else{
				if(e_isIEBrowser){
					var strFrm='<iframe id="'+frameID+'" name="'+frameID+'" src="" scrolling="no" frameborder="0" ';
					strFrm+='style="position:absolute;top:0px;left:0px;visibility:hidden;" ALLOWTRANSPARENCY="true"></iframe>';
					document.body.insertAdjacentHTML("beforeEnd",strFrm);
				}else{
					var oElement = document.createElement("iframe");
					oElement.id=frameID;
					oElement.name=frameID;
					oElement.frameBorder=0;
					oElement.scrolling="no";
					oElement.style.position="absolute";
					oElement.style.left="0px";
					oElement.style.top="0px";
					oElement.style.visibility="hidden";
					oElement.style.backgroundColor="transparent";
					oElement.src="";
					document.body.appendChild(oElement);
				}
			}
			
			var frmID="link_mailqna_frm";
			var mailFrm=document.getElementById(frmID);
			if( !mailFrm ){
				var mailFrm=ebook_linkDiv.appendChild(document.createElement("FORM"));
				mailFrm.style.visibility="hidden";
				mailFrm.id=frmID;
				mailFrm.action="/mail/mailqna.asp?reloadCache=y";
				mailFrm.method="post";
				mailFrm.target=frameID;
				var ipt=mailFrm.appendChild(document.createElement("INPUT"));
				ipt.name="frameID";
				ipt.value=frameID;
				if(typeof(MSG_charset)=="undefined") MSG_charset="";
				ipt=mailFrm.appendChild(document.createElement("INPUT"));
				ipt.name="charset";
				ipt.value=MSG_charset;
				
				ipt=mailFrm.appendChild(document.createElement("INPUT"));
				ipt.id="mail_qna_isHtml";
				ipt.name="isHtml";
				ipt=mailFrm.appendChild(document.createElement("INPUT"));
				ipt.id="mail_qna_email";
				ipt.name="email";
				ipt=mailFrm.appendChild(document.createElement("INPUT"));
				ipt.id="mail_qna_qnaTo";
				ipt.name="qnaTo";
				ipt=mailFrm.appendChild(document.createElement("INPUT"));
				ipt.id="mail_qna_qnaSubject";
				ipt.name="qnaSubject";
				ipt=mailFrm.appendChild(document.createElement("INPUT"));
				ipt.id="mail_qna_desc";
				ipt.name="desc";
			}
			document.getElementById("mail_qna_isHtml").value=info.isHtml;
			document.getElementById("mail_qna_email").value=info.href;
			document.getElementById("mail_qna_qnaTo").value=info.qnaTo;
			document.getElementById("mail_qna_qnaSubject").value=info.qnaSubject;
			document.getElementById("mail_qna_desc").value=info.desc;
			mailFrm.submit();
		}else document.location.replace("mailto:"+info.href);
		
		try{ dBook.handle_addLinkClickInfo(info.id); }catch(e){}
		return true;		
	}else{
		var oLink=link_getLinkObjectFromIndex(info.id);
		if(oLink!=null){
			if((info.start=="click" || info.start=="seq") && info.start==mstart && oLink.element.style.display!=""){
				oLink.draw();
				return true;
			}else if(info.end=="click" && oLink.element.style.display==""){
				oLink.clear();
				return true;
			}
		}
	}
	return false;
	
}
function link_down(url){
	if(url.indexOf("http")!=0) url=e_absURL+url;
	
	var frameID="link_downFrame";
	var oFrame = document.getElementById(frameID);
	if(oFrame){
		oFrame.src=url;
	}else{
		if(e_isIEBrowser){
			var strFrm='<iframe id="'+frameID+'" name="'+frameID+'" src="'+url+'" scrolling="no" frameborder="0" ';
			strFrm+='style="position:absolute;top:0px;left:0px;visibility:hidden;"></iframe>';
			document.body.insertAdjacentHTML("beforeEnd",strFrm);
		}else{
			var oElement = document.createElement("iframe");
			oElement.id=frameID;
			oElement.name=frameID;
			oElement.frameBorder=0;
			oElement.scrolling="no";
			oElement.style.position="absolute";
			oElement.style.left="0px";
			oElement.style.top="0px";
			oElement.style.visibility="hidden";
			oElement.style.backgroundColor="#ffffff";
			oElement.src = url;
			document.body.appendChild(oElement);
		}		
	}
}
function link_getTipHtml(info){
	var ret="";
	var desc=info.desc;
	if(info.type=="memo"){
		desc = desc.replace(/\r\n/g,"<br>");
		ret+='<table border="0" cellpadding="0" cellspacing="0" style="border:1px solid #808080;border-bottom-color:#000000;border-right-color:#000000;" onmouseover="javascript:link_tipOver(event);">';
		ret+='	<tr><td bgcolor="#FFFFCC" style="padding:2px" height="99%" valign="top">';
		ret+='		<table border="0" cellpadding="0" cellspacing="0" width="100%">';
		ret+='			<tr><td >';
		ret+='				<table border="0" cellpadding="0" cellspacing="0" width="100%">';
		ret+='					<tr>';
		ret+='						<td width="19"><img src="images/append_memo_lefttop.gif" width="19" height="14" ></td>';
		ret+='						<td bgcolor="#0084E3"><img src="images/blank.gif" width="130" height="3"></td>';
		ret+='					</tr>';
		ret+='				</table>';
		ret+='			</td></tr>';
		ret+='			<tr><td height="99%"  valign="top" >';
		ret+='				<div class="memo" style="word-break:keep-all;">';
		ret+=desc;
		ret+='				</div>';
		ret+='			</td></tr>';
		ret+='		</table>';
		ret+='	</td></tr>';
		ret+='	<tr><td height="1" bgcolor="#999966"><img src="images/blank.gif" height="1"></td></tr>';
		ret+='	<tr><td bgcolor="#FFFFCC" valign="bottom" align="right" style="padding:0px">';
		ret+='		<table border="0" cellpadding="0" cellspacing="0" width="100%">';
		ret+='			<tr>';
		ret+='				<td height="12" class="memo" valign="middle"> &nbsp;' + info.start + '</td>';
		ret+='				<td width="13" height="12" valign="bottom" align="right"><img src="images/append_memo_rightbottom.gif" width="13" height="12"></td>';
		ret+='			</tr>';
		ret+='		</table>';
		ret+='	</td></tr>';
		ret+='</table>';
		var d= new Date();
	}else{
		ret+='<table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">';
		ret+='<tr><td style="border:1px solid #CCCCCC">';
		ret+=desc;
		ret+='</td></tr>';
		ret+='</table>';
	}
	return ret;
}
function link_display(){
	if(e_isLinkEditMode) return;
	link_hide();
	if(e_initLinkComplete){
		var arrLinkID = link_getCurrPageLinkIDs(true);
		var num=0;
		var ratio = link_getCurRatio();    
		var rect = ebook_getCurZoomRect();
		var maxR = Math.pow(2,dBook.handle_getTotalZoomStep() );
		for(var i=0;i<arrLinkID.length;i++){
			var idx = parseInt(arrLinkID[i]);
			if(isNaN(idx) || arrLinkID[i]=="" ) continue;
			var info = new link_info(idx);
			
			if(info.type!="image" || info.url.lastIndexOf(".gif")==info.url.length-4){
				var oLink = new link_obj(info,num);
				link_arrLink.push(oLink);
				oLink.resize(ratio,rect, maxR);
			
				if(info.start=="turn") oLink.draw();
			
				num++;
			}
		}
	}
}
function link_hide(){
	while(link_arrLink.length>0){
		try{
			var oLink = link_arrLink.pop();
			oLink.clear();
			var element = ebook_linkDiv.removeChild(oLink.element);
			element=null;
			oLink = null;
		}catch(e){}
	}
	link_mouseOut(-1);
}
function link_getCurRatio(){
	var zoomLevel = ebook_getCurrZoomStep();
	var ratio=1;
	if(e_ghostZoomLevel==1) ratio=2;
	if(zoomLevel==e_fitZoomLevel) ratio=e_viewRatio*ratio;
	else ratio=ratio;
	var ratioZoom = dBook.handle_getCurrRatio();
	var arrRatio = ratioZoom.split(",");
	var ret = new ebook_point();
	ret.x = ratio * arrRatio[0];
	ret.y = ratio * arrRatio[1];
	return ret;
}
function link_resize(){
	if(e_isLinkEditMode) return;
	if(e_initLinkComplete){
		var ratio = link_getCurRatio();
		var rect = ebook_getCurZoomRect();
		var maxR = Math.pow(2,dBook.handle_getTotalZoomStep() );
		for(var i=0;i<link_arrLink.length;i++)
			link_arrLink[i].resize(ratio,rect,maxR);
		
		link_tipResize(null);
	}
	link_mouseOut(-1);
}
function link_getCurrPageLinkIDs(bView){
	if(typeof(bView)=="undefined") bView=true;
	var strLinks="";
	var curPage = parseInt(dBook.handle_getCurRealPage());
	if(e_isDoublePage && !e_isOneImgTwoPage)
		strLinks+=dBook.handle_getLinkIDFromPage(curPage+1,bView);
	if(strLinks.length>0){
		var sTmp=dBook.handle_getLinkIDFromPage(curPage,bView);
		if(sTmp.length>0) strLinks=sTmp + "," + strLinks;
	}else strLinks=dBook.handle_getLinkIDFromPage(curPage,bView);
	if(strLinks.length==0) return new Array();
	var arrLinks = strLinks.split(",");
	var ret=arrLinks.sort(
		function(a,b){
			var ai=parseInt(a);
			var bi=parseInt(b);
			if(ai<bi) return -1;
			else if(ai>bi) return 1;
			else return 0;
		}
	);
	return ret;
}
function link_reload(bHide){
	if(e_isLinkEditMode) return;
	if(bHide) link_hide();
	link_display();
}
function link_playStateHandler(type,linkid){
	if(type=="stop"){
		link_mouseOverLinkInfo=null;
		var oLink=link_getLinkObjectFromIndex(linkid)
		var info=(oLink==null)?new link_info(linkid):oLink.info;
		try{
			if(info.onend=="turn"){
				if(e_isOldTurn) ebook_pressLeftPage();
				else ebook_pressRightPage();
			}else if(info.onend=="nlink"){
				var arrLink=link_getCurrPageLinkIDs(false);
				for(var i=0;i<arrLink.length;i++){
					if(parseInt(arrLink[i])>parseInt(info.id)){
						var info_n=new link_info(arrLink[i]);
						if(info_n.type=="music" || info_n.type=="movie" || info_n.type=="fvideo" || info_n.type=="csmall"){
							document.dBook.handle_link("linkClick",info_n.id);
							break;
						}
					}
				}
			}
//			if(oLink!=null) oLink.clear();
		}catch(e){}
	}
}
