﻿(function($){var f={version:"1.2",author:"MaChao",target:null,path:"",flash:null,engine:["/WebQPen.aspx","/GetAsso.aspx"]};f.bind=function(a){var o=$.extend({},{opener:"self",target:null,method:"click"},a);o.opener=o.opener=="self"?o.target:o.opener;o.opener=o.opener!=null?$(o.opener):null;o.target=o.target!=null?checkTarget(o.target):null;o.method=/^click|focus|mouseover|dblclick$/.test(o.method)?o.method:"click";if(o.target!=null)o.opener.bind(o.method,function(){f.useQpenFor(o.target)})};f.useQpenFor=function(a){var b=checkTarget(a),targetPos,targetSize,qpen,qpenSize;if(b!=null){if(f.target!=b[0]){qpen=$("#QpenWeb");targetPos=b.offset();targetSize={width:b.outerWidth(),height:b.outerHeight()};qpenSize={width:qpen.width(),height:qpen.height()};f.target=b[0];b.show();var l=(targetPos.left+qpenSize.width-$(document).scrollLeft())>$(window).width()?targetPos.left+targetSize.width-qpenSize.width:targetPos.left,t=(targetPos.top+targetSize.height+qpenSize.height-$(document).scrollTop())>$(window).height()?targetPos.top-qpenSize.height:targetPos.top+targetSize.height;if(qpen.is(":visible")){qpen.animate({left:l+"px",top:t+"px"})}else{if($.browser.opera)$("#QpenWeb").find("#qw_flash").show();qpen.css({left:l+"px",top:t+"px"}).show("fast")}giveFocus(b)}}};f.close=function(){if($("#QpenWeb").is(":visible")){f.reload();if($.browser.opera)$("#QpenWeb").find("#qw_flash").hide();$("#QpenWeb").hide("fast");giveFocus(f.target);f.target=null}};f.undo=function(){f.flash.undo()};f.reload=function(){window.clearTimeout(window.v);window.clearTimeout(window.t);$("#tipBox").hide();if(arguments.length>0)if(arguments[0]!="part")$("#QpenWeb #qw_inf").html("");$("#QpenWeb").find("#listChr span,#relChr span").text("").css("cursor","default");if(!$.browser.opera)f.flash.reload()};function sendTrace(c){if(c=="null")f.reload();else $.post(f.path+f.engine[0],{"trace":c},function(a){showHanziInfo(a);var b=$("hanzi",a).length>0?"红色候选字存在关联字，"+($.browser.opera?"鼠标悬停":"右键点击")+"查看":"";$("#QpenWeb #qw_inf").html(b)})}function showRelstr(){var i,j,tmpArr,rel=$(this).attr("rel"),relSpan=$("#QpenWeb #relChr span");rel=rel||"";relSpan.text("").css("cursor","default");if(rel!=""){tmpArr=rel.split(",");for(i=0;i<tmpArr.length;i++)relSpan.eq(i).text(tmpArr[i].substr(0,1)).attr("py",tmpArr[i].substr(2))}return false}function getAssoWords(d){var e="";if(d!="")$.ajax({dataType:"xml",type:"post",url:f.path+f.engine[1],data:{"orgWord":d},error:function(a,b,c){$("#QpenWeb #qw_inf").html("")},success:function(a){showHanziInfo(a);e=$("hanzi",a).length>0?"目前是联想输入状态，请点选联想字":"";if($("#QpenWeb #qw_inf").text()!=e)$("#QpenWeb #qw_inf").html(e)}})}function showHanziInfo(a){var j,str,py,gl,span,listSpan=$("#QpenWeb #listChr span"),N=listSpan.length;$("hanzi",a).each(function(i){if(i<N){str=$(this).text();py=$(this).attr("py");gl=$(this).attr("gl");py=py||"unknown";gl=gl||"";span=listSpan.eq(i);span.text(str).attr({"py":py,"rel":gl});if(gl==""){if(span.is(".red"))span.removeClass("red")}else{if(!span.is(".red"))span.addClass("red")}j++}});while(j<N){listSpan.eq(j).text("").css("cursor","default");j++}$("#QpenWeb #relChr span").text("").css("cursor","default")}function inputChar(){var a=$(this).text(),tmp,target=f.target,tagName=target.tagName.toLowerCase();if(a!=""){if(/^input|textarea$/.test(tagName)){var N=$(target).attr("maxlength");tmp=$(target).val()+a;N=N||-1;$(target).val(N==-1?tmp:tmp.length>N?tmp.substr(tmp.length-N):tmp);giveFocus(target)}else $(target).html($(target).html()+a);f.reload("part");getAssoWords(a)}}function checkTarget(a){if(!$(a)[0])return null;var b=$(a).eq(0),tmp=b[0].tagName.toLowerCase();b=/^input|textarea|div|span|p|pre|fieldset$/.test(tmp)?b:null;if(tmp=="input"&&!b.is(":text,:password"))b=null;return b}function getFlash(a){if($.browser.msie)return $("#QpenWeb #"+a)[0];else return $("#QpenWeb embed[name='"+a+"']")[0]};function setTip(a){if($("#tipBox").is(":visible")){var e=a?a:window.event?window.event:null,mouse_X=e.clientX?(e.clientX+document.documentElement.scrollLeft):e.pageX,mouse_Y=e.clientY?(e.clientY+document.documentElement.scrollTop):e.pageY;if(mouse_X<0)mouse_X=0;if(mouse_Y<0)mouse_Y=0;$("#tipBox").css({"left":mouse_X-$("#tipBox").outerWidth()+15+"px","top":mouse_Y+5})}}function giveFocus(a){if($(a)[0]){try{var r,e=$(a)[0],can=$(e).is("input:text,input:password,textarea")?$(e).attr("readonly")?false:e.createTextRange()?true:false:false;if(can){r=e.createTextRange();r.moveStart('character',e.value.length);r.collapse(true);r.select()}}catch(e){$(a)[0].focus();return true}}};var g="";(/[^\w]path=([^\s\&]+)/).test($("script[src^=unihan.Qpen.js],script[src*=\/unihan.Qpen.js]")[0].src);g=RegExp.$1;var i,html='<div id="QpenWeb">'+'<table width="100%" cellpadding="0" cellspacing="0" border="0">'+'<tr id="qw_head">'+'<td class="l"></td>'+'<td class="c"><div id="qw_logo"></div><div id="qw_inf"></div><div id="qw_close">关闭</div></td>'+'<td class="r"></td>'+'</tr>'+'<tr id="qw_body">'+'<td class="l">&nbsp;</td><td class="c"><div id="qw_flash">';document.write(html);AC_FL_RunContent('codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','name','QPenFlash','width','150','height','150','id','QPenFlash','wmode','Opaque','src',g+'unihanQPen','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie',g+'unihanQPen');html='<br><button id="qw_undo">撤 销</button> <button id="qw_reload">重 写</button>'+'</div><div id="qw_chr">'+'<div id="listChr">';for(i=0;i<21;i++)html+='<span></span>';html+='</div><div id="relChr">';for(i=0;i<7;i++)html+='<span></span>';html+='</div>'+'<div id="qw_copyright">'+'<a href="http://www.unihan.com.cn/" target="_blank">书同文公司</a>版权所有 &copy;<span id="qw_year">2008</span>'+'</div>'+'</div>'+'</td><td class="r">&nbsp;</td>'+'</tr><tr id="qw_foot">'+'<td class="l"></td><td class="c">'+($.browser.opera?"":"&nbsp;")+'</td><td class="r"></td>'+'</tr></table>'+'</div>'+'<div id="tipBox">'+'<table cellpadding="0" cellspacing="0" border="0">'+'<tr id="qw_tip_head"><td class="l"></td><td class="c">&nbsp;</td><td class="r"></td></tr>'+'<tr id="qw_tip_body">'+'<td class="l">&nbsp;</td><td class="c"><div id="tipTitle"></div><div id="tips"></div></td><td class="r">&nbsp;</td>'+'</tr>'+'<tr id="qw_tip_foot">'+'<td class="l"></td><td class="c">'+($.browser.opera?"":"&nbsp;")+'</td><td class="r"></td></tr>'+'</table>'+'</div>';document.write(html);f.path=f.engine[0].substr(0,1)=="/"?"":g;f.flash=getFlash("QPenFlash");$("#QpenWeb").find("#qw_close").click(function(){f.close()}).end().find("#qw_undo").click(function(){f.undo()}).end().find("#qw_reload").click(function(){f.reload();if($.browser.opera){$("#QpenWeb").hide().find("#qw_flash").hide().end().show().find("#qw_flash").show()}}).end().find("#listChr span,#relChr span").mouseover(function(e){var a=$.trim($(this).html()),pinyin=$(this).attr("py");a=a||"";pinyin=pinyin||"unknown";if(a!=""){if(window.v)window.clearTimeout(window.v);$("#tipBox").find("#tipTitle").text(a).end().find("#tips").text(pinyin).end().show();$(this).css("cursor","help");setTip(e)}$(this).addClass("over")}).mousemove(function(e){setTip(e)}).mouseout(function(){if($("#tipBox").is(":visible")){window.v=window.setTimeout(function(){$("#tipBox").hide();$(this).css("cursor","default")},100)}$(this).removeClass("over")}).click(function(){inputChar.call(this)}).end().find("#listChr span").each(function(){if(!$.browser.opera){this.oncontextmenu=function(a){showRelstr.call(this);if(document.all)return false;else a.preventDefault()}}else{$(this).mouseover(function(){var a=this;window.t=window.setTimeout(function(){showRelstr.call(a)},600)}).mouseout(function(){window.clearTimeout(window.t)})}}).end().find("#qw_year").text((new Date()).getFullYear()).end().get(0).onselectstart=function(){return false};$("#tipBox").mouseover(function(){$(this).hide()});$(f.flash).mouseout(function(){f.flash.stopDraw()});$.extend({bindQpen:function(){var o,tmp;if(arguments.length>0){tmp=arguments[0];if(typeof tmp=="string")o={target:tmp};else if(typeof tmp=="object")o=(tmp.target)?tmp:{target:tmp};f.bind(o)}},closeQpen:function(){f.close()},sendQpenTrace:function(a){sendTrace(a)}})})(jQuery);