﻿// JScript 文件
// author: szsheng
// Date: 2008/04/07

var PyTbUtil = {};
PyTbUtil.pltsoffsetX = 0;
PyTbUtil.pltsoffsetY = 0;
PyTbUtil.pyHst = null;
PyTbUtil.getPyHst = function(){
    var hst = new Hashtable();
    hst.Add("bei","2");
    hst.Add("bao","0");
    hst.Add("ban","02");
    hst.Add("ben","02");
    hst.Add("bang","02");
    hst.Add("beng","0");
    hst.Add("bi","0");
    hst.Add("bie","0");
    hst.Add("biao","02");
    hst.Add("bian","02");
    hst.Add("bin","023");
    hst.Add("bing","02");
    hst.Add("bu","0");
    hst.Add("pa","03");
    hst.Add("pai","0");
    hst.Add("pei","03");
    hst.Add("pao","0");
    hst.Add("pou","04");
    hst.Add("pan","03");
    hst.Add("pen","03");
    hst.Add("pang","0");
    hst.Add("peng","0");
    hst.Add("pi","0");
    hst.Add("pie","024");
    hst.Add("piao","0");
    hst.Add("pian","0");
    hst.Add("pin","0");
    hst.Add("ping","034");
    hst.Add("pu","0");
    hst.Add("mo","0");
    hst.Add("me","1234");
    hst.Add("mai","01");
    hst.Add("mei","01");
    hst.Add("mao","0");
    hst.Add("mou","04");
    hst.Add("man","0");
    hst.Add("men","3");
    hst.Add("mang","014");
    hst.Add("meng","0");
    hst.Add("mi","0");
    hst.Add("mie","023");
    hst.Add("miao","0");
    hst.Add("miu","0123");
    hst.Add("mian","01");
    hst.Add("min","014");
    hst.Add("ming","01");
    hst.Add("mu","01");
    hst.Add("fo","0134");
    hst.Add("fei","0");
    hst.Add("fou","0124");
    hst.Add("fan","0");
    hst.Add("fen","0");
    hst.Add("fang","0");
    hst.Add("feng","0");
    hst.Add("de","34");
    hst.Add("dai","02");
    hst.Add("dei","0124");
    hst.Add("dao","0");
    hst.Add("dou","02");
    hst.Add("dan","02");
    hst.Add("den","0123");    
    hst.Add("dang","02");
    hst.Add("deng","02");
    hst.Add("dong","02");
    hst.Add("di","0");
    hst.Add("dia","0124");
    hst.Add("die","034");
    hst.Add("diao","02");
    hst.Add("diu","0234");
    hst.Add("dian","02");
    hst.Add("ding","02");
    hst.Add("du","0");
    hst.Add("duo","0");
    hst.Add("dui","023");
    hst.Add("duan","02");
    hst.Add("dun","02");
    hst.Add("ta","02");
    hst.Add("te","0123");
    hst.Add("tai","0");
    hst.Add("tei","0234");
    hst.Add("tao","0");
    hst.Add("tou","0");
    hst.Add("tan","0");
    hst.Add("tang","0");
    hst.Add("teng","034");
    hst.Add("tong","0");
    hst.Add("ti","0");
    hst.Add("tie","02");
    hst.Add("tiao","0");
    hst.Add("tian","0");
    hst.Add("ting","0");
    hst.Add("tu","0");
    hst.Add("tuo","0");
    hst.Add("tui","0");
    hst.Add("tuan","0");
    hst.Add("tun","0");
    hst.Add("ne","13");
    hst.Add("nai","012");
    hst.Add("nei","012");
    hst.Add("nao","0");
    hst.Add("nou","01234");
    hst.Add("nan","0");
    hst.Add("nen","0123");
    hst.Add("nang","0");
    hst.Add("neng","0134");
    hst.Add("nong","013");
    hst.Add("ni","0");
    hst.Add("nie","03");
    hst.Add("niao","012");
    hst.Add("niu","0");
    hst.Add("nian","0");
    hst.Add("nin","0134");
    hst.Add("niang","013");
    hst.Add("ning","01");
    hst.Add("nu","01");
    hst.Add("nuo","013");
    hst.Add("nuan","0124");
    hst.Add("nv","012");
    hst.Add("nve","0123");
    hst.Add("le","23");
    hst.Add("lai","013");
    hst.Add("lao","0");
    hst.Add("lan","01");
    hst.Add("lang","0");
    hst.Add("leng","0");
    hst.Add("long","0");
    hst.Add("lia","0124");
    hst.Add("lie","02");
    hst.Add("liao","0");
    hst.Add("liu","0");
    hst.Add("lian","01");
    hst.Add("lin","0");
    hst.Add("liang","01");
    hst.Add("ling","01");
    hst.Add("luo","0");
    hst.Add("luan","01");
    hst.Add("lun","03");
    hst.Add("lv","01");
    hst.Add("lve","0123");
    hst.Add("ga","0");
    hst.Add("ge","0");
    hst.Add("gai","02");
    hst.Add("gei","0124");
    hst.Add("gao","02");
    hst.Add("gou","02");
    hst.Add("gan","02");
    hst.Add("gen","0");
    hst.Add("gang","02");
    hst.Add("geng","02");
    hst.Add("gong","02");
    hst.Add("gu","02");
    hst.Add("gua","02");
    hst.Add("guo","0");
    hst.Add("guai","02");
    hst.Add("gui","02");
    hst.Add("guan","02");
    hst.Add("gun","012");
    hst.Add("guang","02");
    hst.Add("ka","024");
    hst.Add("ke","0");
    hst.Add("kai","02");
    hst.Add("kao","02");
    hst.Add("kou","02");
    hst.Add("kan","02");
    hst.Add("ken","012");
    hst.Add("kang","03");
    hst.Add("keng","0234");
    hst.Add("kong","02");
    hst.Add("ku","02");
    hst.Add("kua","02");
    hst.Add("kuo","0123");
    hst.Add("kuai","012");
    hst.Add("kui","0");
    hst.Add("kuan","024");
    hst.Add("kun","02");
    hst.Add("kuang","0");
    hst.Add("ha","0");
    hst.Add("he","03");
    hst.Add("hai","0");
    hst.Add("hei","0234");
    hst.Add("hao","0");
    hst.Add("hou","0");
    hst.Add("han","0");
    hst.Add("hen","01");
    hst.Add("hang","03");
    hst.Add("heng","03");
    hst.Add("hong","0");
    hst.Add("hu","0");
    hst.Add("hua","03");
    hst.Add("huo","0");
    hst.Add("huai","013");
    hst.Add("hui","0");
    hst.Add("huan","0");
    hst.Add("hun","03");
    hst.Add("huang","0");
    hst.Add("ji","0");
    hst.Add("jia","0");
    hst.Add("jiao","0");
    hst.Add("jiu","2");
    hst.Add("jian","02");
    hst.Add("jin","02");
    hst.Add("jiang","02");
    hst.Add("jing","02");
    hst.Add("jiong","024");
    hst.Add("ju","0");
    hst.Add("jue","0");
    hst.Add("juan","02");
    hst.Add("jun","023");
    hst.Add("qi","0");
    hst.Add("qia","0");
    hst.Add("qie","0");
    hst.Add("qiao","0");
    hst.Add("qiu","04");
    hst.Add("qian","0");
    hst.Add("qin","0");
    hst.Add("qiang","0");
    hst.Add("qing","0");
    hst.Add("qiong","0134");
    hst.Add("que","03");
    hst.Add("quan","0");
    hst.Add("qun","034");
    hst.Add("xi","0");
    hst.Add("xia","03");
    hst.Add("xie","0");
    hst.Add("xiao","0");
    hst.Add("xiu","02");
    hst.Add("xian","0");
    hst.Add("xin","03");
    hst.Add("xiang","0");
    hst.Add("xing","0");
    hst.Add("xiong","034");
    hst.Add("xue","0");
    hst.Add("xuan","0");
    hst.Add("xun","03");
    hst.Add("zhi","0");
    hst.Add("zhai","0");
    hst.Add("zhei","0123");
    hst.Add("zhao","0");
    hst.Add("zhou","0");
    hst.Add("zhan","02");
    hst.Add("zhen","02");
    hst.Add("zhang","02");
    hst.Add("zheng","02");
    hst.Add("zhong","02");
    hst.Add("zhu","0");
    hst.Add("zhua","024");
    hst.Add("zhuo","034");
    hst.Add("zhuai","02");
    hst.Add("zhui","023");
    hst.Add("zhuan","02");
    hst.Add("zhun","024");
    hst.Add("zhuang","02");
    hst.Add("cha","0");
    hst.Add("che","02");
    hst.Add("chi","0");
    hst.Add("chai","03");
    hst.Add("chao","0");
    hst.Add("chou","0");
    hst.Add("chan","0");
    hst.Add("chang","0");
    hst.Add("cheng","0");
    hst.Add("chong","0");
    hst.Add("chu","0");
    hst.Add("chuo","023");
    hst.Add("chuai","0");
    hst.Add("chui","034");
    hst.Add("chuan","0");
    hst.Add("chun","04");
    hst.Add("chuang","0");
    hst.Add("sha","0");
    hst.Add("she","0");
    hst.Add("shai","02");
    hst.Add("shei","0134");
    hst.Add("shao","0");
    hst.Add("shou","0");
    hst.Add("shan","02");
    hst.Add("shen","0");
    hst.Add("shang","2");
    hst.Add("sheng","0");
    hst.Add("shu","0");
    hst.Add("shua","02");
    hst.Add("shuo","023");
    hst.Add("shuai","02");
    hst.Add("shui","01");
    hst.Add("shuan","023");
    hst.Add("shun","012");
    hst.Add("shuang","024");
    hst.Add("re","012");
    hst.Add("ri","0123");
    hst.Add("rao","01");
    hst.Add("rou","013");
    hst.Add("ran","014");
    hst.Add("ren","01");
    hst.Add("rang","0");
    hst.Add("reng","034");
    hst.Add("rong","014");
    hst.Add("ru","01");
    hst.Add("ruo","013");
    hst.Add("rui","01");
    hst.Add("ruan","014");
    hst.Add("run","0123");
    hst.Add("za","04");
    hst.Add("ze","013");
    hst.Add("zi","02");
    hst.Add("zai","02");
    hst.Add("zei","0134");
    hst.Add("zao","0");
    hst.Add("zou","02");
    hst.Add("zan","0");
    hst.Add("zen","012");
    hst.Add("zang","02");
    hst.Add("zeng","023");
    hst.Add("zong","02");
    hst.Add("zu","04");
    hst.Add("zuo","0");
    hst.Add("zui","02");
    hst.Add("zuan","02");
    hst.Add("zun","024");
    hst.Add("ca","024");
    hst.Add("ce","0123");
    hst.Add("ci","0");
    hst.Add("cai","0");
    hst.Add("cao","04");
    hst.Add("cou","0123");
    hst.Add("can","0");
    hst.Add("cen","034");
    hst.Add("cang","034");
    hst.Add("ceng","30");
    hst.Add("cong","034");
    hst.Add("cu","03");
    hst.Add("cuo","0");
    hst.Add("cui","02");
    hst.Add("cuan","03");
    hst.Add("cun","0");
    hst.Add("sa","02");
    hst.Add("se","0123");
    hst.Add("si","02");
    hst.Add("sai","023");
    hst.Add("sao","02");
    hst.Add("sou","02");
    hst.Add("san","02");
    hst.Add("sen","0234");
    hst.Add("sang","02");
    hst.Add("seng","0234");
    hst.Add("song","0");
    hst.Add("su","03");
    hst.Add("suo","024");
    hst.Add("sui","0");
    hst.Add("suan","023");
    hst.Add("sun","024");
    hst.Add("o","03");
    hst.Add("er","01");
    hst.Add("ai","0");
    hst.Add("ei","01234");
    hst.Add("ao","0");
    hst.Add("ou","02");
    hst.Add("an","02");
    hst.Add("en","023");
    hst.Add("ang","03");
    hst.Add("eng","0234");
    hst.Add("yi","0");
    hst.Add("ye","0");
    hst.Add("yao","0");
    hst.Add("you","0");
    hst.Add("yan","0");
    hst.Add("yin","0");
    hst.Add("yang","0");
    hst.Add("ying","0");
    hst.Add("yong","0");
    hst.Add("wu","0");
    hst.Add("wo","02");
    hst.Add("wai","02");
    hst.Add("wei","0");
    hst.Add("wan","0");
    hst.Add("wen","0");
    hst.Add("wang","0");
    hst.Add("weng","02");
    hst.Add("yu","0");
    hst.Add("yue","023");
    hst.Add("yuan","0");
    hst.Add("yun","0");

    return hst;
}

PyTbUtil.createZoomBox = function(){
    if($("zoomBox"))return;
    var zoomBox = document.createElement("div");
    zoomBox.id = "zoomBox"; 
    zoomBox.style.display = "none";
    document.body.appendChild(zoomBox);
    $("zoomBox").onclick = function(){
        var tmpPy = this.innerHTML.replace(/ /g,"");
        tmpPy = tmpPy.replace(/(?:ɑ|ā|á|ǎ|à)/ig,"a").replace(/(?:o|ō|ó|ǒ|ò)/ig,"o").replace(/(?:e|ē|é|ě|è)/ig,"e").replace(/(?:i|ī|í|ǐ|ì)/ig,"i").replace(/(?:u|ū|ú|ǔ|ù)/ig,"u").replace(/(?:ü|ǖ|ǘ|ǚ|ǜ)/ig,"v").replace(/ɡ/ig,"g");
        if(!PyTbUtil.pyHst)
            PyTbUtil.pyHst = PyTbUtil.getPyHst();
        var noTones = PyTbUtil.pyHst.getItem(tmpPy.strip());
        tmpPy = tmpPy.replace(/ve/i,"ue");
        for(var i=0;i<5;i++)
        {
            var srcPy = tmpPy + i.toString();
            //alert(srcPy);
            var py = PinYinUtil.ConvertToPy(srcPy);
            var item = $("py" + i.toString());
            var regx = new RegExp(i);
            if(!regx.test(noTones) && py.length > 0)
            {
                Element.show(item);
                item.childNodes[0].innerHTML = py;
                item.childNodes[1].innerHTML = srcPy;
                item.childNodes[2].onclick = function(){
                    var pars='isdebug=true&vid=8&category=freelearning&speed=-100&&pinyin='+encodeURIComponent(this.parentNode.childNodes[1].innerHTML);
	                var myRequest=new Ajax.Request(
		                'textospeech.aspx?rnd='+((new Date()).valueOf()),
		                {
			                parameters: pars,
			                onSuccess:PyTbUtil.pyResponse,
			                onFailure:PyTbUtil.pyErr
		                }
	                );
                }
            }else{
                Element.hide(item);
            }
            item = null;
        }
        Element.show("pyListBox");
        if(arguments.length == 1)
            PyTbUtil.moveToMouseLoc(arguments[0]);
        else
            PyTbUtil.moveToMouseLoc();
    };
};
PyTbUtil.createPyListBox = function(){
    if($("pyListBox"))return;
    var pyListBox = document.createElement("div");
    pyListBox.id = "pyListBox";
    pyListBox.style.display = "none";
    document.body.appendChild(pyListBox);    
    pyListBox.innerHTML = '<div id="pyHead"><img src="@images/close.gif" onclick="Element.hide(\'pyListBox\')"/></div>' +
                            '<div id="py0" onmouseover="PyTbUtil.itemMouseOver(this)" onmouseout="PyTbUtil.itemMouseOut(this)"><span class="py"></span><span class="srcPy"></span><img id="img0" src="@images/horn.gif"/></div>' +    
                            '<div id="py1" onmouseover="PyTbUtil.itemMouseOver(this)" onmouseout="PyTbUtil.itemMouseOut(this)"><span class="py"></span><span class="srcPy"></span><img id="img1" src="@images/horn.gif"/></div>' +
                            '<div id="py2" onmouseover="PyTbUtil.itemMouseOver(this)" onmouseout="PyTbUtil.itemMouseOut(this)"><span class="py"></span><span class="srcPy"></span><img id="img2" src="@images/horn.gif"/></div>' +
                            '<div id="py3" onmouseover="PyTbUtil.itemMouseOver(this)" onmouseout="PyTbUtil.itemMouseOut(this)"><span class="py"></span><span class="srcPy"></span><img id="img3" src="@images/horn.gif"/></div>' +
                            '<div id="py4" onmouseover="PyTbUtil.itemMouseOver(this)" onmouseout="PyTbUtil.itemMouseOut(this)"><span class="py"></span><span class="srcPy"></span><img id="img4" src="@images/horn.gif"/></div>';
   for(var i=0;i<5;i++)
       ActiveSwapImage("img"+i,"@images/horn2.gif");
};
PyTbUtil.pyResponse = function(req){
	try{
		var backStr = req.responseText;
		if(backStr.strip().charAt(0)!='{'){//session expired
		    if(backStr.match(/<form.+action="login.aspx".+>/i))
			    location.replace('default.aspx');
			else
			    alert(backStr);
			return;
		}
		var temp=eval('('+backStr+')');
		temp.MediaUrl = temp.MediaUrl.replace(/http\:\/\/[^/]+/i,"http://"+location.host);
		var player = getEle("PlayerPy");
		player.URL = temp.MediaUrl;
	}catch(exc){
		alert(exc.message);
	}
};
PyTbUtil.pyErr = function(req){
};
PyTbUtil.moveToMouseLoc = function(eX,eY)
{
    var MouseX = eX;
    var MouseY = eY;
    var pyListBox = $("pyListBox");
    //alert(arguments[0].pageX + "," + arguments.length);
    if(!MouseY)
    {
        if(arguments.length == 1)
        {
            MouseX = arguments[0].pageX;
            MouseY = arguments[0].pageY;
        }
        else
        {
            MouseX = event.clientX;
            MouseY = event.clientY;
        }
    }
    var scrollTop = document.documentElement.scrollTop;
    var scrollLeft = document.documentElement.scrollLeft;
    if(-1 == navigator.userAgent.indexOf("MSIE"))
        scrollTop = scrollLeft = 0;
    //alert(scrollLeft);
    var popHeight=pyListBox.clientHeight;
    var popWidth=pyListBox.clientWidth;
    if(MouseY+PyTbUtil.pltsoffsetY+popHeight+scrollTop>document.body.clientHeight){
        if(MouseY-PyTbUtil.pltsoffsetY-popHeight>0)
        { 
            popTopAdjust=-popHeight-PyTbUtil.pltsoffsetY*1.5;
        }else{
            popTopAdjust=0;
            pyListBox.style.top=0;
        }      
    }else{
        popTopAdjust=0;
    }
    if(MouseX+PyTbUtil.pltsoffsetX+popWidth+scrollLeft>document.body.clientWidth){
        popLeftAdjust=-popWidth-PyTbUtil.pltsoffsetX*2;
    }else{
        popLeftAdjust=0;
    }
    pyListBox.style.left=(MouseX+PyTbUtil.pltsoffsetX+scrollLeft+popLeftAdjust)+"px";
    pyListBox.style.top=(MouseY+PyTbUtil.pltsoffsetY+scrollTop+popTopAdjust)+"px";
    return true;
};

PyTbUtil.itemMouseOver = function(item){
    item.style.fontWeight = "bold";
    item.style.backgroundColor = "#F9CC76";
};
PyTbUtil.itemMouseOut = function(item){
    item.style.fontWeight = "normal";
    item.style.backgroundColor = "#FEEBD0";
};

window.onload = function(){
    PyTbUtil.createZoomBox();
    PyTbUtil.createPyListBox();
    document.onmousemove = function(){
        var args = arguments;
        var ele;
        if(args.length == 0)
            ele = event.srcElement;
        else
            ele = args[0].target;
        if(ele.id == "zoomBox")return;
        if(Element.hasClassName(ele,"tblCell"))
        {
            if(ele.innerHTML.strip().length > 0)
            {
                var zoomBox = $("zoomBox");
                zoomBox.innerHTML = ele.innerHTML;
                var pos = LightboxUtil.getAbsolutePos(ele);
                zoomBox.style.left = (pos.x - 10) + "px";
                zoomBox.style.top = (pos.y - 10) + "px";
                zoomBox.style.display = "";
                Element.hide("pyListBox");
            }
            else
                Element.hide("zoomBox");
        }
//        else if(ele.id == "zoomBox"){
//            //do nothing
//        }
        else
        {
            Element.hide("zoomBox");
        }
    };
}
