/// <summary>
/// 附加事件(跨浏览器通用)
/// </summary>
/// <param name="target">来源对象</param>
/// <param name="type">事件类型</param>
/// <param name="handler">处理方法</param>
/// <param name="remove">是否移除</param>
function addEvent(target, type, handler, remove)
{
    if (!target) return;

    if (target.attachEvent) 
    {
        // ie
        remove ? target.detachEvent("on" + type, handler) : target.attachEvent("on" + type, handler);
    }
    else if (target.addEventListener) 
    {
        // firefox
        remove ? target.removeEventListener(type, handler, false) : target.addEventListener(type, handler, false);
    }
    else 
    {
        // other
        target["on" +type] = remove ? null : handler;
    }
}

//
//----------------------------------------------------------------------
//
//                          钱文田   2006-09-06
//
//                 对 javascript 中 string 加上自定义方法
//
//----------------------------------------------------------------------

//
//
// 验证字符串是不是有效工商注册号(1100-北京专版)
//
String.prototype.isRegnum = function()
{
    if (this == "")
        return true;
	var exp = new RegExp("^\\d{15}");
	return (this.match(exp) != null);
}
//
// 对JavaScript的String加上trim()方法
//
String.prototype.trim = function()
{
	return this.replace(/(^\s+)|\s+$/g, "");
}

//
// 计算字符串长度, 汉字算两个字符
//
String.prototype.dataLength = function()
{
    return this.replace(/[^\\x00-\\xff]/g, "**").length;
}

//
// 指定位置插入字符串
//
String.prototype.insert = function(index, str)
{
    return this.substring(0, index) + str + this.substr(index);
}

//
// 验证字符串是不是有效整数
//
String.prototype.isNum = function()
{
    if (this == "")
        return true;    
    var rPattern = /^[-,+]?(0|([1-9]\d{0,9}))$/
    if(rPattern.test(removeCommas(this))) return true
    return false;	
}

//
// 验证字符串是不是有效小数
//
String.prototype.isFloat = function()
{
    if (this == "")
        return true;
	var exp = new RegExp("^(\-)?(0|([1-9]\\d{0,14}))((\\.)\\d{0,5})?$");
	return (this.match(exp) != null);
}

//
//验证int型
//
String.prototype.isInt = function()
{
    if (this == "")
        return true;
	var rPattern = /^(\-)?(0|([1-9]\d{0,15}))$/
    if(rPattern.test(removeCommas(this))) return true	
	return false;
}

//
//验证money型，不带小数点的长度在16位
//
String.prototype.isNum0 = function()
{
    if (this == "")
        return true;
	var rPattern = /^(\-)?(0|([1-9]\d{0,15}))$/
    if(rPattern.test(removeCommas(this))) return true	
	return false;
}

//
//验证money型，带两位小数点的长度在16位
//
String.prototype.isNum2 = function()
{
    if (this == "")
        return true;
    var rPattern = /^(\-)?(0|([1-9]\d{0,14}))((\.)\d{0,2})?$/
    if(rPattern.test(removeCommas(this))) return true	
	return false;
}

//
//验证money型，带四位小数点的长度在16位
//
String.prototype.isNum4 = function()
{
    if (this == "")
        return true;
	var rPattern =  /^(\-)?(0|([1-9]\d{0,14}))((\.)\d{0,4})?$/
    if(rPattern.test(removeCommas(this))) return true
	return false;	
}

//
// 对数字型的串加上逗号
//
function addCommas( value ) 
{
    var objRegExp  = new RegExp('(-?[0-9]+)([0-9]{3})');
    //check for match to search criteria
    while(objRegExp.test(value)) 
    {
        //replace original string with first group match,
        //a comma, then second group match
        value = value.replace(objRegExp, '$1,$2');
    }

    if (value.trim() != "")
    {
        var pos = value.indexOf(".");
        if (pos == -1)
        {
            value += ".00";
        }
        else
        {
            var dvalue = value.substring(pos + 1);
            if (dvalue.length == 0)
            {
                value += "00";
            }
            else if (dvalue.length == 1)
            {
                value += "0";
            }        
        }
    }
    return value;
}

//
// 移除数字型的逗号
//
function removeCommas( value ) 
{
    var objRegExp = /,/g; //search for commas globally
    //replace all matches with empty strings
    return value.replace(objRegExp,'');
}

/// <summary>
/// 获取属性小写
/// </summary>
/// <param name="control">HTML对象</param>
/// <param name="name">属性名</param>
/// <return>属性值(小写)</return>
function getAttribute(control, name)
{
    if (!control) return null;
    var result = control.getAttribute(name);
    if (!isNull(result)) result = result.toLowerCase();
    return result;
}

//
// 验证字符串是不是有效的日期格式
//
String.prototype.isValidDate = function()
{
    if (this == "")
        return true;
	var yearFirstExp = new RegExp("^\\s*((\\d{4})|(\\d{2}))([-/.])(\\d{1,2})\\4(\\d{1,2})\\s*$");
	result = this.match(yearFirstExp);
	if(result == null) 
		return false;
	var year = (result[2].length == 4) ? result[2] : "20" + result[3];
	var month = result[5] - 1;
	var day = result[6];
	var d = new Date(year, month, day);
	return (typeof(d) == "object" && d.getFullYear() == year && d.getMonth() == month && d.getDate() == day);
}

//
// 验证字符串是不是有效的日期格式
//
String.prototype.isDate = function()
{
    if (this == "")
        return true;
	var yearFirstExp = new RegExp("^\\s*((\\d{4})|(\\d{2}))([-/.])(\\d{1,2})\\4(\\d{1,2})\\s*$");
	result = this.match(yearFirstExp);
	if(result == null) 
		return false;
	var year = (result[2].length == 4) ? result[2] : "20" + result[3];
	var month = result[5] - 1;
	var day = result[6];
	var d = new Date(year, month, day);
	return (typeof(d) == "object" && d.getFullYear() == year && d.getMonth() == month && d.getDate() == day);
}

//
// 验证字符串是不是email
//
String.prototype.isEmail = function()
{
    if (this == "")
        return true;
	var exp = new RegExp("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\.\\w+([-.]\\w+)*$");
	return (this.match(exp) != null);
}

//
// 验证字符串是不是企业代码
//
String.prototype.isCompcode = function()
{
	var exp = new RegExp("^\\d{4}[0-9XxLlGgAa]\\d{7}[0-9Xx]$");
	return (this.match(exp) != null);
}

//
// 验证字符串是不是密码
//
String.prototype.isPassword = function()
{
	if (this.length<6 || this.length>25) {
	    return false;
	}
	return true;
}

//
// 判断对象是否有效
//
function isNull(value)
{
	return (value == null || typeof(value) == "undefined")
}

//
// 帮助
// 
function goHelp()
{
}

//
// 对 JavaScript 错误, 用弹出框显示出来
//
window.onerror = function(msg) 
{
    alert("JavaScript Error: " + msg);
    return true;
}



//
//----------------------------------------------------------------------
//
//                          DOM对象操作块
//
//----------------------------------------------------------------------
//

//
// 创建 DOM 对象
//
function createXmlDom(xml) 
{
	var oXmlDom = null;
	try
	{
		oXmlDom = new ActiveXObject("MSXML2.DOMDocument.4.0");
	}
	catch(ex1)
	{
		try
		{
			oXmlDom = new ActiveXObject("MSXML2.DOMDocument.3.0");
		}
		catch(ex2)
		{
			oXmlDom = new ActiveXObject("Microsoft.XMLDOM");
		}
	}
	if (xml != null)
	{
		oXmlDom.loadXML(xml);
	}
	if (oXmlDom == null)
		alert("DOM对象创建失败, 请与软件提供商联系!");
	return oXmlDom;
}

//
// 给指定DOM创建一个字节点
//
function addChildNode(xmlDom, parentNode, childNodeName, childValue)
{
	var newNode;
	newNode = xmlDom.createNode(1, childNodeName, "");
	newNode.text = childValue;
	if (parentNode == null)
		xmlDom.documentElement.appendChild(newNode)
	else
		parentNode.appendChild(newNode);
	return newNode;
}

//
// 对节点设置属性
//
function setNodeAttribute(xmlDom, node, attributeName, attributeValue)
{
	var attr = xmlDom.createAttribute(attributeName);
	attr.value = attributeValue;
	if (node == null)
		xmlDom.documentElement.setAttributeNode(attr)
	else
		node.setAttributeNode(attr);
}

//
// 把XML中特殊字符替换
//
function dispXml(xml)
{
	return xml.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
}

