//加入系统LOG记录 
var ms_agent_status=0; //精灵状态,默认0为有效
var ms_sapi_status=0;//电子语音状态,默认0为有效,对付TTS组件的安装问题
document.domain="qeto.com"; 
//容错,设定默认值
if(typeof user_speech_br_us == 'undefined'){
	var user_speech_br_us =0;
}
if(typeof is_use_client == 'undefined'){
	var is_use_client =0;
}	
if(typeof system_user_type1 == 'undefined'){
	var system_user_type1 =0;
}	

function AddSysLog(code,type,action,operator,note,tag){
		if(system_user_type1 ==1){//打上调试标记
			type=999;
		}
		$.ajax({                     
		type: "GET",                           
		url: "http://www.qeto.com/module/tools/ajax_log.php",                              
		data: "code="+code+"&type="+type+"&action="+action+"&operator="+operator+"&note="+note+"&tag="+tag,    
		success: function(msg){ 
		}//end success
	}); 
}
//扑捉js错误
function CatchJSErrors() {
	var errorMsg = "当前页面脚本出现一个小错误!\n\n信息如下:" + arguments[0]; 
	errorMsg = errorMsg + "\n错误页面:" + arguments[1];  
	errorMsg = errorMsg + "\n错误行号:" + arguments[2]; 
	var Note = "\n\n学习平台已经自动捕获到了这个问题,我们将以最快的速度进行解决.\n\n请点确定取消这个操作,继续进行学习.";
	if(system_user_type1 ==1){
		alert(errorMsg + Note);  
	}
	AddSysLog(1,1,'JSerror','JS',escape(arguments[0]+"Line:"+arguments[2]),escape(arguments[1]));
    window.onerror=null;  
    return true;   	
}
window.onerror = CatchJSErrors;//自定义js错误处理方式
/*关闭即时提示帮助*/
function close_help_notice(){
	$("#help_notice").hide();
}
/**全局函数**/
String.prototype.replaceAll = function(search, replace){
	var regex = new RegExp(search, "g");
	return this.replace(regex, replace);
} 
/*整理单词*/
function clean_word(word){
	var re = word.replaceAll(' ','-'); 	
	re.replaceAll("  ",'-');re.replaceAll("   ",'-');//防止多个空格,再多就没办法了
	return re.replaceAll("'",'_');
}
//检测数组重复
function check_arr_cf(a){
     return   /(\x0f[^\x0f]+)\x0f[\s\S]*\1/.test("\x0f"+   a.join("\x0f\x0f")   +"\x0f");   
}
function echo(str){
	$('body').append(str);	
}
function trim (str, charlist) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: trim('    Kevin van Zonneveld    ');
    // *     returns 1: 'Kevin van Zonneveld'
    // *     example 2: trim('Hello World', 'Hdle');
    // *     returns 2: 'o Wor'
    // *     example 3: trim(16, 1);
    // *     returns 3: 6
 
    var whitespace, l = 0, i = 0;
    str += '';
    
    if (!charlist) {
        // default list
        whitespace = " \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000";
    } else {
        // preg_quote custom list
        charlist += '';
        whitespace = charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
    }
    
    l = str.length;
    for (i = 0; i < l; i++) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(i);
            break;
        }
    }
    
    l = str.length;
    for (i = l - 1; i >= 0; i--) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(0, i + 1);
            break;
        }
    }
    
    return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}
//空格替换成一个，且去掉首尾空格,包括全角
function trim2(str){
	str.replace(/(^[\s+|　+])|([\s+|　+]$)/g,"").replace(/\s+|　+/g," ");
	return str.replace(/(^[\s+|　+])|([\s+|　+]$)/g,"").replace(/\s+|　+/g," ");
}
//全角->半角
String.prototype.dbc2sbc = function ()
{
	return this.replace(/[\uff01-\uff5e]/g,function(a){return String.fromCharCode(a.charCodeAt(0)-65248);}).replace(/\u3000/g," ");
}
function urlencode( str ) {
    // *     example 2: urlencode('http://kevin.vanzonneveld.net/');
    // *     returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
    // *     example 3: urlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
    // *     returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'
                                     
    var histogram = {}, histogram_r = {}, code = 0, tmp_arr = [];
    var ret = str.toString();
    
    var replacer = function(search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };
    
    // The histogram is identical to the one in urldecode.
    histogram['!']   = '%21';
    histogram['%20'] = '+';
    
    // Begin with encodeURIComponent, which most resembles PHP's encoding functions
    ret = encodeURIComponent(ret);
    
    for (search in histogram) {
        replace = histogram[search];
        ret = replacer(search, replace, ret) // Custom replace. No regexing
    }
    
    // Uppercase for full PHP compatibility
    return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) {
        return "%"+m2.toUpperCase();
    });
    
    return ret;
}
/*查询单词,敲回车后响应*/
function word_search(word_val){//
		//var word = $("#word").val();
		word = trim(word_val);
		var Chreg=/([\u4e00-\u9fa5])/igm //is chinese?
		if( Chreg.test(word)){		
			window.open(dict_service_site + "/cn/" + urlencode(word));
			return false;
		}
			window.open(dict_service_site + "/q/" + clean_word(word));
		return false;
    	
} 
function CheckBrowser()
{
    var agt=navigator.userAgent.toLowerCase();
    if( ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1)) ){}else{	
        alert("请您使用IE浏览器!由于真人发声以及学习精灵需要Internet Explore浏览器的支持,\n请不要使用IE以外的浏览器,以免耽误你的学习.");
	}
}
var SelectOk=false;
var oTempRange=null;
function createSelectRange()//选中文字,就打上选择标记
{
 cleanSelectRange();
	if (document.selection != undefined){
		 if(document.selection.type=="Text")
		
		  {
		
		   oTempRange=document.selection.createRange();  //把选择的文本创建成 TextRange 对象
		
		   if(oTempRange.htmlText!=""){                    //检查选择的是否为空字符
		
			   RangePosLeft=oTempRange.boundingLeft;
		
			   RangePosTop =oTempRange.offsetTop+document.body.scrollTop+oTempRange.boundingHeight;
		
			   oTempRange.execCommand("BackColor",true,"#99ccff");;
		
			   //oTempRange.execCommand('Bold');
		
			   //oTempRange.execCommand('FontSize',false,10); 
		
			   //oTempRange.execCommand('Underline');
		
			   //oTempRange.execCommand("UnSelect");
		
			   SelectOk=true;
		
			  }
		
			  else
		
			   SelectOK=false;
		
		  }//end text
	}//end undefined
}
function cleanSelectRange()//清除标记
{
 if(oTempRange!=null)  //取消临时标记
    {
	   oTempRange.execCommand("BackColor",true,"#FF0");
	   oTempRange=null;
	   SelectOk=false;
	}
}
function getCookieVal (offset) { 
    var endstr = document.cookie.indexOf (";", offset);
    if (endstr == -1) endstr = document.cookie.length;
    return unescape(document.cookie.substring(offset, endstr)); 
}
function GetCookie (name) { 
    var arg = name + "="; var alen = arg.length;
    var clen = document.cookie.length; var i = 0;
    while (i < clen) { var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
    return getCookieVal (j);
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break; }
    return null;
}
function SetCookie (name, value) {
    var argv = SetCookie.arguments;
    var argc = SetCookie.arguments.length;
    var expires = (argc > 2) ? argv[2] : null;
    var path = (argc > 3) ? argv[3] : null;
    var domain = (argc > 4) ? argv[4] : null;
    var secure = (argc > 5) ? argv[5] : false;
    document.cookie = name + "=" + escape (value) +
    ((expires == null) ? "" : ("; expires=" +
    expires.toGMTString())) +
    ((path == null) ? "" : ("; path=" + path)) +
    ((domain == null) ? "" : ("; domain=" + domain)) +
    ((secure == true) ? "; secure" : ""); 
}
function MM_jumpMenu(selObj,restore){ //v3.0
  eval("location='"+selObj.options[selObj.selectedIndex].value+"'");
}
function ShowBorder(type){//显示输入框
		type.style.color = "#000000";
		type.style.background   = "#ffffff";
		type.style.borderLeft   = "#656565 1px solid ";
		type.style.borderRight  = "#656565 1px solid ";
		type.style.borderTop    = "#656565 1px solid ";
		type.style.borderBottom = "#656565 1px solid ";
}
function HideBorder(type){//显示输入框
		type.style.color = "#000000";
		type.style.background   = "#ffffff";
		type.style.borderLeft   = "#ffffff 1px solid ";
		type.style.borderRight  = "#ffffff 1px solid ";
		type.style.borderTop    = "#ffffff 1px solid ";
		type.style.borderBottom = "#ffffff 1px solid ";
}
function InputDisabled(type){//禁用输入框
	type.disabled=true;
}
function InputEnabled(type){//禁用输入框
	type.disabled=false;
}
//changed tr color
function changeRowColor(obj,colorset)
{
	 var  color=colorset;
	if(document.all)
	{
		if(obj.style.backgroundColor=='')
		{	
			obj.style.backgroundColor='#09f';
		}
		else
		{
			obj.style.backgroundColor='';
		}
	}
}
//取得选中的文本内容,兼容多种浏览器
function getSelectionText() {
	if(document.selection && document.selection.createRange) {//IE
		return document.selection.createRange().text;
	}else if(window.getSelection) {//Firefox, Google Chrome, Safari, Opera
		return window.getSelection().toString();
	}  
	return false;
} 
//从页面中选中flash对象
function thisMovie(movieName) {
	if (window.document[movieName])
	{
		return window.document[movieName];
	}
	if (navigator.appName.indexOf("Microsoft Internet")==-1)
	{
		if (document.embeds && document.embeds[movieName])
			return document.embeds[movieName];
	}
	else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
	{
		return document.getElementById(movieName);
	}
}
//从上下文菜单中选中的文本进行朗读
function contextmenu_speech(str){
		str = trim(str);
		str = str.replace('&acute;',"'");
		if(str=='') {
			//alert('你必须选中文本内容才可以朗读.');
			return false;
		}
		var Chreg=/([\u4e00-\u9fa5])/igm; //is chinese?
		//1.检查是否包含中文
		if( Chreg.test(str)){	
			/*
			if(str.lenght>100){
				//长度过长的以后使用汉英句典来查询
			}
		    if ( confirm('你选中的文本中包含中文,点确定查汉英字典,点取消重新选择.') ){
				window.open(dict_service_site + "/cn/" + urlencode(str));
			}else
			*/
				return false;
				
		}
		//2.判断是句子还是单词
		var reg_num=/([0-9])/igm; //is including number?
		if (reg_num.test(str) ||  str.indexOf(" ") >-1 || str.indexOf(",") >-1 || str.indexOf(".") >-1 || str.lenght>100)  {
			//2.1这种特征的为句子
			Web_TTS_Speak(str);//大量文本电子朗读
		}else{//2.2单词
			speech_word(str);//基本单词朗读
		}
		
}
function trace(str){
	$("#out").html(str);
}
//朗读单词,看情况使用,先尝试使用真人发声,如果没有,再使用电子语音.
//为通用播放模式
function speech_word(str){
	str = str.replace("‘","'");
    if(is_use_client==1){//客户端资源模式,呼叫客户端TTS进行朗读,节省服务器资源
		Do_Client_TTS_Speak(str);
		return true;
	}else{//真人模式,访问服务器资源	
		str = str.toLowerCase();
		var timstamp = (new Date()).valueOf();//给url地址加时间戳,骗过浏览器,不读取缓存,否则可能无法发声
		var real_player=thisMovie('real_player');
		if(real_player){			    
			real_player.call_flash_player(user_speech_br_us,str,timstamp);
		}

	}//end if is_use_client
}
//TTS发声,音质不高的模式,高音质TTS必须使用客户端,朗读句子或者大文本(使用电子语音)
function  Web_TTS_Speak(str){
	//改善易用性,去掉电子发声,以后视情况是否恢复
	return false;
	 //加入控制码
	 str = "\\Vol=65535\\\\Pit=50\\"+ str;
	 if(is_use_client==1){//高音质
	 	Do_Client_TTS_Speak(str);
	 }else{//一般音质	
	   try {//从TOP Frame获取TTS对象
			if(topnav)
	 			Do_TTS_Speak(str,'','','');
			else
				window.parent.topframe.Do_TTS_Speak(str,'','','');
	   }catch(e) {
		   //alert("对不起,你不能脱离我们的平台框架而使用语音功能,请登陆学习平台.");
	   }
	 }
}
//客户端高音质TTS
function Do_Client_TTS_Speak(str){
	//伪协议调用
	//window.location="";
}
//播放句子
function speech_sentence(str){
	//先从句子真人库中看看是否存在真人
	Web_TTS_Speak(str);//暂时电子方式
}
function Add2Panel(url, title, desc)//加入收藏夹
{
 		 if ((typeof(window.sidebar) == 'object') && (typeof(window.sidebar.addPanel) == 'function'))//Gecko       
	        window.sidebar.addPanel(title,url,desc);        
        else//IE        
	        window.external.AddFavorite(url,title);        
  return false;      
}
function to_search(word){
	if(word!='请输入单词进行查询' && word!=''){
		word_search(word);
	}
	return false;
}
