/* 
 *CHHD架构JS公用方法文件
 */

//判断是否为空
function checkNull(str) {
  if (str == null || str == "" )  {
	return false;
  }
  else {
	return true;
  }
}

//检查对象的值是否为空
function checkObjNull(obj,msg){
	if(!checkNull(obj.value)){
		alert(msg + "不能为空");
		obj.focus();
		return false;
	}
	return true;
}

//菜单收缩
function collect(obj){
	if(obj!=null){
		obj.style.display="none";
	}
}
//菜单展开
function expand(obj){
	if(obj!=null){
		obj.style.display="";
	}
}
//查看目标中是否包含源项
function compareOptions(obj,tg)
{
    if(obj==null || obj.options==null)
        return false;

    if(obj.multiple && obj.selectedIndex==-1)
		return false;

    if(tg==null || tg.options==null)
        return false;

    var vl = obj.options(obj.selectedIndex).value;

    for(var i=tg.options.length-1; i>=0; i--){
        if(tg.options(i).value==vl){
            return false;
        }
    }
    return true;
}

//检查对象是否包含中文
function checkZHChar(obj,msg){
    if(!obj.value.IsOnlyChar()){
		alert(msg + "不能带中文字符");
		obj.focus();
		return false;
    }
    return true;
}

//检查对象是否包含符号'-'
function checkSign(obj,signObj){
	var l=obj.value.length;
    for(var i=0;i<l;i++){
        if (obj.value.charCodeAt(i) == signObj.charCodeAt(0)){
        	alert("不能带有符号'" + signObj  + "',请重新填写");
        	return false;
				}
    }
  return true;
}

//检查对象的值长度
function checkObjMaxLen(obj,len,msg){
	if(obj.value.Len()>len){
		alert(msg);
		obj.focus();
		return false;
	}
	return true;
}

//取radio的值
//obj对象数组
//有radio被选择，返回其值，否则返回res
function getRadioValue(obj,res){
	if(obj==null) return res;
	if(obj.length==null){
		if(obj.checked) return obj.value;
	}else{
		for(i=0;i<obj.length;i++){
			if(obj[i].checked)
				return obj[i].value;
		}
	}
	return res;
}

//判断是否有被选择的复选框
function checkCheckBoxValue(formName,checkboxName){	

	var hasCheck = false;	
	var form = document.all.item(formName);
	//var elements = form.elements[checkboxName];
	var elements=document.getElementsByName(checkboxName)	
	for (var i=0;i<elements.length;i++){		
		var e = elements[i];		
		if(e.checked){		
		hasCheck = true;
		
		}
	}
	return hasCheck;
}

//返回复选框选中数量
function checkCheckBoxNum(checkboxName){	

	var hasCheck = 0;	
	var elements=document.getElementsByName(checkboxName)	
	for (var i=0;i<elements.length;i++){		
		var e = elements[i];		
		if(e.checked){		
			hasCheck++;
		}
	}
	return hasCheck;
}

//返回被选中的复选框的值，并进行合并，每个值间以","分隔
function contactCheckBoxValue(checkboxName){	
	var hasCheck = "";	
	var tmp = 0;
	var elements=document.getElementsByName(checkboxName)	
	for (var i=0;i<elements.length;i++){		
		var e = elements[i];		
		if(e.checked){		
			if(tmp>0){
				hasCheck = hasCheck + ",";
			}
			hasCheck =  hasCheck + e.value;
			tmp++;
		}
	}
	return hasCheck;
}

//选中所有复选框
function checkBoxAll(checkObj, itemName){
	var itemObj = document.getElementsByName(itemName);
	for (var i=0; i<itemObj.length; i++)
		itemObj[i].checked = checkObj.checked;
}

//select框全选
function selectTotal(obj){
  	var res = false;
  	if(obj!=null && obj.options!=null && obj.options.length!=0){
  		for (i=0; i<obj.options.length; i++)
      		obj.options[i].selected = true;
      res = true;
  	}
  	return res;
}

/**
 * 获取select框的显示内容
 *flag --
 *     -- 1,如果value为空，text也返回空
 */
function getSelectText(obj,flag){
	if(obj==null || obj.options==null) return "";
	if(flag==1 && obj.value.length==0) return "";
	for(i=0; i<obj.options.length; i++){
		if(obj.options[i].selected){
			return obj.options[i].text.Trim();
		}
	}
	 return "";
}

//获取select框的值
function getSelectValue(obj){
	if(obj==null || obj.options==null) return "";
	for(i=0; i<obj.options.length; i++)
		if(obj.options(i).selected){
			return obj.options(i).value;
		}
}

//获取select框的选中元素下标
function getSelectIndex(obj){
	if(obj==null || obj.options==null) return "";
	var Num = 0;
	for(i=0; i<obj.options.length; i++){
		if(obj.options(i).selected){
			Num = i;
			return Num;
		}
	}
	return "";
}

//获取可多选select框的选中个数
function getSelectNum(obj){
	if(obj==null || obj.options==null) return "";
	var Num = 0;
	for(i=0; i<obj.options.length; i++){
		if(obj.options(i).selected){
			Num++;
		}
	}
	return Num;
}
	
//只允许多选框选择单个判断
function checkSelectNum(obj){
	if(getSelectNum(obj)>1){
		alert("只能选择一个内容");
		return false;
	}
	return true;
}

//返回多选select的值，并进行合并，每个值间以","分隔
function contactSelectValue(obj){	
	if(obj==null || obj.options==null) return "";
	var selectValue = "";
	var tmp = 0;
	for(i=0; i<obj.options.length; i++){
		if(obj.options(i).selected){
			if(tmp>0){
				selectValue += ",";
			}
			selectValue += obj.options(i).value;
			tmp++;
		}
	}
	return selectValue;
}

//选中指定select对象的指定值
function toSelect(obj,selValue){
	for(var i = 0 ; i<obj.options.length;i++){
		var value=obj.options(i).value;
		if(value==selValue){
			obj.options(i).selected=true;
			return true;
		}
	}
	return false;
}
	
	/*
	层级更新校验；
	rs是层级改动结果；
	prsc是前一个option；
	oc是后一个option；
	OP是两个option代表层级的级差；
*/
function checkOrder(obj){
	
	var rs
	if(!obj){
		alert("层级对象不能为空");
		return false;
	}
  prsc = 0;
	for(var i=0; i<obj.length; i++){
		var oc = obj[i].text;
		var ocl = oc.substr(0,oc.lastIndexOf("-") + 1).length;
		var OP = ocl - prsc;
		if(OP>4){
			alert("层级（" + oc + "）所属关系存在问题，不能跨越两个层级，请修改!");
			return false
		}else{
			obj.options[i].value = padLeft(obj.options[i].value, 
    			"-", countChar(obj.options[i].text));
    	prsc = ocl
		}
	}
	return true;
}	

//判断是否为数字
function  checknum(obj,msg)  {
    if (isNaN(obj.value) ) {
        obj.focus();
        alert(msg + "必须为数字");
        return false;
    }
    return true;
}

//为String 对象添加去全部空格、去左边空格、去右边空格的函数
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, "");
}
//考虑汉字为双字节情况下的字符串长度
String.prototype.Len = function(){
	var l=this.length;
    var n=l
    for(var i=0;i<l;i++){
		//如果是汉字
        if (this.charCodeAt(i) < 0 || this.charCodeAt(i) > 255){
        	n=n+1;
				}
    }
    return n;
}
//字符串是否只为字符，汉字考虑为ascii大于255
String.prototype.IsOnlyChar = function(){
    for(var i=0; i<this.length; i++){
    	if (this.charCodeAt(i) < 0 || this.charCodeAt(i) > 255)
      	return false;
    }
    return true;
}

function getHTTPObject(){
	var http_request = false;
  if (window.ActiveXObject) { // IE浏览器
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	else if(window.XMLHttpRequest) { //Mozilla 浏览器
		http_request = new XMLHttpRequest();
		http_request.overrideMimeType('text/xml');
	}

	if (!http_request) { // 异常，创建对象实例失败
		window.alert("系统不能辨别您当前使用的浏览器，请使用IE6访问.");
	}
  return http_request;
}


//获取xmldom对象
function getXmlObject(){
	if (document.implementation && document.implementation.createDocument)
	{
		xmlDoc = document.implementation.createDocument("", "", null);
	}
	else if (window.ActiveXObject)
	{
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
 	}
	else
	{
		alert('系统不能辨别您当前使用的浏览器，请使用IE6访问.');
		return;
	}
	return xmlDoc;
}

//tgUrl 目标地址
//toGetXml 是否返回xml对象
function ascnQry(tgUrl, toGetXml){

    var xmlhttp = null;
    xmlhttp = getHTTPObject();
    if(!xmlhttp) {
    	return;
    }
		tgUrl = encodeURI(tgUrl);
		tgUrl += "&_ajaxpatch=" + (new Date()).getMilliseconds();

    xmlhttp.onreadystatechange = handleStateChange;
    xmlhttp.open("post", tgUrl, false);
   // xmlhttp.setrequestheader("cache-control","no-cache");不兼容火狐
    xmlhttp.send(null);

    if(toGetXml){
        return xmlhttp.responseXml;
    }else{
        return xmlhttp.responseText;
    }

    function handleStateChange(){
    	if(xmlhttp.readyState==2){
    		window.status = "正在提交数据，请稍等......";
        }
        else if(xmlhttp.readyState==4){
    		window.status = "完毕";
            if (xmlhttp.status != 200) {
    	        alert("系统异常，请稍后再试");
    	    }
        }
    }
}

//计算oriStr中最左侧的'-'字符的数量
function countChar(oriStr){
	if(oriStr.length==0){
		return 0;
	}
	var a=0;
	var str=oriStr

	while(str.length!=a){
  	a=str.length;
    str=str.replace(/^-/,"");
  }
	return oriStr.length-str.length;
}
	
//左填充
//oriStr待处理字符串
//cr填充字符
//wl填充次数
function padLeft(oriStr, cr, wl){
	for(crpos=0; crpos<wl; crpos++){
		oriStr = cr + oriStr;
	}
	return oriStr;
}

// 替换特殊字符
function HTMLEncode(text){
	text = text.replace(/&/g, "&amp;") ;
	text = text.replace(/"/g, "&quot;") ;
	text = text.replace(/</g, "&lt;") ;
	text = text.replace(/>/g, "&gt;") ;
	text = text.replace(/'/g, "&#146;") ;
	text = text.replace(/\ /g,"&nbsp;");
	text = text.replace(/\n/g,"<br>");
	text = text.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;");
	return text;
}

//添加当前页到收藏夹
function add_favorite(){
	var url=document.URL;
	var title=document.title;
	if (document.all) window.external.AddFavorite(url,title);
	else if (window.sidebar) window.sidebar.addPanel(title,url,"");
}