/*********************************************/
// Author    : July
// Date      : 2009-8-5
/*********************************************/
String.prototype.Trim = function(){return this.replace( /(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '' );};
String.prototype.Contains = function( textToCheck ){return ( this.indexOf( textToCheck ) > -1 );};

function $( eId ){return document.getElementById( eId );};
function Random(n){return(Math.floor(Math.random()*n));};

function isArray(arr){return Object.prototype.toString.call(arr) === "[object Array]";};


/*********************************************************************/
function GetVoidUrl(){
    var s = navigator.userAgent.toLowerCase() ;
    var	IsIE  = /*@cc_on!@*/false;
    var	IsIE7 = /*@cc_on!@*/false && ( parseInt( s.match( /msie (\d+)/ )[1], 10 ) >= 7 );
    var	IsIE6 = /*@cc_on!@*/false && ( parseInt( s.match( /msie (\d+)/ )[1], 10 ) >= 6 );

	if ( IsIE ){if ( IsIE7 || !IsIE6 ){return "";}else{return "javascript: '';";};};
	return "javascript: void(0);";
};


function BrowserInfo(){
	var sUA	= navigator.userAgent.toLowerCase();
	this.IsIE		= /*@cc_on!@*/false;
	this.IsIE7		= /*@cc_on!@*/false && ( parseInt( sUA.match( /msie (\d+)/ )[1], 10 ) >= 7 );
	this.IsIE6		= /*@cc_on!@*/false && ( parseInt( sUA.match( /msie (\d+)/ )[1], 10 ) == 6 );
	this.IsSafari	= sUA.Contains(' applewebkit/');
	this.IsOpera	= !!window.opera;
	this.IsAIR		= sUA.Contains(' adobeair/');
	this.IsMac		= sUA.Contains('macintosh');
	this.IsChrome	= (/chrome/).test(sUA);
};

/*********************************************************************/
var Utils = new Object();
Utils.htmlEncode = function(val){return val.replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');};

Utils.isEmpty = function(val){
	switch (typeof(val))
	{
		case 'string':return val.Trim().length == 0 ? true:false;break;
		case 'number':return val == 0;break;
		case 'object':return val == null;break;
		case 'array':return val.length == 0;break;
		default:return true;
	};
};

Utils.isNoNull	= function(val){return val.Trim().length == 0?false:true;};
Utils.isNumber	= function(val){if(val==""){return false;};var reg=/^-?\d*\.?\d+$/;return reg.test(val);};
Utils.isInt		= function(val){if(val==""){return false;};var reg=/^-?\d+$/;return reg.test(val);};
Utils.isUInt	= function(val){if(val==""){return false;};var reg=/^\d+$/;return reg.test(val);};
Utils.isFloat	= function(val){if(val==""){return false;};var reg=/^\d*\.?\d+$/;return reg.test(val);};
Utils.isUrl 	= function(val){var reg=/^(http[s]?|ftp):\/\/[^\/\.]+?\..+\w$/i;return reg.test(val);};

Utils.isEmail	= function(val){var reg=/([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/;return reg.test(val);};
Utils.isIdCard 	= function(val){var reg=/^\d{15}$|^\d{18}$/;return reg.test(val);};

Utils.isTel 	= function(val){var reg=/^[\d|\-|\s|\_]+$/;return reg.test(val);};
Utils.isMobile 	= function(val){var reg=/(0)?(13)\d{9}/;return reg.test(val);};

//家用电话 (XXX)XXX-XXXX 或 (XXX)XXXX-XXXX 
Utils.isHomeTel = function(val){var reg=/((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}|((\(\d{3}\) ?)|(\d{4}-))?\d{4}-\d{4}/;return reg.test(val);};


//只允许使用[0-9A-Za-z_]
Utils.isRegName = function(val){if(val==""){return false;};var reg=/^[\w]+$/;return reg.test(val);};

//只允许使用[0-9A-Za-z_]
Utils.isPass = function(val){if(val==""){return false;};var reg=/^[\u21-\u7E]*$/g;return reg.test(val);};

Utils.isChinese = function(val){if(val==""){return false;};var reg=/^[\u4E00-\u9FA5]+$/g;return reg.test(val);};
Utils.isEnglish	= function(val){if(val==""){return false;};var reg=/^[a-zA-Z]*$/;return reg.test(val);};
Utils.isEngNum	= function(val){if(val==""){return false;};var reg=/^[a-zA-Z0-9]*$/;return reg.test(val);};
Utils.isZip		= function(val){if(val==""){return false;};var reg=/\d{6}/;return reg.test(val);};
Utils.isIP		= function(val){var reg=/^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/;return reg.test(val);};

//日期,如:2008-1-1
Utils.isDate	= function(val){var reg=/^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/;return reg.test(val);};

//日期,如:2008-1-1 23:59:59
Utils.isTime 	= function(val){var reg=/^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$/;return reg.test(val);};

Utils.isAutoTime = function(val){
	var s = val.Trim();if(s.length<8){return false;};
	if(s.length<=10){
		var reg = /^\d{4}-\d{1,2}-\d{1,2}$/;
		return reg.test(s);
	}else{
		var reg = /^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}$/;
		return reg.test(s);
	};
};

/*****************************
作用:选择form里,全部选项
例子: CheckAll('frmList','SelID')
******************************/
function CheckAll(sFrmName,sChkName){
	var oThe = $(sFrmName);
	var oChked = oThe.chkall.checked;
	var ti = oThe.elements.length;
	for (var i=0;i<ti;i++){var e=oThe.elements[i];if(e.name==sChkName){e.checked=oChked;};};
};


function CheckAll2(sFrmName,oChkAll){
	var oThe = $(sFrmName);
	var oChked = oChkAll.checked;
	var ti = oThe.elements.length;
	for (var i=0;i<ti;i++){var e=oThe.elements[i];if (e.type=='checkbox'){e.checked = oChked;};};
};

/*****************************
作用: 检查form里,是否选择了 checkbox 的选择,
返回: true or false
例子: CheckSelectOne('frmList','SelID')
******************************/
function CheckSelectOne(sFrmName,sChkName){
	var oThe = $(sFrmName);
	var ti = oThe.elements.length;
	var j = 0;
	for (var i=0;i<ti;i++){var e=oThe.elements[i];if (e.name==sChkName){if(e.checked){j++;break;};};};
	if(j>0){return true;}else{return false;};
};

/*****************************
作用: 取form里第一个 checkbox 的选择,
返回: 选择值
例子: GetCheckboxOneValue('frmList','SelID')
******************************/
function GetCheckboxOneValue(sFrmName,sChkName){
	if(!$(sFrmName)){return "";}
	var oThe = $(sFrmName);
	var ti = oThe.elements.length;
	var ret = "";
	for (var i=0;i<ti;i++){var e=oThe.elements[i];if(e.name==sChkName){if(e.checked){ret = e.value;return ret;};};};
	return ret;
};
/*****************************
作用: 取form里全部checkbox 的选择,
返回: 1,3,5,列表
例子: GetCheckboxArrValue('frmList','SelID')
******************************/
function GetCheckboxArrValue(sFrmName,sChkName){
	if(!$(sFrmName)){return "";}
	var oThe = $(sFrmName);
	var ti = oThe.elements.length;
	var ret = "";
	for (var i=0;i<ti;i++){var e=oThe.elements[i];if (e.name==sChkName){if(e.checked){ret += e.value + ",";};};};
	return ret;
};

/*****************************
作用:批量删除时,检查是否选择了值,
返回:true or false
例子: onsubmit="return BatDel('frmList','SelID')" 
******************************/
function BatDel(sFrmName,sChkName){
	if (!CheckSelectOne(sFrmName,sChkName)){
		alert('没有选择任何记录!');return false;
	} else {
		if (confirm('您确认要删除这些信息吗？删除后将不能恢复!!')) {return true;} else {return false;};
	};
};

/********************************************
//作用:js 选定 SelectBox
例子: SelectOption( document.FrmSearch.cid,3 );
********************************************/
function SelectOption(oThe,v){
	if (v!=""){var ti=oThe.length;for(var i=0;i<ti;i++){if(oThe.options[i].value==v){oThe.options.selectedIndex=i;oThe.options[i].className="txtred";break;};};};
};

