var XMLHttpReq;//全局的JS Ajax对象


 /**
 * 创建AJAX请求
 * @return 请求对象
 */
function createXMLHttpRequest() 
{
    if(window.XMLHttpRequest)
    {	  
        XMLHttpReq = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
        try
        {
            XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
     	}
     	catch(e)
     	{
       		try
       		{
         		XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
       		}
       		catch(e)
       		{
       		}
     	}
   }
}

 function chkpwd(obj,htmlObj){
  var t=obj.value;
  var id=getResult(t);
  
  //定义对应的消息提示
  var msg=new Array(4);
  msg[0]="密码过短。";
  msg[1]="密码强度差。";
  msg[2]="密码强度良好。";
  msg[3]="密码强度高。";
  
  var sty=new Array(4);
  sty[0]=-45;
  sty[1]=-30;
  sty[2]=-15;
  sty[3]=0;
  
  var col=new Array(4);
  col[0]="gray";
  col[1]="red";
  col[2]="#ff6600";
  col[3]="Green";
  
  //设置显示效果
  var bImg="myfile/images/pwdpic1.gif";//一张显示用的图片
  var sWidth=300;
  var sHeight=15;
  var Bobj=document.getElementById(htmlObj);

  Bobj.style.fontSize="12px";
  Bobj.style.color=col[id];
  Bobj.style.width=sWidth + "px";
  Bobj.style.height=sHeight + "px";
  Bobj.style.lineHeight=sHeight + "px";
  Bobj.style.background="url(" + bImg + ") no-repeat left " + sty[id] + "px";
  Bobj.style.textIndent="20px";
  Bobj.innerHTML="*&nbsp;检测提示：" + msg[id];
 }
 
 //定义检测函数,返回0/1/2/3分别代表无效/差/一般/强
 function getResult(s){
  if(s.length < 4){
   return 0;
  }
  var ls = 0;
  if (s.match(/[a-z]/ig)){
   ls++;
  }
  if (s.match(/[0-9]/ig)){
   ls++;
  }
   if (s.match(/(.[^a-z0-9])/ig)){
   ls++;
  }
  if (s.length < 6 && ls > 0){
   ls--;
  }
  return ls
 }


/**
 * 页面输入文本框提示用户输入类型
 */
function doviewvalue(type,id,msg)
{
	//如果是离开并且没有输入任何数据 那么需要在重新赋值
	if('blur'==type)
	{
		if(0 == document.getElementById(id).value.length)
		{
			document.getElementById(id).value =msg;
		}
	}
	
	//如果是获取这个焦点那么需要全选改数据
	if('focus'==type)
	{
	    if(document.getElementById(id).value == msg)
	    {
	    	document.getElementById(id).value="";
	    }
	}
}
 
 
/*======================================================
 - begin  cookie操作
 ======================================================*/
/**
 * 取得cookie中的信息
 * @param name cookie的name
 */
function getCookie(name)
{
    var start = document.cookie.indexOf(name + "=");
    var len = start + name.length + 1;
    if ((!start) && (name != document.cookie.substring(0, name.length))) 
    {
        return null;
    }
    if (start == -1) 
    {
        return null;
    }
    var end = document.cookie.indexOf(';', len);
    if (end == -1) 
        end = document.cookie.length;
    return unescape(document.cookie.substring(len, end));
}

/**
 * 设置cookie中的信息
 * @param name cookie的name
 * @param name cookie的value
 */
function setCookie(name, value, expires, path, domain, secure)
{
    var today = new Date();
    today.setTime(today.getTime());
    if (expires) 
    {
        expires = expires * 1000 * 60 * 60 * 24;
    }
    
    var expires_date = new Date(today.getTime() + (expires));
    document.cookie = name + '=' + escape(value) +
    ((expires) ? ';expires=' + expires_date.toGMTString() : '') + //expires.toGMTString()         
    ((path) ? ';path=' + path : '') +
    ((domain) ? ';domain=' + domain : '') +
    ((secure) ? ';secure' : '');
}

/**
 * 删除cookie
 * @param name cookie的name
 */
function deleteCookie(name, path, domain)
{
    if (getCookie(name)) 
    {
        document.cookie = name + '=' +
        ((path) ? ';path=' + path : '') +
        ((domain) ? ';domain=' + domain : '') +
        ';expires=Thu, 01-Jan-1970 00:00:01 GMT';
    }
}

/*======================================================
 - end  cookie操作
 ======================================================*/
/*======================================================
 - begin  字符处理操作
 ======================================================*/
/**
 * 计算字符串长度
 * @param {Object} str
 */
function bytes(str)
{
    if (typeof(str) != 'string') 
    {
        str = str.value;
    }
    var len = 0;
    for (var i = 0; i < str.length; i++) 
    {
        if (str.charCodeAt(i) > 127) 
        {
            len++;
        }
        len++;
    }
    return len;
}
/**
 * 删除字符串两端的空白字符
 * eg:str.trim()
 */
String.prototype.trim = function()
{
    return $.trim(this);
}

/**
 * 去掉字符左端的的空白字符
 * eg:str.trimLeft()
 */
String.prototype.trimLeft = function()
{
	return this.replace(/^[\t\n\r\s]/g,""); 
}

/**
 * 去掉字符右端的空白字符
 * eg:str.trimRight()
 */
String.prototype.trimRight = function()
{
	return this.replace(/[\t\n\r\s]*$/g,"");
}

/**
 * 获取带中文的字符串长度，一个中文两个字符
 * eg:str.getBytes()
 */
String.prototype.getBytes = function() 
{
	var cArr = this.match(/[^x00-xff]/ig);　　
	return this.length + (cArr == null ? 0 : cArr.length);　　
}

/**
 * 对特殊字符进行转换
 * & 转为%26，+ 转为%2B
 * @param {Object} txt
 */
function textFormat(txt)
{
	var returnText;
	var tempText;
    tempText = txt.replace("&", "%26");
    returnText = tempText.replace("+", "%2B");
    return returnText;
}
/**
 * 计算包括有双字节字符的文本框的长度
 * @param {Object} field
 * @param {Object} maxLength
 */
filterFieldDoubleCharacters = function(field, maxLength)
{
	if(!!field && field.value !== "")
	{
		var fieldValue = field.value;
		var length = fieldValue.replace(/[^x00-xff]/g,"aaa").length;
		//计算双字节长度的长度大于限制的最大长度
		if(length > maxLength)
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	else
	{
		return true;
	}
}
/**
 * 格式化标准的HTML
 * 将空格转换成 &nbsp;
 */
function EncodeHTML(str)
{
	if (str == null) 
    {
        return;
    }
    
    for (var i = 0; i < str.length; i++) 
    {
        if (str.charAt(i) == " ") 
        {
            str = str.replace(str.charAt(i), "&nbsp;");
        }
    }
    return str;
}
/**
 * 全角转换成半角
 * @param {Object} str
 */
function ToCDB(str)
{
    var tmp = "";
    for (var i = 0; i < str.length; i++) 
    {
        if (str.charCodeAt(i) > 65248 && str.charCodeAt(i) < 65375) 
        {
            tmp += String.fromCharCode(str.charCodeAt(i) - 65248);
        }
        else 
        {
            tmp += String.fromCharCode(str.charCodeAt(i));
        }
    }
    return tmp;
}

/**
 * 验证字符串是否超长，True超长
 * @param {Object} str
 * @param {Object} maxLength
 */
function checkMaxLength(str, maxLength)
{
    return str.getBytes() > maxLength;
}

/**
 * 验证字符串是否含有以下特殊字符
 * @param {Object} value
 */
function regExpTest(value)
{
	//var reCode = "[\"\\\\&()^/*'<`>#$:%|+]";
	var reCode = "[\\`,\\~,\\!,\\@,\#,\\$,\\%,\\^,\\+,\\*,\\&,\\\\,\\/,\\?,\\|,\\:,\\,\\<,\\>,\\{,\\},\\(,\\),\\'',\\;,\\=,\"]"; 
	var re = new RegExp(reCode,"i");
	return re.test(value);
	
}


/**
 * 验证字符串是否含有以下特殊字符
 * @param {Object} value
 */
function regExpDesc(value)
{
	var reCode = "[!@#$%^&*]";
	var re = new RegExp(reCode,"i");
	return re.test(value);
	
}

/**
 * 验证Email
 * @param {Object} emailValue
 */
function checkEmail(emailValue)
{
    var emailReg = /^[\w-]+(\.[\w-]+)*$/;
    if (!emailReg.test(emailValue)) 
    {
        return false;
    }
}

/**
 * 验证手机号
 * @param {Object} inData
 */
function checkPhone(inData)
{
    var reg = /^([\+]\d+)$|^\d+$/;
    var sysDefaultCountryCode = document.getElementById('sysDefaultCountryCode').value;
    var phone = document.getElementsByName('phone'); //手机号段集合
    var countryCode = document.getElementsByName('countryCode'); //国家号码集合
    var numberLength = document.getElementsByName('numberLength'); //手机号段允许长度集合
    var tempData;
    if (reg.test(inData)) 
    {
        if (inData.charAt(0) == "+") 
        { //+国家号码
            for (var i = 0; i < phone.length; i++) 
            {
                tempData = countryCode[i].value + phone[i].value;
                if (inData.indexOf(tempData) == 1) 
                {
                    if (((inData.substring(tempData.length + 1, inData.length).length) == numberLength[i].value) == true) 
                        return true;
                }
            }
        }
        else 
        {
            for (var i = 0; i < phone.length; i++) 
            {
                tempData = countryCode[i].value + phone[i].value;
                
                if (inData.indexOf(phone[i].value) != -1) //没有国家码
                {
                    if (inData.substring(0, phone[i].value.length) == phone[i].value) 
                    {
                        if ((inData.substring(phone[i].value.length, inData.length).length == numberLength[i].value) == true) 
                        {
                            if (sysDefaultCountryCode == countryCode[i].value) 
                            {
                                return true;
                            }
                        }
                    }
                }
            }
        }
    }
    return false;
}
/**
 * 页面输入字符和汉字的时候对长度的验证，现在汉字是占3个字符的长度
 * @param {Object} flag
 */
function validateLanguage(flag)
{
    //获取input框的最大长度
    var length = parseInt(flag.getAttribute("maxlength"));
    if (length == null || length == '') 
    {
        return;
    }
    var id = flag.getAttribute("id");
    var values = flag.value;
    //验证汉字的正则表达式
    var reg = /^[^\x00-\xff]+$/;
    var valuelength = 0;
    var finalvalue = '';
    for (var i = 0; i < values.length; i++) 
    {
        var charvalue = values.charAt(i);
        //¡¤该点号是中文输入法的 ~ 键输入的，正则验证不出来
        if (reg.test(charvalue) || charvalue == '¡¤') 
        {
            //如果是汉字那么占三个字符
            valuelength = valuelength + 3;
        }
        else 
        {
            //非汉字占两个字符
            valuelength = valuelength + 1;
        }
        finalvalue = finalvalue + charvalue;
        //如果超过长度那么进行截取超出部分的操作
        if (valuelength > length) 
        {
            finalvalue = finalvalue.substring(0, finalvalue.length - 1);
            document.getElementById(id).value = finalvalue;
            return;
        }
    }
}




/**
 * 获取浏览器类型
 * eg:brower().isIE
 */
brower = function()
{
    var ua = navigator.userAgent.toLowerCase();
    var os = new Object();
    os.isFirefox = ua.indexOf('firefox') != -1;
    os.isOpera = ua.indexOf('opera') != -1;
    os.isChrome = ua.indexOf('chrome') != -1;
    os.isIE = !os.isOpera && ua.indexOf('msie') != -1;
    os.isIE7 = os.isIE && ua.indexOf('7.0') != -1;
    os.isIE8 = os.isIE && ua.indexOf('trident/4.0') != -1;
    return os;
}


/**
 * 跳转到指定的页面
 * @param page 要跳转的页面
 */
function gopage(page)
{
    document.location.href = page;
}
/**
 * 锁定按钮，禁止重复提交
 * @param {Object} obj
 * @param {Object} type
 */
function noClick(obj, type)
{
    obj.disabled = type;
}
/*======================================================
 - end  事件操作
 ======================================================*/
/*======================================================
 - begin 输入限制统计
 ======================================================*/
/**
 * 输入限制
 * @param {Object} e
 * @param {Object} _max
 * @param {Object} _exp
 */
function statInput(e, _max, _exp)
{
    e = $2(e);
    _max = parseInt(_max);
    _max = isNaN(_max) ? 0 : _max;
    _exp = _exp == undefined ? {} : _exp;
    
    if (e == null || _max == 0) 
    {
        return;
    }
    
    var // 浏览器
 _brower = brower();
    // 输出对象
    _objMax = _exp._max == undefined ? null : $2(_exp._max), _objTotal = _exp._total == undefined ? null : $2(_exp._total), _objLeft = _exp._left == undefined ? null : $2(_exp._left), // 弹出提示
 _hint = _exp._hint == undefined ? null : _exp._hint;
    
    // 初始统计
    if (_objMax != null) 
        _objMax.innerHTML = _max;
    if (_objTotal != null) 
        _objTotal.innerHTML = 0;
    if (_objLeft != null) 
        _objLeft.innerHTML = _max;
    
    // 设置监听事件
    // 输入这个方法比较好.
    // 但是Opera下中文输入跟粘贴不能正确统计
    // 如果不考虑Opera的话就用这个吧.否则就老老实实用计时器.
    /*
     if(_brower.isIE) {
     myAddEventListener(e, "propertychange", stat);
     }else{
     myAddEventListener(e, "input", stat);
     }
     */
    // 用计时器的话就什么浏览器都支持了.
    var _intDo = null;
    myAddEventListener(e, "focus", setListen);
    myAddEventListener(e, "blur", remListen);
    function setListen()
    {
        _intDo = setInterval(stat, 10);
    }
    function remListen()
    {
        clearInterval(_intDo);
    }
    
    
    // 统计函数
    var _len, _olen, _lastRN, _sTop;
    _olen = _len = 0;
    function stat()
    {
        _len = e.value.length;
        if (_len == _olen) 
            return; // 防止用计时器监听时做无谓的牺牲...
        if (_len > _max) 
        {
            _sTop = e.scrollTop;
            // 避免IE最后俩字符为'\r\n'.导致崩溃...
            //_lastRN = (e.value.substr(_max-1, 2) == "\r\n");
            //e.value = e.value.substr(0, (_lastRN ? _max-1 : _max));
            if (_hint == true) 
                ;
            // 解决FF老是跑回顶部
            if (_brower.isFirefox) 
                e.scrollTop = e.scrollHeight;
        }
        _olen = _len = e.value.length;
        
        // 显示已输入字数
        
        if (_objTotal != null) 
            _objTotal.innerHTML = _len;
        // 显示剩余可输入字数
        
        if (_objLeft != null) 
            _objLeft.innerHTML = (_max - _len) < 0 ? 0 : (_max - _len);
    }
    stat();
}

/**
 * 日期转换成毫秒
 */
function toDate(time)
{
    var arr = time.split(":");
    var starttime = new Date(arr[0], arr[1] + 1, arr[2], arr[3], arr[4], arr[5]);
    var starttimes = starttime.getTime();
    return starttimes;
}

/**
 * 格式化日期
 */
function formatDate(time)
{
    var formatTime = "";
    var arr = time.split(":");
    for (var i = 0; i < arr.length; i++) 
    {
        formatTime += arr[i];
        if (i > 1) 
        {
            break;
        }
        else 
        {
            formatTime += "-";
        }
    }
    return formatTime;
}
/**
 * 格式化时间
 * @param {Object} Str
 */
function formatTimes(Str)
{
    var split = Str.split(":");
    return split[0] + ":" + split[1];
}



/**
 * 验证照片格式
 * @param {Object} imgname
 */
function validateimg(imgname)
{
    //var fileformat =/^[A-Z]:\\{1,2}[^/:\*\?<>\|]+\.(jpg|gif|jpeg|JPG|GIF|JPEG)$/i;
    var fileformat = /\.jpg$|\.jpeg$|\.gif$|\.bmp$|\.png$/i;
    if (fileformat.test(imgname)) 
    {
        return true;
    }
    else 
    {
        return false;
    }
}
/**
 * 更换照片的src
 * @param {Object} oo
 * @param {Object} url
 */
function swapImgRestore(oo, url)
{
    oo.src = url;
}

/**
 * XML文件解析节点的值
 * @param {Object} obj
 * @param {Object} id
 */
function getElementValueByTagName(obj, id)
{
    var value = '';
    var node = obj.getElementsByTagName(id)[0].firstChild;
    if (null != node) 
    {
        value = node.nodeValue;
    }
    return value;
}
/*======================================================
 - begin  XML操作
 ======================================================*/
 
function setEncodeURI(url)
{
   url = encodeURI(url);
   url = encodeURI(url);
   return url;
}
/**
 * 长度截取
 */
function strlen(str,needlen)
{
    if (typeof(str) != 'string') 
    {
        str = str.value;
    }  
    
    str = str.replace('&nbsp;',' ');
    
	needlen= needlen-3;
	var tempstr='';
    for (var i = 0; i < needlen; i++) 
    {
        if (str.charCodeAt(i) > 127) 
        {
			needlen--;
			//continue;
        }
        tempstr=tempstr+ str.charAt(i);
    }
    
    
    if (tempstr == '')
    {
    	return str;
    }
    else
    {
    	if (tempstr == str)
    	{
    		return str;
    	}
    	else
    	{
    		//return tempstr+ "...";  
    		return tempstr;  
    	}    	  
    }
}


/**
 * 检查表单对象中checkbox选中的个数
 * @param {} checkboxName 
 * @return 选中的数量
 */
function getCheckboxCheckedCount(checkboxName)
{
	return $("input[name=\""+checkboxName+"\"]:checked").length; 
}

 /**
  * 清理数组中的数据公共方法
  * @param {} obj 数组对象 
  */
 function clearArray(obj)
 {
     if(null!=obj || 'null'!=obj)
     {
     	 //循环的减少数组中的数据直到清空为止
     	 for(var i = obj.length - 1 ; i >= 0 ; i--)
		 {
		     obj.splice(i,1);
		 }
     }
 }

/*

//经常用的是通过遍历,重构数组.
Array.prototype.remove = function(dx)
{
    if (isNaN(dx) || dx > this.length) 
    {
        return false;
    }
    for (var i = 0, n = 0; i < this.length; i++) 
    {
        if (this[i] != this[dx]) 
        {
            this[n++] = this[i];
        }
    }
    this.length -= 1;
}*/

/**
 * 去掉字符串的左右空格
 * @param s 字符串
 */
function trim(s)
{
   //return rtrim(ltrim(ToCDB(s)));
   return ltrim(rtrim(ToCDB(s)));
}

/**
 * 去掉字符串的左空格
 * @param s 字符串
 */
function ltrim(str)
{
    //return s.replace(/^\s*/, "");
    for (i = 0; str.charAt(i) == " " || str.charAt(i) == "　"; i++)
    {
    }
    str = str.substring(i, str.length);
    for (i = str.length - 1; str.charAt(i) == " " || str.charAt(i) == "　"; i--)
    {
    }
    str = str.substring(0, i + 1);
    return str;
}

/**
 * 去掉字符串的右空格
 * @param s 字符串
 */
function rtrim(el)
{
   //return s.replace(/\s*$/, "");
    var s = el;
    var len = el.length;
    i = 0;
    flag = 0;
    flagn = 0;
    var result = "";
    while (i < len)
    {
        ch = el.charAt(i);
        if (ch == "\n" || ch == "\r")
        {
            if ((flagn == 1) && (ch == "\n"))
            {
                flag++;
                flagn = 0;
            }
            /*else if (ch == "\r")
            {
                alert("bb");
                flagn = 1;
            }*/
            i++;
            if (flag == 1)
            {
                result = result + ch;
            }
        }
        else
        {
            flag = 0;
            flagn = 0;
            result = result + ch;
            i++;
        }
    }
    return result;
}

/**
 * 全选判断，flag是参数，是复选框的name selectList 是全选按钮的ID
 */
function selectOne(flag,selectList)
{
	var obj = document.getElementsByName(flag);
	var length = obj.length;
	var selectLength = 0;
	for(var i=0;i<length;i++)
	{
		if(obj[i].checked)
		{
			selectLength++;
		}
	}
	if(length != selectLength)
	{
		document.getElementById(selectList).checked = false;
	}
	else
	{
		document.getElementById(selectList).checked = true;
	}
}

function MM_swapImgRestore() { //v3.0
	  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
	}

	function MM_preloadImages() { //v3.0
	  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
	}

	function MM_findObj(n, d) { //v4.01
	  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	  if(!x && d.getElementById) x=d.getElementById(n); return x;
	}

	function MM_swapImage() { //v3.0
	  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
	}
