//抛出错误
function trueThrow(bCondition, strDescription)
{
	if (bCondition)
		throw strDescription;
}
//检查Server端XML Http Request的错误结果
function checkErrorResult(xmlDoc, infoMation)
{
	if (xmlDoc.documentElement.nodeName == "ResponseError")
	{
		return createErrorObj(xmlDoc);
	}
	return "";
}
//构造一个和服务器返回信息相同的XML
function createErrorXML(errValue, errStack)
{
	var xmlDoc = createDomDocument("<ResponseError/>");

	appendNode(xmlDoc, xmlDoc.documentElement, "Value", errValue);
	appendNode(xmlDoc, xmlDoc.documentElement, "Stack", errStack);
	appendNode(xmlDoc, xmlDoc.documentElement, "Client", "true");

	return xmlDoc;
}
//建立错误对象，对象包含错误信息和错误栈的情况
function createErrorObj(xmlDoc)
{
	var eObj = new Object;

	eObj.message = xmlDoc.selectSingleNode(".//Value").text;
	eObj.stack = xmlDoc.selectSingleNode(".//Stack").text;

	var clientNode = xmlDoc.selectSingleNode(".//Client");

	if (clientNode)
		eObj.client = clientNode.text;
	else
		eObj.client = "";

	return eObj;	
}
//检查是否为客户端错误
function isHttpError(e)
{
	if (typeof(e) == "object")
	{
		if (typeof(e.client) != "undefined")
			return e.client.length > 0;
		else
			return false;
	}
	else
		return false;
}
//从错误对象中得到错误信息
function getErrorMessage(e)
{
	if (typeof(e) == "object")
		return e.message;
	else
		return e;
}
//从错误对象中得到错误栈信息
function getErrorStack(e)
{
	if (typeof(e) == "object")
		return e.stack;
	else
		return "";
}
//取得Server端XML Http Request的结果
function getSingleResult(xmlDoc)
{
	for (var i = 0; i < xmlDoc.childNodes.length; i++)
	{
		var n =  xmlDoc.childNodes(i);

		var nValue = xmlDoc.selectSingleNode(".//Value");

		var strResult = "";

		if (nValue != null)
			strResult = nValue.text;

		if (n.nodeName == "ResponseError")
			throw createErrorObj(xmlDoc);
	}
	return strResult;
}
//得到事件参数
function getArgResult(xmlDoc)
{
    return getAttrValue(xmlDoc.documentElement, "argName");
}
//得到处理对错
function getBoolResult(xmlDoc)
{
    return xmlDoc.documentElement.nodeName == "ResponseError" ? false : true;
}
function getArrayResult(xmlDoc)
{
	getSingleResult(xmlDoc);
	var nNodes = xmlDoc.selectNodes(".//Value");
	var arrResult = new Array(nNodes.length);
	for (var i = 0; i < nNodes.length; i++)
	{
		var nValue = nNodes[i].text;

		if (nValue != null)
			arrResult[i] = nValue;
	}
	return arrResult;
}
//显示自制对话框********************
function showCmdDialog(xmlDoc)
{
	var sFeature = "dialogWidth:340px; dialogHeight:200px;center:yes;help:no;resizable:no;scroll:no;status:no";
	var sPath = getRootDir() + "/CommonDialog/cmdDialog.htm";
	return showModalDialog(sPath, xmlDoc, sFeature);
}
function alert(strMsg, iconType)
{		
	return showCmdDialog(getXmlDocForDialog(strMsg, iconType, "alert"));
}
function confirm(strMsg, bDefaultYes, iconType)
{	
	return showCmdDialog(getXmlDocForDialog(strMsg, iconType, "confirm", bDefaultYes));
}
function showError(e, iconType)
{
	if (isHttpError(e))
	{
		document.body.innerHTML = getErrorMessage(e);
	}
	else
	{			
		var strMsg = getErrorMessage(e);			
		return showCmdDialog(getXmlDocForDialog(strMsg, iconType, "stop"));
	}
}	
function getXmlDocForDialog(strMsg, iconType, type, bDefaultYes)
{		
	if (bDefaultYes == null)
		bDefaultYes = false;
		
	var arrayInfo = getInfo(strMsg, iconType);
	
	var xmlDoc = createDomDocument("<MessageBox/>");
	
	appendNode(xmlDoc, xmlDoc.documentElement, "Type", type);			
	appendNode(xmlDoc, xmlDoc.documentElement, "Message", arrayInfo[0]);
	appendNode(xmlDoc, xmlDoc.documentElement, "IconType", arrayInfo[1]);
	appendNode(xmlDoc, xmlDoc.documentElement, "DefaultYes", bDefaultYes);
	
	return xmlDoc;
}
function getInfo(strMsg, iconType)
{		
	return (new Array(getStrMsg(strMsg), getIconType(iconType))) ;
}
//获得strMsg
function getStrMsg(strMsg)
{		
	if (typeof(strMsg) == "number")	
		strMsg = strMsg.toString();

	return strMsg;								
}
//获得图标类型
function getIconType(iconType)
{				
	switch(iconType)
	{
		case "stopIcon":			
		case "warnIcon":			
		case "askIcon":	
					break;	
		default:
					iconType = "defalut";
	}
	return iconType;				
}
//检查某些id的控件是否为空
function checkNullID(idArray)
{
	var i = 0;
	var strResult = "";
	var nCounter =0;
	var oFirstElem = null;

	while (i < idArray.length)
	{
		var obj = document.all(idArray[i]);

		var value = rTrim(obj.value);

		if (value.length == 0)
		{
			if (strResult.length > 0)
				strResult += ",";
			strResult += idArray[i + 1];

			if (oFirstElem == null)
				oFirstElem = obj;

			nCounter++;
		}
		i += 2;
	}

	var strChar = "";

	if (nCounter > 1)
		strChar = "这些";
	else
		strChar = "此";
	if (strResult.length > 0)
		strResult += ":" + strChar + "域不能为空";

	if (oFirstElem && oFirstElem.style.display != "none" && oFirstElem.disabled != true && oFirstElem.readOnly != true)
		oFirstElem.focus();

	return strResult;
}

//检查为数组所表示的控件们是否为空
function checkNullIDThrow(idArray)
{
	var strResult = checkNullID(idArray);

	if (strResult.length > 0)
		throw strResult;
}
//只能输入中文限制
function limitChinese_onkeyup(obj)
{
	obj.value = obj.value.replace(/[^\u4E00-\u9FA5]/g,'')
}
function limitChinese_onbeforepaste()
{
	clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))
}
//只能输入数字限制
function limitDigit_onkeyup(obj)
{
	obj.value = obj.value.replace(/[^\d]/g,'')
}
function limitDigit_onbeforepaste()
{
	clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))
}
//输入长度限定
function limitLen_onkeyup(obj, len)
{
	if(obj.value.length > len)
	{
	   obj.value = obj.value.substring(0, len);
	}
}
function limitLen_onbeforepaste(len)
{
	obj = window.event.srcElement;
	if(obj.value.length > len)
	{
		obj.value = obj.value.substring(0, len);
	}
}
//验证URL
function checkURL(strUrl)
{
	var reg = /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
	return reg.test(strUrl);
}
//验证Email
function checkEmail(strEmail)
{
	var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
	return reg.test(strEmail);
}
//验证Zip(邮政编码)
function checkZip(strZip)
{
	var reg =/^[1-9]\d{5}$/;
	return reg.test(strZip);
}
function checkNumCharUnderline(str)
{
    var reg = /^\w+$/;
    return reg.test(str);
}
//验证文件类型
function checkFileType(file, types)
{
    var flag = false;
    if(file.indexOf(".") > 0)
    {
        var ar = types.split(",");
        var files = file.split(".");
        var ext = files[files.length - 1];
       
        for(var i = 0; i < ar.length; i++)
        {
            if(ext == ar[i])
            {
                flag = true;
            }
        }
    }
    return flag;
}
function checkSafeStrs(strCheck)
{
    if(arguments.length > 1)
    {
        for(var i = 1; i < arguments.length; i++)
        {
            if(strCheck.indexOf(arguments[i]) != -1)
                return false;
        }
        return true;
    }
    else
    {
        return checkSafeStrs(strCheck, ",", ".", "\\", "\'", "\"", " ", "   ", "!", "~", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-", "=", "+", "/", "<", ">", "?");
    }
}