/**
* 判断用户输入的是否为数字
*/
function isDigit()
{
	return event.ctrlKey || event.keyCode==8 || event.keyCode==9 || event.keyCode==13 || event.keyCode==46 || ((event.keyCode >= 48) && (event.keyCode <= 57));
}
/**
使窗体居中
@param width	窗体的宽度
@param height	窗体的高度
*/
function centerWindow(width,height)
{
	var w=screen.availWidth;
	var h=screen.availHeight;
	window.resizeTo(width,height);
	window.moveTo((w-width)/2,(h-height)/2);
}
/**
将一个整数解析成16进制。并返回
这是一个废方法，可用如下方法代替
var aa=12;
alert(aa.toString(16));
*/
function toHex2(number)
{
	if(isNaN(number))
	{
		alert("在16进制转换函数中，参数不是数字.number="+number);
		return "";
	}
	var a=new Array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
	var str="";
	var m=0;
	var n=number;
	while(n>15)
	{
		m=n%16;
		str=a[m]+str;
		n=parseInt(n/16);
	}
	str=a[n]+str;
	return str;
}
/**
replaceAll: 用replaceString替换str中所有的searchString
参数：
str	：	需要被操作的字符串
searchString :	被替换的字符串
replaceString :	替换的字符串
返回值：	替换后的字符串
*/

function replaceAll(str,searchString, replaceString)
{
	var offset=replaceString.length;	//每次替换后的指针偏移量
	var start=0;
	while((start=str.indexOf(searchString,start)) != -1)
	{
		str = str.substring(0,start)+replaceString+str.substring(start+searchString.length);
		start+=offset;
	}
	return str;
}
/**
打印一个帧
@param whichFrame	你要打印的帧的name
*/
function printFrame(whichFrame)
{
	window.parent[whichFrame].focus();
	window.parent[whichFrame].print();
}
/**
strLength: 用来的到字符串的长度，中文字符长度为2

参数：
tmpstr    ： 要得到长度的字符串
返回值：
    字符串的长度 
*/
function strLength(tmpstr){
	var counter = 0;
	if(!tmpstr || tmpstr.length ==0)
		return counter;
	for(l=0;l<tmpstr.length;l++){
		if(tmpstr.charCodeAt(l)<256)
			counter++;
		else{
			counter++;
			counter++;
		}
	}
	return counter;
}
/**
判断手机号码是否为移动运营商的
*/
function isMobileNo(mobile)
{
	var mobileRegex = new RegExp("13[4-9]{1}[0-9]{8}");
	var res = mobile.match(mobileRegex);
	if(res != null)
		return true;
	else
		return false;
}
/**
 * 判断是否为数字
 * @param value	将要判断的字符串表达式
 * @return true	字符串表达式是数字，否则：不是
 */
function isNum(value)
{
	if(value==null || value.length<1)
	{
		return false;
	}
	else
	{
		var begin=0;
		var ch=value.charAt(0);
		if(value.length>1 && (ch=='+' || ch=='-'))
		{
			begin=1;
		}
		for(var i=begin; i<value.length; i++)
		{
			ch=value.charAt(i);
			if(ch<'0' || ch>'9')
			{
				return false;
			}
		}
	}
	return true;
}
/**
 * 判断参数是否为IP地址
 * @param ip	IP地址表达式
 * @return true: 参数IP是正确的IP地址表达式，否则：不正确
 */
function isIP(ip)
{
	if(ip==null || ip.length<7)
		return false;
	var array=ip.split(".");
	if(array.length!=4 && array.length!=6)
		return false;
	for(var i=0;i<array.length;i++)
	{
		if(array[i]==null || array[i].length<1 || array[i].length>3)
		{
			return false;
		}
		else if(!isNum(array[i]))
		{
			return false;
		}
		else if(parseInt(array[i])>255)
		{
			return false;
		}
	}
	return true;
}
/*
弹出选择颜色的对话框，用于设置颜色值。
*/
function selectColor(obj)
{
	//var url="../public/colorDialog.html";
	//var strFeatures = "dialogWidth=336px;dialogHeight=135px;status=no;center=yes;help=no";
	var url = "../editor/selcolor.html?color="+encodeURIComponent(obj.value);
	var strFeatures="dialogWidth:280px;dialogHeight:250px;help:no;scroll:no;status:no;resizable=yes";
	var value = showModalDialog(url,"设置颜色",strFeatures);
	if(value!=null && value.length==7)
	{
		obj.value=value;
	}
}
function getReal(el, type, value) 
{
	temp = el;
	while ((temp != null) && (temp.tagName != "BODY")) 
	{
		if (eval("temp." + type) == value) 
		{
			el = temp;
			return el;
		}
		temp = temp.parentElement;
	}
	return el;
}

function findChildren(el, type, value) 
{
	var children = el.children;
	var tmp = new Array();
	var j=0;
	for (var i=0; i<children.length; i++) 
	{
		if (eval("children[i]." + type + "==\"" + value + "\"")) 
		{
			tmp[tmp.length] = children[i];
		}
		tmp = tmp.concat(findChildren(children[i], type, value));
	}
	return tmp;
}

/**
trim: 去字符首尾空格的函数

参数：
inputVal    ： 需要去空格的字符串
返回值：
    除去首尾空格的字符串       
*/
function trim(str)
{
	str=trims(str);
	str=trimw(str);
	return str;
}
/**
trims: 去字符首空格的函数

参数：
inputVal    ： 需要去空格的字符串
返回值：
    除去首空格的字符串       
*/

function trims(str)
{
	var start=str.length;
	var ch=null;
	for(var i=0;i<str.length;i++)
	{
		ch=str.charAt(i);
		if(ch!=' ' && ch!='\t' && ch!='\r' && ch!='\n')
		{
			start=i;
			break;
		}
	}
	if(start==str.length)
		return "";
	else
		return str.substring(start);
}

/**
trimw: 去字符尾空格的函数

参数：
inputVal    ： 需要去空格的字符串
返回值：
    除去尾空格的字符串
*/

function trimw(str)
{
	var end=0
	for(var i=str.length-1;i>=0;i--)
	{
		ch=str.charAt(i);
		if(ch!=' ' && ch!='\t' && ch!='\r' && ch!='\n')
		{
			end=i+1;
			break;
		}
	}
	if(end==0)
		return "";
	else
		return str.substring(0,end);
}
/**
* 检查查询表单
* @param form	FORM
*/
function checkSearchForm(form)
{
	if(form.target==null || form.target.length<1)
	{
		alert("表单没有指定target.\r\n");
		return false;
	}
	var hasPageIndex=false;
	try{
		var array1=form.elements;
		var array2=window.parent.frames[window.parent.frames.length-1].document.forms[0].elements;
		if(array1.length != array2.length)
		{
			alert("两个表单中的元素的数量不一致,array1.length="+array1.length+",array2.length="+array2.length);
			return false;
		}
		for(var i=0;i<array1.length;i++)
		{
			if(array1[i].name=="pageIndex") hasPageIndex=true;
			array2[i].value=array1[i].value;
			if(array1[i].type=="radio" || array1[i].type=="checkbox")
			{
				array2[i].checked=array1[i].checked;
			}
		}
		if(hasPageIndex)
			return true;
		else
		{
			alert("没有表单元素pageIndex.\r\n");
			return false;
		}
	}catch(e){
		alert(e);
	}
	return false;
}
/**
* 控制文本框的字数
*/
function checkMaxInput(textarea,maxlength)
{
	if(textarea.value.length > maxlength)
	{
		textarea.value = textarea.value.substring(0, maxlength);
		return false;
	}
	return true;
}
/**
 * 为表格添加一行
 * @param obj 表格中的某个对象,这个对象所在的行就是画瓢的葫芦
 * @param rowIndex 指定要在第几行前面插入，如果是负数，则表示倒数第几行，此参数可省略，默认值：对象obj所在的表格行的行号
 * @param cloneValue boolean，是否复制 value 属性
 */
function addRow(obj, rowIndex, cloneValue)
{
	var last=obj;
	while(last!=null && last.tagName!="TR" && last.tagName!="BODY")
	{
		last=last.parentElement;
	}
	if(last==null || last.tagName!="TR")
	{
		alert("无法获取对象所在的表格行！");
	}
	else
	{
		var table=last;
		while(table!=null && table.tagName!="TABLE" && table.tagName!="BODY")
		{
			table=table.parentElement;
		}
		if(table==null)
		{
			alert("无法获取表格对象！");
		}
		else
		{
			//var previous=last.previousSibling;
			if(rowIndex==null || isNaN(rowIndex))
			{
				rowIndex=last.rowIndex+1;
			}
			else if(rowIndex<0)
			{
				rowIndex=table.rows.length+rowIndex+1;
			}
			else if(rowIndex>table.rows.length)
			{
				rowIndex=table.rows.length;
			}
			var row=table.insertRow(rowIndex);
			var a=last.attributes;
			for(var j=0;j<a.length;j++)
			{
				if(a[j].name=="tabIndex")
				{
					continue;
				}
				else if(typeof(a[j].value)=="function")
				{
					eval("row."+a[j].name+"=function() {"+a[j].value+";}");
				}
				else if(a[j].value!=null && a[j].value!="null" && a[j].value!="false" && a[j].value!="inherit" && a[j].value!="undefined" && a[j].value.length>0)
				{
					row.setAttribute(a[j].name,a[j].value);
				}
			}
			var isNum=new Array(last.cells.length);//用于标记为内容为数字的列
			for(var i=0;i<last.cells.length;i++)
			{
				var cell=row.insertCell();
				a=last.cells[i].attributes;
				for(var j=0;j<a.length;j++)
				{
					if(a[j].name=="tabIndex")
					{
						continue;
					}
					else if(a[j].value!=null && a[j].value!="null" && a[j].value!="false" && a[j].value!="inherit" && a[j].value!="undefined" && a[j].value.length>0)
					{
						cell.setAttribute(a[j].name,a[j].value);
					}
				}
				var html=last.cells[i].innerHTML;
				cell.innerHTML=html;
				if(html==null || html.length<1 || isNaN(html))
				{
					isNum[i]=0;
				}
				else
				{
					isNum[i]=1;
				}

				if(cloneValue)
				{
				}
				else//清空输入框的值
				{
					var inputs=findChildren(cell,"tagName","INPUT");
					if(inputs==null || inputs.length.length<1)
					{
					}
					else
					{
						for(var k=0; k<inputs.length; k++)
						{
							if(inputs[k].type=="text")
							{
								inputs[k].value="";
							}
						}
					}
					var textareas=findChildren(cell,"tagName","TEXTAREA");
					if(textareas==null || textareas.length.length<1)
					{
					}
					else
					{
						for(var k=0; k<textareas.length; k++)
						{
							textareas[k].value="";
						}
					}
				}
			}
			//对全部为数字的列进行更新
			var html=null;
			for(var c=0; c<isNum.length; c++)
			{
				if(isNum[c]==1)
				{
					for(var r=row.rowIndex; r<table.rows.length; r++)
					{
						if(table.rows[r].cells.length!=isNum.length)
						{
						}
						else
						{
							html=table.rows[r].cells[c].innerHTML;
							if(html==null || html.length<1 || isNaN(html))
							{
								isNum[i]=0;
								break;
							}
						}
					}
				}
			}
			for(var c=0; c<isNum.length; c++)
			{
				if(isNum[c]==1)
				{
					for(var r=row.rowIndex; r<table.rows.length; r++)
					{
						if(table.rows[r].cells.length!=isNum.length)
						{
						}
						else
						{
							table.rows[r].cells[c].innerHTML=parseInt(table.rows[r].cells[c].innerHTML)+1;
						}
					}
				}
			}
			return row;
		}
	}
	return null;
}
/**
 * 取消按钮的响应事件
 * 当后退的幅度大于可以后退的步数时，将执行关闭页面的操作
 * @param back 后退步数
 */
function cancel(back)
{
	if(back>window.history.length)
	{
		window.close();
	}
	else
	{
		window.history.go(-back);
	}
}