﻿/************************************邮箱提示 yjz*************************************/
var mxDomains = [{"name":"163.com", "type":"@@@.com", "point":0}, {"name":"qq.com", "type":"@@.com", "point":0}, {"name":"126.com", "type":"@@@.com", "point":0}, {"name":"sina.com", "type":"@@@@.com", "point":0}, {"name":"yahoo.com.cn", "type":"@@@@@.com.cn", "point":0}, {"name":"hotmail.com", "type":"@@@@@@@.com", "point":0}, {"name":"yahoo.cn", "type":"@@@@@.cn", "point":0}, {"name":"yeah.net", "type":"@@@@.net", "point":0}, {"name":"sohu.com", "type":"@@@@.com", "point":0}, {"name":"tom.com", "type":"@@@.com", "point":0}, {"name":"gmail.com", "type":"@@@@@.com", "point":0}, {"name":"vip.qq.com", "type":"@@@@@@.com", "point":0}, {"name":"live.cn", "type":"@@@@.cn", "point":0}, {"name":"21cn.com", "type":"@@@@.com", "point":0}, {"name":"yahoo.com", "type":"@@@@@.com", "point":0}, {"name":"msn.com", "type":"@@@.com", "point":0}, {"name":"sina.com.cn", "type":"@@@@.com.cn", "point":0}];
var mbIsPromtWindow = false;
var msBodyPosition = "";
domReady(function(){
	document.body.style.position = "relative";
	if(document.getElementsByName('emailAddr')[0]!=null && mxDomains!=null){
		var meEmail = document.getElementsByName('emailAddr')[0];
		createPromtElem(meEmail);
		addEvent(meEmail, 'blur', promtEmail, meEmail, mxDomains);
		addEvent(meEmail, 'blur', resetDomains, mxDomains);
	}					  
});

function createPromtElem(aeRefObj){
	var newEmailDiv = document.createElement("div");
	newEmailDiv.setAttribute("id", "emailPromtList");
	newEmailDiv.style.cssText = "position:absolute;background:#fff;display:none;border:1px solid #b7b7b7";
	var loDivPos = getElePagepos(aeRefObj);
	newEmailDiv.style.left = loDivPos.l+"px";
	newEmailDiv.style.top = (loDivPos.t + loDivPos.h)+"px";
	document.body.appendChild(newEmailDiv);
	return document.getElementById("emailPromtList");
}
function getElePagepos(aeP){
	var pos = {"l":0, "t":0, "w":0, "h":0};
	var leObj = aeP;
	pos.w = leObj.offsetWidth;
	pos.h = leObj.offsetHeight;

	do{
		if(leObj.offsetParent == null){break;}
		pos.l += leObj.offsetLeft;
		pos.t += leObj.offsetTop;
	}while(leObj = leObj.offsetParent);
	if(navigator.userAgent.indexOf("Apple") != -1){
		pos.t += 22;//根据页面而定，safari不认没有定高的img
	}
	return pos;
}
//即时提示
function promtEmailIntel(aeP, axSrcBuf){
	var lsEmail =  aeP.value;
	var liElLen = lsEmail.length;
	var liAddrIdx = lsEmail.indexOf("@");

	if(liAddrIdx != -1 && liAddrIdx<liElLen-1){
		lsValue = lsEmail.substring(liAddrIdx+1, liElLen);
		var lcCheckChar = lsValue.charAt(lsValue.length-1);
		promtIntel(lcCheckChar, lsValue.length-1, axSrcBuf);
		return true;
	}else{
		return false;
	}
	
}
//一次性提示
function promtEmail(aeP, axSrcBuf){
	
	var lsEmail =  aeP.value;
	var liElLen = lsEmail.length;
	var lsValue = "";
	var liAddrIdx = lsEmail.indexOf("@");
	for(var i=0; i<axSrcBuf.length; i++){
		if(axSrcBuf[i].name == lsEmail.substring(liAddrIdx+1, liElLen)){
			return false;
		}
	}
	if(liAddrIdx != -1 && liAddrIdx<liElLen-1){		
		lsValue = lsEmail.substring(liAddrIdx+1, liElLen);
		for(var i=0; i<(liElLen-liAddrIdx-1); i++){
			promtIntel(lsValue.charAt(i), i, axSrcBuf);
		}
		var lxResult = findKeys(axSrcBuf);
		
		var lePromtDiv = document.getElementById("emailPromtList");
		if(lxResult.length == 0){
			return false;
		}

		lePromtDiv.innerHTML = "";
		lePromtDiv.style.display = "block";
		var lsCSSText = "padding:2px;border-bottom:1px solid #b7b7b7;font-size:12px;color:#039;cursor:pointer";
		for(var i=0; i<lxResult.length; i++){
			var leDiv = document.createElement("div");
			leDiv.setAttribute("id", "promtListCon"+i);
			leDiv.style.cssText = lsCSSText;
			leDiv.innerHTML = "&nbsp;<b>"+lsEmail.substring(0, liAddrIdx+1)+lxResult[i].name+"</b>&nbsp;?纠错建议。";
			lePromtDiv.appendChild(leDiv);
			var lePromtListCon = document.getElementById("promtListCon"+i);
			addEvent(lePromtListCon, "click", clickSelect, lsEmail.substring(0, liAddrIdx+1)+lxResult[i].name, lePromtDiv);
		}
		mbIsPromtWindow = false;
		addEvent(document, "click", function(){
			if(mbIsPromtWindow)lePromtDiv.style.display="none";
		});
		setTimeout(function(){mbIsPromtWindow = true;}, 500);
		//setTimeout(function(){lePromtDiv.style.display = "none";}, 5000);//5秒钟后自动消失
		return true;
	}else{
		return false;
	}
	function clickSelect(as, aeThisP){
		aeP.value = as;
		aeThisP.style.display = "none";
	}
}
//智能提示:给库里的域加分设权重法
function promtIntel(asVal, aiIndex, axSrcBuf){
	var lsValue =  asVal; 
	var lxScDom = [];
	var lxMaxVal = [];
	//遍历所有有域名
	for(var i=0; i<axSrcBuf.length; i++){
		var liIndex = axSrcBuf[i].name.indexOf(asVal);
		var liIndexDo =  axSrcBuf[i].type.indexOf(asVal);
		//查找是否存在新输入的字符,这里默认为最后一个字符,存在则加3分
		if(liIndex != -1 && liIndexDo!=liIndex){
			axSrcBuf[i].point += 3; 
			//如果位置匹配则追加3分,如果位置差为1则追加1分,其它不加分
			if(liIndex == aiIndex){
				axSrcBuf[i].point += 3;
			}else if(Math.abs(aiIndex - liIndex) < 2){
				axSrcBuf[i].point += 1;
			}else if(Math.abs(aiIndex - liIndex) > 2){
				axSrcBuf[i].point -= 3;
			}
		}
	}
}
//分析最高分找出所需值
function findKeys(axVals){
	var lxMaxVal = [];
	axVals.sort(function (a, b){
 		return b.point-a.point;
	});
	if(axVals[0] != null){
		lxMaxVal.push(axVals[0]);
	}
	//如果最大值和最小值相等则表示没有权重值
	if(axVals[0].point == axVals[axVals.length-1].point){
		return [];
	}
	//如果最高分小于7分则不符合要求：也即要达到存在两个字母，并有一个位置差小于1的水平之上
	if(axVals[0].point<7){
		return [];
	}
	for(var i=1; i<axVals.length; i++){
		if(axVals[0].point == axVals[i].point){
			lxMaxVal.push(axVals[i]);
		}else{
			break;
		}
	}
	return lxMaxVal;
}
//重置域库
function resetDomains(axDomains){
	for(var i=0; i<axDomains.length; i++){
		axDomains[i].point = 0;	
	}
}
function getStyle(aeP, asName){
	if(aeP.style[asName]){
		return aeP.style[asName];
	}else if(aeP.currentStyle){
		return aeP.currentStyle[asName];
	}else if(document.defaultView && document.defaultView.getComputedStyle){
		asName = asName.replace(/([A-Z])/g, "-$1");
		asName = asName.toLowerCase();
		
		var s = document.defaultView.getComputedStyle(aeP, "");
		return s && s.getPropertyValue(asName);
	}else{
		return null;
	}
	
}
/**
 *绑定事件, 可传参数
 */
function addEvent(aeP, asEvent, aoHandler, axParam){
	var args = Array.prototype.slice.call(arguments,3);
	var handler =  function(){
		aoHandler.apply(null, args);
	}
	
	if(navigator.appName.indexOf("Microsoft Internet Explorer") != -1){
		aeP.attachEvent("on"+asEvent, handler);
	}else{
		aeP.addEventListener(asEvent, handler, false);
	}
}

function domReady(f){
	if(domReady.done){return f();}
	if(domReady.timer){
		domReady.ready.push(f);
	}else{
		addEvent(window, "load", isDOMReady);
		domReady.ready = [f];
		domReady.timer = setInterval(isDOMReady, 13);
	}
}
function isDOMReady(){
	if(domReady.done){return false;}
	if(document && document.getElementsByTagName && document.getElementById && document.body){
		clearInterval(domReady.timer);
		domReady.timer = null;
	}
	for(var i=0; i<domReady.ready.length; i++){
		domReady.ready[i]();
	}
	domReady.ready = null;
	domReady.done = true;
}