/**
 * 获取字符串的长度,一个中文字符两个英文字节来算.
 */
String.prototype.byteLength = function() {
	var len = 0;
	for (var i=0;i<this.length;i++){
		if (this.charCodeAt(i) > 255) 
			len += 2; 
		else 
			len++;
	}
	return len;
}

/**
 * 去掉字符串出现的空隔.
 */
String.prototype.trim = function() {
    return this.replace(/(^\s*)|(\s*$)/g,"");
}

/**
 * 去掉字符串中出现的左空格.
 */
String.prototype.lTrim = function() {
    return this.replace(/^\s*/g,"");
}

/**
 * 去掉字符串中出现的右空格.
 */
String.prototype.rTrim = function(){
    return this.replace(/\s*$/g, "");
}

/**
 * 判断字符串是不是空串.
 * @param {String} str 输入参数
 * @return 如果是空串返回true,否则返回false
 */
function isStringEmpty(str){	
	if (str == null || str.length == 0)
		return true;
	
	if(str.trim() == "")
		return true;
	
	return false;
}

/**
 * 判断输入的字符串是否都是中文.
 * @param {String} str 输入的字符串
 * @return 如果都是中文返回true,否则返回false.
 */
function checkIsAllChineseString(str){
	if (str == null || str.length == 0)
		return false;
	var pattern = /^([\u4e00-\u9fa5]+)$/;
	return pattern.test(str);
}


/**
 * 判断输入的两个字符串是否相等.
 * @param {String} str1 比较参数一.
 * @param {String} str2 比较参数二.
 * @param {String} isIgnoreCase 是否忽略大小写.
 * @return 如果相等返回true,否则返回false.
 */
function isStringEqual(str1, str2, isIgnoreCase) {
	if (str1 == null) 
		str1 = ''; 
	else {
		if (typeof str1 == 'number') str1 = '' + str1;
		str1 = str1.trim();
		if (isIgnoreCase)
			str1 = str1.toLowerCase();
	}
	if (str2 == null) 
		str2 = ''; 
	else {
		if (typeof str2 == 'number') str2 = '' + str2;
		str2 = str2.trim();
		if (isIgnoreCase)
		str2 = str2.toLowerCase();
	}	
	return (str1 == str2);
}



/**
 * 判断浏览器是否IE.
 * @return 如果是IE返回true,否则返回false.
 */
function isME() {
	var sAgent = navigator.userAgent.toLowerCase() ;	
	if (sAgent.indexOf("msie") != -1) {	
		return true;//IE;
	} else { 
		return false;//other;
	}		
}

/**
 * 下拉菜单初始化.
 * 主要对下拉菜单进行初始化动作,主要用于邮件列表，页面的下拉菜单。
 */
function menu_init() {		
	var ocomposeMenu = document.getElementById('composeMenu');
	var oSelectMenu = document.getElementById('selectMenu');
	var oReplayMenu = document.getElementById('replyMenu');	
	var oForwardMenu = document.getElementById('forwardMenu');		
	var oMoveMenu = document.getElementById('moveMenu');		
	var oDeleteMenu = document.getElementById('deleteMenu');		
	var oMarkMenu = document.getElementById('markMenu');		
	var oAddtoMenu = document.getElementById('addtoMenu');		
	var oCviruseMenu = document.getElementById('cviruseMenu');		
	var oSaveAdrsMenu = document.getElementById('saveAdrsMenu');	
	var oCopyMenu = document.getElementById('copyMenu');
	
	if(ocomposeMenu) {			
		ocomposeMenu.onclick = arrow_click;
		//ocomposeMenu.onmouseover = menu_mouseover;
		//ocomposeMenu.onmouseout = menu_mouseout;		
	}

	if(oSelectMenu) {
		oSelectMenu.onclick = arrow_click;
		//oSelectMenu.onmouseover = menu_mouseover;
		//oSelectMenu.onmouseout = menu_mouseout;		
	}

	if(oReplayMenu) {				
		oReplayMenu.onclick = arrow_click;
		//oReplayMenu.onmouseover = menu_mouseover;
		//oReplayMenu.onmouseout = menu_mouseout;		
	}

	if(oForwardMenu) {		
		oForwardMenu.onclick = arrow_click;
		//oForwardMenu.onmouseover = menu_mouseover;
		//oForwardMenu.onmouseout = menu_mouseout;		
	}
	
	if(oMoveMenu) {		
		oMoveMenu.onclick = arrow_click;
		//oMoveMenu.onmouseover = menu_mouseover;
		//oMoveMenu.onmouseout = menu_mouseout;		
	}

	if(oDeleteMenu) {		
		oDeleteMenu.onclick = arrow_click;
		//oDeleteMenu.onmouseover = menu_mouseover;
		//oDeleteMenu.onmouseout = menu_mouseout;		
	}

	if(oMarkMenu) {		
		oMarkMenu.onclick = arrow_click;
		//oMarkMenu.onmouseover = menu_mouseover;
		//oMarkMenu.onmouseout = menu_mouseout;		
	}	
	
	if(oAddtoMenu) {		
		oAddtoMenu.onclick = arrow_click;
		//oAddtoMenu.onmouseover = menu_mouseover;
		//oAddtoMenu.onmouseout = menu_mouseout;		
	}	
	
	if(oCviruseMenu) {	
		oCviruseMenu.onclick = arrow_click;
		//oCviruseMenu.onmouseover = menu_mouseover;
		//oCviruseMenu.onmouseout = menu_mouseout;		
	}	
	
	if(oSaveAdrsMenu) {	
		oSaveAdrsMenu.onclick = arrow_click;
		//oSaveAdrsMenu.onmouseover = menu_mouseover;
		//oSaveAdrsMenu.onmouseout = menu_mouseout;		
	}	
	
	if (oCopyMenu) {	
		oCopyMenu.onclick = arrow_click;
		//oCopyMenu.onmouseover = menu_mouseover;
		//oCopyMenu.onmouseout = menu_mouseout;		
	}		
	
}

/**
 * 隐藏菜单.
 */
function hiddenWmailMenu() {
	if (typeof g_oMenu != 'undefined' && g_oMenu) {	
		g_oMenu.style.visibility = 'hidden';		
		//g_oMenu = null;
		//document.onclick = null;	
	} 
	return false;
}



/**
 * 点击下拉菜单时触发的事件.
 * @param {Object} p_oEvent
 */
function arrow_click(p_oEvent) {	
	document.Selects = document.getElementsByTagName('select');
	if(document.Selects[0]) {	
		var nSelects = document.Selects.length-1;
		for(var i=nSelects;i>=0;i--) document.Selects[i].style.visibility = 'hidden';
	}
	
	var oEvent = p_oEvent ? p_oEvent : window.event;
			
	if(p_oEvent) {
		oEvent.stopPropagation();
	} else {
		oEvent.cancelBubble = true;	
	}
	hiddenWmailMenu();
	
	var oTab = this.parentNode.parentNode;	
	var nTop = oTab.offsetTop+oTab.parentNode.offsetHeight;
	//because of the menu is image.the imamge height is diffenent from IE and FireFox
	if (isME())
		nTop = oTab.offsetTop+oTab.parentNode.offsetHeight;
	else
		nTop = oTab.offsetTop+oTab.parentNode.offsetHeight-22;	
	var sTopValue = ((oTab.Selected) ? (nTop+2) : (nTop-1)) + "px";
	
	g_oMenu = document.getElementById(this.parentNode.href.split('#')[1]);			
	g_oMenu.style.top = sTopValue;	
	g_oMenu.style.left = oTab.offsetLeft+"px";				
	
	g_oMenu.style.display = "block";	
	g_oMenu.style.visibility = "visible";
	document.onclick = documentClickWmail;	
	return false;
}


/**
 * 点击窗口时触发的事件.
 * 点击窗口时要隐藏菜单.
 */
function documentClickWmail() {
	if(document.Selects) {
		var nSelects = document.Selects.length-1;		
		for(var i=nSelects;i>=0;i--) document.Selects[i].style.visibility = 'visible';
	}
	hiddenWmailMenu();
}

/**
 * 下拉菜单中鼠标浮上去的事件.
 */
function menu_mouseover() {	
	if(!this.Selected) this.className = "btnHover";	
	return false;
}

/**
 * 下拉菜单中鼠标移开的事件.
 */
function menu_mouseout() {
	if(!this.Selected) this.className = "btn";
	return false;	
}


/**
 * 对B,K,M等单位进行相应转换，把大于1024 的当前单位升一级，小于1024的保持不变.
 * 应用此函数的前提是需知道被转化数据的当前单位是什么。
 * @param {int} size 准备转化的数值
 * @param {int} pres 需要精确的小数点后面的位数
 * @param {String} unit 需要转化成的单位
 */
function byteToKM(size,pres,unit) {
	var pre=1;	
	var sizeInt;
	var temp1,temp2;
	for (var i=0;i<pres;i++) {	
		pre = pre*10;
	}
	
	if (size >= 1024) {	
		sizeInt = size/1024*pre+"";				
		if (sizeInt.indexOf(".")>0) {			 	
		 	temp= sizeInt.split(".");
		 	temp1 = temp[0];
		 	temp2 = (temp[1]).charAt(0);				 	
			if (temp[2]>4) {			
				temp1 = temp1+1;			
			}		
		} else {				
			temp1 = sizeInt;
		}
		temp2 = temp1.substring(0,temp1.length-pres);
		var cc = temp1.substring(temp1.length-pres,temp1.length);
		return temp2+"."+cc+unit;	
	} else {
		if (unit == "K")
			return size+"B";
		if (unit == "M")			
			return size+"K";
	}		
}

/**
 * 把以B为单位的数据转化成以K为单位的数据.
 * @param {int} size 需要进行单位转换的原数据.
 * @param {int} pres 需要精确的精度.
 */
function byteToK(size,pres) {
	var pre=1;	
	var sizeInt;
	var temp1,temp2;
	for (var i=0;i<pres;i++) {	
		pre = pre*10;
	}
	sizeInt = size/1024*pre + "";			
	if (sizeInt.indexOf(".") > 0) {		 	
	 	temp= sizeInt.split(".");
	 	temp1 = temp[0];
	 	temp2 = (temp[1]).charAt(0);				 	
		
		if (temp2 > 4) {					
			var add1 = parseInt(temp1)+1;			
			temp1 = add1;						
		}//是否有进位
		
		if (temp1 == 0) {
			return "0.01";	
		}
		if ((temp1+"").length == 1) {			
			return 	"0.0"+temp1+"";
		}
		if ((temp1+"").length == 2) {
			return 	("0."+temp1+"");
		}				
	} else {
		temp1 = parseInt(sizeInt);
	}
	temp1 = temp1 + "";	
	temp2 = (temp1 + "").substring(0,temp1.length - pres);
	var cc = temp1.substring(temp1.length - pres,temp1.length);	
	return temp2 + "." + cc;
}

/**
 * 检查输入的日期是否合法.
 * @param {int} Y 需检查的年.
 * @param {int} M 需检查的月.
 * @param {int} D 需检查的天.
 * @param {int} H 需检查的时.
 * @return boolean 如果日期合法则有返回true，否则返回false
 */
function valDate(Y,M,D,H) {
	var months= new Array(31,28,31,30,31,30,31,31,30,31,30,31); 
	leap= false; 
	if(((Y % 4 == 0) && (Y % 100 != 0)) || (Y %400 == 0)) 
		leap = true; 
	if((D < 1) || (D > 31) || (M < 1) || (M > 12) || (H < 0) || (H>24))
		return(false); 
	
	if((D > months[M-1]) && !((M == 2) && (D > 28))) 
		return(false); 
	
	if(!(leap) && (M == 2) && (D > 28)) 
		return(false); 
	
	if((leap) && (M == 2) && (D > 29)) 
		return(false); 		
	return true;
}

/**
 * 决断两次输入的内容是否相同.
 * @param {String} inputstr 第一次输入.
 * @param {String} reinputstr 第二次输入.
 * @return boolean 如果相等，返回true,否则返回false.
 */
function checkTwiceConfirm(inputstr,reinputstr) {		
	var str1 = inputstr.value;
	var str2 = reinputstr.value;
		
	if(str1 != str2) {	
		alert(proStr.PwdConfirm);
		reinputstr.focus();
		reinputstr.select();		
		return false;
	}	
	return true;
}

/**
 * 初始化下拉框的被选项.
 * @param {Object} formObj 要贴到的form表单对象.
 * @param {Object} selectsObj 按顺序保存所有下拉框选项的值.
 */
function initSelect(formObj,selectsObj) {
	var formObj = document.getElementById(formObj);	
	var n =0;	
	for(var i=0;i<formObj.length;i++) {
		var formItem = formObj.elements[i];			
		if (formItem.type == "select-one") {			
			formItem.value = selectsObj[n];
			n++;
		}
	}
}

/**
 * 读取指定cookie，cookie名分别为:popproxy_id1.
 * @param {Object} name
 */
function getCookie(name) {	
	var strCookie = document.cookie;
	var cookieName = name +"=";
	var valueBegin,valueEnd,value;
	valueBegin = strCookie.indexOf(cookieName);
	if (valueBegin==-1) return null;
	valueEnd = strCookie.indexOf(";",valueBegin);
	if (valueEnd==-1)
		valueEnd = strCookie.length;
	value = strCookie.substring(valueBegin+cookieName.length,valueEnd);
	return value;
}


/**
 * 保存cookie.
 * @param {String} name cookie的名字.
 * @param {String} value 要保存的值.
 * @param {String} path 
 * @param {String} expires
 * @param {String} domain
 * @param {String} secure
 */
function storeCookie(name,value,path,expires,domain,secure) {
	var strCookie=name+"="+value;
	if (expires) {
		var curTime= new Date();
		curTime.setTime(curTime.getTime()+expires*24*60*60*1000);
		strCookie+=";expires="+curTime.toGMTString();
	} else {
		var Days = 30;
		var curTime= new Date();
		curTime.setTime(curTime.getTime()+Days*24*60*60*1000);
		strCookie+=";expires="+curTime.toGMTString();
	}
	strCookie +=(path)?";path="+path:"";
	strCookie +=(domain)?";domain="+domain:"";
	strCookie +=(secure)?";path="+secure:"";
	document.cookie=strCookie;
}

/**
 * 控制只能输入数字.
 * @param {Object} oInput 接入输入的控件.
 */
function onlyNum(oInput) {
	oInput.value = oInput.value.replace(/\D/gi,'');
}

/**
 * 解析js国际化字段中的变量.
 * @param {String} originText 需要解析的国际化变量.
 * @param {String} value0 需要替换的变量值.
 */
function textAnalyseValue0(originText,value0) {
	var resultText = "";
	if (originText.indexOf("{0}") >= 0) {
		resultText = originText.replace("{0}",value0);
	}
	return resultText;
}

/**
 * collapse the left side nav bar.
 * @param contendId {String} id of the element to collapse.
 * @param pictureId {String} id of the image to change.
 */
function collapse(contendId,pictureId) {
	var contentEle = document.getElementById(contendId);
	var pictureEle = document.getElementById(pictureId);
	if (contentEle == null || pictureId == null) {
		return;
	}
	
	var oldPicSrc = pictureEle.src;
	var newPicSrc = oldPicSrc;
	if (oldPicSrc.indexOf('close_') >= 0) {
		newPicSrc = oldPicSrc.replace('close_', 'open_');
	} else if (oldPicSrc.indexOf('open_') >= 0) {
		newPicSrc = oldPicSrc.replace('open_', 'close_');
	} else {
		return;	
	}
	
	if (contentEle.style.display == 'none') {
		contentEle.style.display='';
	} else {
		contentEle.style.display='none'; 
	}
	pictureEle.src = newPicSrc;
}

