﻿var LINK_JS_VERSION="2.0.1.20";
var link_arrLink=new Array();
var link_mouseOverLinkInfo;
function link_obj(info, id){
	this.info=info;
	this.id = id;
	this.elementOver=false;
	
	var me=this;
	if(info.type=="image"){
		var imgURL=info.url;
		if(imgURL.toLowerCase().indexOf("http:")!=0 && imgURL.toLowerCase().indexOf("https:")!=0 && imgURL.toLowerCase().indexOf("file:")!=0 && imgURL.indexOf("/")!=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.iconevt!="y"){
		if(info.type=="flash") this.element.onmouseup=function(evt){link_click(info.id,"click");}
		else this.element.onclick=function(evt){link_click(info.id,"click");}
	}
	
	this.element.onmouseover=function(evt){if(me.info.end=="out"){me.elementOver=true;}}
	this.element.onmouseout=function(evt){me.elementOver=false;}
	
	this.element.id="link_obj_" + id;
	this.element.style.position = "absolute";
	this.element.style.display="none";
	this.element.style.visibility="visible";
	viewerDiv.appendChild(this.element);
	this.resize=function(scale, rect){
		this.element.style.left= Math.floor(this.info.bound.x*scale)+rect.x;
		this.element.style.top= Math.floor(this.info.bound.y*scale)+rect.y;
		var sHtml=this.info.desc.toLowerCase();
		if(e_isIEBrowser && this.element.tagName.toUpperCase()=="DIV" && this.info.type!="movie" && this.info.type!="music" && this.info.type!="flash" && !(this.info.type=="html" && sHtml.indexOf("<iframe")>=0)){
			this.element.style.width= Math.floor(this.info.bound.w);
			this.element.style.height= Math.floor(this.info.bound.h);
			this.element.style.zoom=scale;
		}else{
			this.element.style.width= Math.floor(this.info.bound.w*scale);
			this.element.style.height= Math.floor(this.info.bound.h*scale);
		}
	};
	this.draw=function(){
		if(this.info.hide=="y") return;
		var pages=e_o.dBook().handle_getCurRealPages();
		if(this.info.page==pages.page_l || this.info.page==pages.page_r){
			if(this.element.tagName.toUpperCase()=="DIV"){
				this.element.innerHTML = link_getLinkHtml(this.info);
			}
			this.element.style.display="";
			this.element.style.visibility="visible";
		}
	};
	this.clear=function(){
		try{
			this.hide(false);
			viewerDiv.removeChild(this.element);
			this.element=null;
		}catch(e){}
	}
	this.hide=function(bDelay){
		if(bDelay && this.elementOver) return;
		try{
			if(this.element.tagName.toUpperCase()=="DIV"){
				try{
					var player=document.getElementById("link_player_"+this.info.id);
					player.isForceStop=true;
					player.style.display="none";
					player.pause();
					player.stop();
					this.element.removeChild(player);
					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.toLowerCase().indexOf("http:")!=0 && linkURL.toLowerCase().indexOf("https:")!=0 && linkURL.toLowerCase().indexOf("file:")!=0 && linkURL.indexOf("/")!=0  && linkURL.indexOf("mms:")!=0){
		if(linkURL.indexOf(e_dataDirectory+"/link/")<0) linkURL=e_dataDirectory+"/link/"+linkURL;
		
		if(e_absHref.indexOf("file")==0) linkURL = e_absHref.replace(/%20/g," ") + linkURL;
		else linkURL = e_absHref+linkURL;
	}
	if(info.type=="flash"){
		if(e_o.browser.msie){
			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="wmode" value="transparent" />';
			ret += '<param name="bgcolor" value="#ffffff" />';
			ret += '<param name="allowScriptAccess" value="sameDomain" />';
			ret += '<param name="allowFullScreen" value="true" />';
			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" allowScriptAccess="sameDomain" allowFullScreen="true" wmode="transparent" bgcolor="#ffffff" scale="exactfit" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" WIDTH="100%" HEIGHT="100%" />';
		}
	}else if(info.type=="movie"){
		var vol=Math.round(100*e_o.dBook().handle_getVolume());
		if(e_o.browser.msie){
			ret += '<table id="link_tbl_loading_'+info.id+'" width="100%" height="100%" border=0 cellpadding=0 cellspacing=0 bgcolor=#000000 style="display:none;">';
			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 += '<table width="100%" height="100%" border=0 cellpadding=0 cellspacing=0 ><tr><td align=center valign=middle>';
		ret += '<embed id="link_player_'+info.id+'" name="link_player_'+info.id+'" type="application/x-mplayer2" ';
		ret += 'src="'+linkURL+'"  url="'+linkURL+'" WIDTH="100%" HEIGHT="100%" enablejavascript="1" ';
		ret += 'autostart="1" autosize="1" displaysize="4" autoplay="1"  Volume="'+vol+'" ';
		if(info.control=="y") ret += 'enabletracker="1" enablepositioncontrols="1" showcontrols="1" showtracker="1"  showpositioncontrols="1" controller="1" ';
		else ret += 'enabletracker="0" enablepositioncontrols="0" showcontrols="0" showtracker="0"  showpositioncontrols="0" controller="0" ';
		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></td></tr></table>';
	}else if(info.type=="music"){
		var vol=Math.round(100*e_o.dBook().handle_getVolume());
		ret += '<embed id="link_player_'+info.id+'" name="link_player_'+info.id+'" type="application/x-ms-wmp" ';
		ret += 'src="' + linkURL + '"  Volume="'+vol+'" 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=="html"){
		ret += info.desc;
	}
	return ret;
}
function link_media_play(linkid, isMovie){
	link_playStateHandler("start",linkid);
}
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;
	var obj = e_o.dBook().handle_getLinkInfoAll(idx);
	this.type = link_nte(obj, "type").toLowerCase();
	this.owner = link_nte(obj, "owner");
	this.page =  parseInt(link_nte(obj, "page"));
	this.bound=(typeof(obj.bound)=="undefined")?{x:0,y:0,w:0,h:0}:obj.bound;
	this.url = link_nte(obj, "url");
	this.icon =  link_nte(obj, "icon");
	this.start = link_nte(obj, "start");
	if(this.start=="") this.start="turn";
	this.end = link_nte(obj, "end");
	if(this.end=="") this.end="turn";
	this.href = link_nte(obj, "href");
	this.target="_blank";
	this.popw=0;
	this.poph=0;
	var sTarget=link_nte(obj, "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_nte(obj, "qnaTo");
		this.qnaSubject = link_nte(obj, "qnaSubject");
	}else{
		this.qnaTo=""
		this.qnaSubject=""
	}
	this.target=this.target==""?"_blank":this.target;
	this.isHtml = link_nte(obj, "isHtml");
	this.style = link_nte(obj, "style");
	this.save = link_nte(obj, "save");
	this.desc = link_nte(obj, "desc");
	
	this.hide=link_nte(obj, "hide");
	this.control="n";
	this.onend="";
	this.tippos="ct";
	this.iconevt="n";
	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]=="control") this.control=arrProp[1];
				else if(arrProp[0]=="tippos") this.tippos=arrProp[1];
				else if(arrProp[0]=="iconevt") this.iconevt=arrProp[1];
			}
		}
	}catch(e){}
}
function link_nte(obj,attr){
	return (typeof(obj[attr])=="undefined")?"":obj[attr];
}
function link_getLinkInfo(idx,attr){
	try{ return e_o.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_hideHandler(idx,hide){
	var oLink=link_getLinkObjectFromIndex(idx);
	if(oLink!=null){
		oLink.info.hide=hide;
		if(hide=="y"){
			oLink.hide(false);
			if(link_mouseOverLinkInfo!=null && (idx==link_mouseOverLinkInfo.id)){
				link_isMouseInTip=false;
				link_mouseOverLinkInfo=null;
				ebook_htmlTip.innerHTML="";
				ebook_htmlTip.style.display="none";
			}
		}else if(oLink.info.start=="turn"){
			oLink.draw();
		}
	}
}
function link_stop(idx, event){
	var oLink=link_getLinkObjectFromIndex(idx);
	if(oLink!=null){
		oLink.hide(event=="out");
		if(link_mouseOverLinkInfo!=null && (idx==link_mouseOverLinkInfo.id)){
			link_isMouseInTip=false;
			link_mouseOverLinkInfo=null;
			ebook_htmlTip.innerHTML="";
			ebook_htmlTip.style.display="none";
		}
	}
}
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;
	var pages=e_o.dBook().handle_getCurRealPages();
	if(info.page==pages.page_l || info.page==pages.page_r){
		if(link_isMouseInTip || info.type=="html" || info.type=="desc" || (e_o.dBook().handle_isLinkEditMode() && info.type!="memo")) return;
		if(info.isHtml=="yes" && info.desc.length>0){
			link_isMouseInTip=false;
			ebook_htmlTip.innerHTML = link_getTipHtml(info);
			ebook_htmlTip.style.display = "";
			ebook_htmlTip.style.visibility = "hidden";
			setTimeout("link_tipResize(null)",100);
		}
	}
	e_o.dispatchEvent("mouseLinkOver", idx);
}
function link_mouseOut(idx){
	var oLink=link_getLinkObjectFromIndex(idx);
	if(oLink!=null){
		
		if(oLink.info.end=="out" && oLink.element.style.display=="") oLink.hide(true);
	}
	
	if(link_mouseOverLinkInfo!=null && (idx==link_mouseOverLinkInfo.id || idx==-1)){
		link_mouseOverLinkInfo=null;
		link_isMouseInTip=false;
		link_mouseOverLinkInfo=null;
		ebook_htmlTip.innerHTML="";
		ebook_htmlTip.style.display="none";
	}

	e_o.dispatchEvent("mouseLinkOut", idx);
}
var link_isMouseInTip=false;
function link_tipOver(evt){
	link_isMouseInTip=true;
}
function link_tipOut(evt){
	try{
		var srcNode=e_isIEBrowser?evt.toElement:evt.relatedTarget;
		var bTipHide=true;
		
		if(srcNode!=null && typeof(srcNode)!="undefined" && ebook_htmlTip!=srcNode){
			if(srcNode.compareDocumentPosition && srcNode.compareDocumentPosition(ebook_htmlTip)>=8){
				bTipHide=false;
			}else if(ebook_htmlTip.contains && ebook_htmlTip.contains(srcNode) )
				bTipHide=false;
			
		}else if(ebook_htmlTip==srcNode) bTipHide=false;
		if(bTipHide){
			if(srcNode!=null && typeof(srcNode)!="undefined" && srcNode.id!="dBook"){
				link_isMouseInTip=false;
				link_mouseOverLinkInfo=null;
				ebook_htmlTip.innerHTML="";
				ebook_htmlTip.style.display="none";
				e_o.dispatchEvent("linkTipOut");
			}
		}
	}catch(e){}	
}

function link_tipResize(evt){
	if(link_mouseOverLinkInfo==null || ebook_htmlTip.style.display!="") return;
	var info=link_mouseOverLinkInfo;
	
	var scale= e_o.dBook().handle_getCurScale();
	var rect=e_o.dBook().handle_getCurViewArea();
	var tipRect=e_o.getElementRect(ebook_htmlTip);
	
	var left, top;
	
	switch(info.tippos){
	case "ct":
		left=Math.floor((info.bound.x+info.bound.w/2)*scale + rect.x);
		top=Math.floor((info.bound.y+info.bound.h/2)*scale + rect.y);
		var vRect = e_o.getElementRect(viewerDiv);
		vRect.x=0;
		vRect.y=0;
		
		if( left>(vRect.x+vRect.w) ) left=vRect.x+vRect.w;
		if( top>(vRect.y+vRect.h) ) top=vRect.y+vRect.h;
		var tRect = e_o.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;
		break
	case "lt":
		left=Math.floor(info.bound.x*scale + rect.x)+2*scale;
		top=Math.floor(info.bound.y*scale + rect.y)+2*scale;
		break;
	case "rt":
		left=Math.floor((info.bound.x+info.bound.w)*scale+rect.x-tipRect.w);
		top=Math.floor(info.bound.y*scale + rect.y);
		break;		
	case "lb":
		left=Math.floor(info.bound.x*scale + rect.x);
		top=Math.floor((info.bound.y+info.bound.h)*scale + rect.y-tipRect.h);
		break;
	case "rb":
		left=Math.floor((info.bound.x+info.bound.w)*scale+rect.x-tipRect.w);
		top=Math.floor((info.bound.y+info.bound.h)*scale + rect.y-tipRect.h);
		break;
	}

	ebook_htmlTip.style.left = left;
	ebook_htmlTip.style.top = top;
	ebook_htmlTip.style.visibility="visible";
}
function link_click(idx, mstart){
	if(e_o.dBook().handle_isLinkEditMode()) return false;
	if(link_mouseOverLinkInfo==null || link_mouseOverLinkInfo.id!=idx){
		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){
	e_o.dispatchEvent("linkClick", info.id);
	if(e_o.dBook().handle_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("mailto:")==0){
			document.location.replace(sHref);
		}else{
			if(sHref.indexOf("www.")==0)
				sHref="http://"+sHref;
			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){
				if(e_isSafari) e_o.dBook().handle_openURL(sHref);
			}
		}
		try{ e_o.dBook().handle_addLinkClickInfo(info.id); }catch(e){}
		return true;
	}else if(info.type=="mail"){
		var href=info.href;
		if(href.indexOf("mailto:")!=0) href="mailto:"+href
		document.location.replace(href);
		try{ e_o.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=viewerDiv.appendChild(document.createElement("FORM"));
				mailFrm.style.visibility="hidden";
				mailFrm.id=frmID;
				mailFrm.action="/mail/mailqna.asp";
				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{ e_o.dBook().handle_addLinkClickInfo(info.id); }catch(e){}
		return true;		
	}else{
		setTimeout("link_clickDelay("+info.id+",'"+mstart+"');",12);
	}
	return false;
}
function link_clickDelay(idx, mstart){
	var oLink=link_getLinkObjectFromIndex(idx);
	if(oLink!=null){
		var info=oLink.info;
		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.hide(false);
			return true;
		}
	}
}
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_goto(url){
	var re_h=new RegExp("((http|https)://|www\\.)+[\\w\\d\\-]{1,}\\.[\\w\\d\\.\\-#?/&=]{1,}","ig");
	var re_e=new RegExp("[\\w\\d\\.\\-]{1,}@[\\w\\d\\-]{1,}\\.[\\w\\d\\.\\-]{1,}","ig");
	if(re_h.test(url)){
		var low=url.toLowerCase();
			if(low.indexOf("www.")==0) url="http://"+url;
			var sTarget="_blank";
			if( e_bLinkTargetOne ) sTarget="dBookLinkWin";
			var oWin=window.open(url, sTarget);
			try{ oWin.focus();}catch(e){
				if(e_isSafari) e_o.dBook().handle_openURL(url);
			}
	}else if(re_e.test(url)){
		document.location.replace("mailto:"+url);
	}
}
function link_getTipHtml(info){
	var ret="";
	var desc=info.desc;
	if(info.type=="memo"){
		desc = desc.replace(/\r\n/g,"<br>");
		var sDate=info.start;
		var oDate=new Date(sDate);
		if(!isNaN(oDate.getFullYear()))  sDate=oDate.toLocaleString();
		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;' + sDate + '</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"'
		if(typeof(skin_linkTipBg)!="undefined") ret+=' bgcolor="'+skin_linkTipBg+'"'
		ret+='>';
		ret+='<tr><td';
		if(typeof(skin_linkTipBorder)!="undefined") ret+=' style="'+skin_linkTipBorder+'"'
		ret+='>';
		ret+=desc;
		ret+='</td></tr>';
		ret+='</table>';
	}
	return ret;
}
function link_display(){
	if(e_o.dBook().handle_isLinkEditMode()) return;
	if(e_initLinkComplete && link_arrLink.length==0){
		var arrLinkID = e_o.dBook().handle_getCurLinkIDs(true);
		var num=0;
		var scale= e_o.dBook().handle_getCurScale();
		var rect=e_o.dBook().handle_getCurViewArea();
		
		for(var i=0;i<arrLinkID.length;i++){
			var idx = arrLinkID[i];
			var info = new link_info(idx);
			var oLink = new link_obj(info,num);
			link_arrLink.push(oLink);
			oLink.resize(scale, rect);
			if(info.start=="turn") oLink.draw();
			num++;
		}
	}
}
function link_hide(){
	while(link_arrLink.length>0){
		try{
			var oLink = link_arrLink.pop();
			oLink.clear();
			oLink = null;
		}catch(e){}
	}
	link_mouseOut(-1);
}
function link_resize(){
	if(e_o.dBook().handle_isLinkEditMode()) return;
	if(e_initLinkComplete){
		var scale= e_o.dBook().handle_getCurScale();
		var rect=e_o.dBook().handle_getCurViewArea();
		for(var i=0;i<link_arrLink.length;i++){
			if(link_arrLink[i]!=null) try{link_arrLink[i].resize(scale, rect);}catch(e){}
		}
		link_tipResize(null);
	}
	link_mouseOut(-1);
}
function link_reload(bHide){
	if(e_o.dBook().handle_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.indexOf("nlink")==0){
				var arrLink=e_o.dBook().handle_getCurLinkIDs(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"){
							e_o.dBook().handle_link("linkClick",info_n.id);
							break;
						}
					}
				}
			}
//			if(oLink!=null) oLink.clear();
		}catch(e){}
	}
}
function link_volume(vol){
	var mvol=Math.round(5000*(vol-1));
	vol=Math.round(100*vol);
	for(var i=0;i<link_arrLink.length;i++){
		try{
			var oLink = link_arrLink[i];
			if(oLink.info.type=="movie" || oLink.info.type=="music"){
				var player=document["link_player_"+oLink.info.id];
				if(!player) player=document.getElementById("link_player_"+oLink.info.id);
				if (player){
					try{player.settings.volume = vol;}catch(ae){}
					try{player.controls.volume = vol;}catch(ae){}
					try{player.SetVolume(vol);}catch(ae){}
				}
			}
		}catch(e){
			alert(e.message);
		}
	}	
}

