String.prototype.Trim = function(){ 
	return this.replace(/(^\s*)|(\s*$)/g, ""); 
} 

String.prototype.LTrim = function(){ 
	return this.replace(/(^\s*)/g, ""); 
} 

String.prototype.RTrim = function(){ 
	return this.replace(/(\s*$)/g, ""); 
} 

String.prototype.Aa0 = function(){
	for(var i=0;i<this.length;i++){
		var c = this.charCodeAt(i)
		if(!((c>=97 && c<=122)//a~z
		|| (c>=65 && c<=90)//A~Z
		|| (c>=48 && c<=57)//0~9
		))
			return false;
	}
	return true;
}
function witchNavigation(){//浏览器
   if(navigator.userAgent.indexOf("MSIE")>0)return 1;
   if(isFirefox=navigator.userAgent.indexOf("Firefox")>0)return 2;
   if(isSafari=navigator.userAgent.indexOf("Safari")>0)return 3;   
   if(isCamino=navigator.userAgent.indexOf("Camino")>0)return 4;
   if(isMozilla=navigator.userAgent.indexOf("Gecko/")>0)return 5;
   return 0;
}
/**
 * 输入的内容是否为有效的页码，输入的内容如“1,3,5-7,6”，如果有效，则被返回实际页码数组
 */
function isInvalidPage(page){
	var a = new Array();
	//逗号分解
	var s = page.split(",");
	for(var i=0;i<s.length;i++){
		//判断是否为整数值
		var regu = /^[-]{0,1}[0-9]{1,}$/;
		var flag = regu.test(s[i]);
		//如果不是整数值
		if(!flag){
			//减号分解
			var ss = s[i].split("-");
			//分解大小不等于2，则无效
			if(ss.length!=2)
				return null;
			//判断减号左右是否为整数
			var regu = /^[-]{0,1}[0-9]{1,}$/;
			var flag1 = regu.test(ss[0]);
			var regu = /^[-]{0,1}[0-9]{1,}$/;
			var flag2 = regu.test(ss[1]);
			if(!flag1 || !flag2)//如果有一个不是整数，则无效
				return null;
			if(parseInt(ss[0])<=0 || parseInt(ss[0])<=0)//如果小于等于零，则无效
				return null;
			
			//得到大值与小值
			var min = parseInt(ss[0]);
			var max = parseInt(ss[1]);
			if(min>max){
				min = parseInt(ss[1]);
				max = parseInt(ss[0]);
			}
			//从小值到大值迭代加入页码数组中
			for(var j=min;j<=max;j++)
				a.push(j);
		}
		else{//如果是整数值
			if(parseInt(s[i])<=0)//如果数值小于等于零，则无效
				return null;
			a.push(parseInt(s[i]));//加入页码数组中
		}
	}
	//对页码数组进行排序
	var b = a.sort(sortNumber);
	//如果数组大小为0，则无效
	if(b.length==0)
		return null;
	var c = new Array();
	c.push(b[0]);
	//迭代数组，如果后值与前值相等，则过滤掉
	for(var i=1;i<b.length;i++){
		if(b[i] == b[i-1])
			continue;
		c.push(b[i]);
	}
	//返回以逗号分割的页码组字符串
	return c.join(",");//如“1,3,5-7,6”，则返回“1,3,5,6,7”
}
function parseInteger(value,defaultMinValue,isNull,comp){ 

	if(defaultMinValue == undefined)
		defaultMinValue = 0;
	var regu = /^[-]{0,1}[0-9]{1,}$/;
	var flag = regu.test(defaultMinValue);
	if(!flag)
		defaultMinValue = 0;
		
	if(value.Trim()==""){
		if(isNull != undefined){
			if(isNull==true || isNull=="true")
				return "";
			else
				return parseInt(defaultMinValue);
		}
		else
			return defaultMinValue;
	}
	var regu = /^[-]{0,1}[0-9]{1,}$/;
	var flag = regu.test(value);
	if(!flag)
		value = defaultMinValue;
	if(comp != undefined && comp != null){
		if(comp == "<" && parseInt(value)<parseInt(defaultMinValue))
			value = defaultMinValue;
		else
		if(comp == ">" && parseInt(value)>parseInt(defaultMinValue))
			value = defaultMinValue;
	}
	return parseInt(value); 
} 
function sortNumber(a,b){
	return a - b;
}

function clone(myObj){//克隆对象
    if(typeof(myObj) != 'object') return myObj;
    if(myObj == null) return myObj;
    var myNewObj = new Object(); 
    for(var i in myObj) myNewObj[i] = clone(myObj[i]); 
    return myNewObj;
}
function cloneJson(jsonObj) {//深度克隆JSON对象
    var buf;   
    if (jsonObj instanceof Array) {   
        buf = [];   
        var i = jsonObj.length;   
        while (i--) {   
            buf[i] = cloneJson(jsonObj[i]);   
        }   
        return buf;   
    }else if (jsonObj instanceof Object){   
        buf = {};   
        for (var k in jsonObj) {   
            buf[k] = cloneJson(jsonObj[k]);   
        }   
        return buf;   
    }else{   
        return jsonObj;   
    }   
}   
function randomStr(strLen){//根据长度随机产生字符串
	  var seed = new Array(   
	  'abcdefghijklmnopqrstuvwxyz',   
	  'ABCDEFGHIJKLMNOPQRSTUVWXYZ',   
	  '0123456789'   
	  );   
	  var idx,i;   
	  var result = '';   
	  for(i=0;i<strLen;i++){   
	  	idx = Math.floor(Math.random()*3);   
	  	result += seed[idx].substr(Math.floor(Math.random()*(seed[idx].length)),1);   
	  }   
	  return   result;     
}
function randomStrForId(strLen){//根据长度随机产生字符串
	  var seed = new Array(   
	  'abcdefghijklmnopqrstuvwxyz',   
	  'ABCDEFGHIJKLMNOPQRSTUVWXYZ',   
	  '0123456789'   
	  );
	  var idx,i;   
	  var result = '';   
	  for(i=0;i<strLen;i++){
	  	if(i==0)   
	  		idx = Math.floor(Math.random()*2);
	  	else
	  		idx = Math.floor(Math.random()*3);   
	  	result += seed[idx].substr(Math.floor(Math.random()*(seed[idx].length)),1);   
	  }   
	  return   result;     
} 
function checkDate(theDate){
	  var reg = /^\d{4}-((0{0,1}[1-9]{1})|(1[0-2]{1}))-((0{0,1}[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1}))$/;  
	  var result=true;
	  if(!reg.test(theDate))
	    result = false;
	  else{
	    var arr_hd=theDate.split("-");
	    var dateTmp;
	    dateTmp= new Date(arr_hd[0],parseFloat(arr_hd[1])-1,parseFloat(arr_hd[2]));
	    if(dateTmp.getFullYear()!=parseFloat(arr_hd[0])
	       || dateTmp.getMonth()!=parseFloat(arr_hd[1]) -1 
	        || dateTmp.getDate()!=parseFloat(arr_hd[2])){
	        result = false
	    }
	  }
	  return result;
}
function fetchElementsById(tag, id) {//获得ID相同的所有元素
      
      var elem = document.getElementsByTagName(tag);
      var arr = new Array();
      for(var i = 0,iarr = 0; i < elem.length; i++) {
           att = elem[i].getAttribute("id");
           if(att == id) {
                arr[iarr] = elem[i];
                iarr++;
           }
      }
      return arr;
}
function fetchElementsByAttribute(obj,attrName,attrValue){
	var elem = obj.childNodes;
      var arr = new Array();
      for(var i = 0,iarr = 0; i < elem.length; i++) {
      	   if(elem[i].tagName == null || elem[i].tagName == undefined)
      	   	continue;
           att = elem[i].getAttribute(attrName);
           if(att == attrValue) {
                arr[iarr] = elem[i];
                iarr++;
           }
      }
      return arr;
}
function getElementPositionX(elemID){
   var offsetTrail = elemID;
   var offsetLeft = 0;

   while(offsetTrail){
      offsetLeft += offsetTrail.offsetLeft;
      offsetTrail = offsetTrail.offsetParent;
   }

    if (navigator.userAgent.indexOf("Mac") != -1 &&
        typeof(document.body.leftMargin) != "undefined") {
        offsetLeft += document.body.leftMargin;
    }
    return offsetLeft;
}
function getElementPositionY(elemID){
   var offsetTrail = elemID;
   var offsetTop = 0;

   while(offsetTrail){
      offsetTop += offsetTrail.offsetTop;
      offsetTrail = offsetTrail.offsetParent;
   }

    if (navigator.userAgent.indexOf("Mac") != -1 &&
        typeof(document.body.leftMargin) != "undefined") {
        offsetTop += document.body.topMargin;
    }
    return offsetTop;
}

var ObjPosition = {
	target:null,
	x:-1,
	y:-1,
	init:function(ATarget,stopParentId){
		ObjPosition.target = ATarget;
		ObjPosition.x = ObjPosition.target.offsetLeft;
		ObjPosition.y = ObjPosition.target.offsetTop;
	    
	    ObjPosition.target = ObjPosition.target.offsetParent;
	    while (ObjPosition.target){
	    
	    	if(stopParentId!=undefined && stopParentId==ObjPosition.target.id)
	        	break;
	        	
	        ObjPosition.x += ObjPosition.target.offsetLeft;
	        ObjPosition.y += ObjPosition.target.offsetTop;
	        ObjPosition.target = ObjPosition.target.offsetParent;
	        
	    }
	},
	getX : function(){
		return ObjPosition.x;
	},
	getY : function(){
		return ObjPosition.y;
	}
}
var ObjIsInner = {
	target : null,
	_isInner : false,
	testStr : "",
	init:function(ATarget,stopParentId){
		ObjIsInner.target = ATarget;
	    
	    ObjIsInner._isInner = false;
	    ObjIsInner.testStr = "";
	    while(ObjIsInner.target){
	    	ObjIsInner.testStr += ObjIsInner.target.id+",";
	    	if(stopParentId == ObjIsInner.target.id){
	    		ObjIsInner._isInner = true;
	        	break;
	        }
	        ObjIsInner.target = ObjIsInner.target.offsetParent;
	    }
	},
	isInner : function(){
		return ObjIsInner._isInner;
	},
	getTestStr : function(){
		return ObjIsInner.testStr;
	}
}
function getEventTarget(event){
	var navFlag = witchNavigation();
	var targetObj = null;
	if(navFlag == 1)
		return event.srcElement;
	else
		return event.target;
}

