//去掉左侧空白字符
String.prototype.leftTrim = function () {
	var whitespace = new String(" \t\n\r");
	var s = new String(this);
	if (whitespace.indexOf(s.charAt(0)) != -1) {
		var j = 0, i = s.length;
		while (j < i && whitespace.indexOf(s.charAt(j)) != -1) {
			j++;
		}
		s = s.substring(j, i);
	}
	return s;
}

//去掉右侧空白字符
String.prototype.rightTrim = function () {
	var whitespace = new String(" \t\n\r");
	var s = new String(this);
	if (whitespace.indexOf(s.charAt(s.length - 1)) != -1) {
		var i = s.length - 1;
		while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1) {
			i--;
		}
		s = s.substring(0, i + 1);
	}
	return s;
}

//去掉首尾空白字符
String.prototype.trim = function () {
	return this.leftTrim().rightTrim() ;
}

//获取字符串占多少字节
String.prototype.getBytesNum = function () {
	var ret = true;
	var len = 0;
	for (var i = 0; i < this.length; i++) {
		len++;
		if (this.charCodeAt(i) >= 255) {
			len++;
		}
	}
	return len;
}

//验证字符是否为Email地址
String.prototype.isMail = function () {
	var regexp = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
	return regexp.test(this);
}

//验证字符是否使用‘@’分隔
String.prototype.isMailWithCN = function () {
	var str = this.split("@") ;
	var flag = false ;
	if (str.length==2) {
		if (str[0].trim() != '' && str[1].trim() != '')
			flag = true ;
	}
	return flag ;
}

//URL格式验证
String.prototype.isURL = function () {
	var regexp = /^[A-Za-z]+:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
	return regexp.test(this);
}

//特殊字符验证
String.prototype.isSpecialStr = function () {
	var SPECIAL_STR = "~^*;'\"><[]{}\\|\u2018,.\u201c[]{}@#$%&";
	var result = new Array(2);
	result[0] = "false";
	result[1] = "";
	for (i = 0; i < this.length; i++) {
		if (SPECIAL_STR.indexOf(this.charAt(i)) != -1) {
			result[0] = "true";
			result[1] = this.charAt(i);
			return result;
		}
	}
	return result;
}

//判断字符是否只有字母和数字
String.prototype.isNumOrLetter = function () {
	var regexp = /^[A-Za-z0-9]+$/ ;
	return regexp.test(this);
}

//判断字符全部都是数字
String.prototype.isNum = function () {
	var regexp = /^[0-9]*$/ ;
	return regexp.test(this);
} 

//判断字符是由点和数字组成
String.prototype.isNumValue = function () {
	var regexp = /^[0-9\\.]*$/ ;
	return regexp.test(this);
}

//判断字符是否以str开头
String.prototype.startWith = function(str){
	if(str==null||str==""||this.length==0||str.length>this.length)
	  return false;
	if(this.substr(0,str.length)==str)
	  return true;
	else
	  return false;
	return true;
}

//判断字符是否以str结尾
String.prototype.endWith = function(str){
	if(str == null || str == "" || this.length==0 || str.length > this.length)
	  return false;
	if(this.substr(this.length-str.length,this.length) == str)
	  return true;
	else
	  return false;
	return true;
}

//字符截取
String.prototype.fixString = function(len,app){
	var j = 0;
	if (typeof(app) == 'undefined') {
		app = '...' ;
	}
	if (this.trim()=='') {
		return "";
	}
	for (var i = 0; i < this.length; i++) {
		if (this.charCodeAt(i) > 255) {
			j += 2;
		} else {
			j++;
		}
		if (j > len) {
			return this.substring(0, i) + app ;
		}
	}
	return str;
}

//转成整形
String.prototype.toInt = function(defaultValue){
	var n ;
	if (typeof(defaultValue) == 'undefined')	defaultValue = 0 ;
	try {
		n = parseInt(this) ;
		if (isNaN(n)) n = defaultValue ;
	}catch (ex) {
		n = defaultValue ;
	}
	return n ;
}

//转成浮点数
String.prototype.toFloat = function(defaultValue){
	var n ;
	if (typeof(defaultValue) == 'undefined')	defaultValue = 0 ;
	
	try {
		n = parseFloat(this) ;
		if (isNaN(n)) n = defaultValue ;
	}catch (ex) {
		n = defaultValue ;
	}
	return n ;
}

//格式化数字(千分位)
formatNum = function(num, digit){   
	if(!/^(\+|-)?(\d+)(\.\d+)?$/.test(num)) {
		return num;
  	}   
	var a = RegExp.$1,b = RegExp.$2,c = RegExp.$3;   
	var re = new RegExp().compile("(\\d)(\\d{3})(,|$)");   
	while(re.test(b))  
		b = b.replace(re, "$1,$2$3");   
	if (c && digit && new RegExp("^.(\\d{"+ digit +"})(\\d)").test(c)){   
		if (RegExp.$2>4)  
			c = (parseFloat(RegExp.$1)+1)/Math.pow(10,   digit);   
		else c = "."+ RegExp.$1;
  	}   
	return a +""+ b +""+ (c+"").substr((c+"").indexOf("."));   
}

//生成脚本
createScript = function(id,url) {
	if (document.getElementById(id)) document.body.removeChild(document.getElementById(id)) ;	
	var script = document.createElement("script") ;
	script.setAttribute('src',url+'&random='+Math.random(10));
	script.setAttribute('id',id) ;
	document.body.appendChild(script) ;
}

//异或操作，也就是通用的对称加密、解密操作
strXor = function(obj,key) {
	obj = unescape(obj) ;       
    var result = "";       
    for (var i=0; i<obj.length; i++)   
       result += String.fromCharCode(obj.charCodeAt(i)^key.charCodeAt(i%key.length));       
    document.write(result) ;
} 
//读取Cookie
getCookieByName = function(str) {
	var tmp,reg=new RegExp("(^| )"+str+"=([^;]*)(;|$)","gi");
	if(tmp=reg.exec(unescape(document.cookie)))	return(tmp[2]);
	return null;
}

//设置Cookie
setCookie = function(name,value) {
	var expdate = new Date() ;
	expdate.setFullYear(expdate.getFullYear() + 1);
	document.cookie = name + "=" + escape(value) + ";" + mainDomain + " expires=" + expdate.toGMTString() + "; path=/";
}
//查找对象X轴坐标位置
function findPosX(obj) {
      var curleft = 0;
      if(obj)
      {
	      if (obj.offsetParent) {
	          while (obj.offsetParent) {
	              curleft += obj.offsetLeft
	              obj = obj.offsetParent;
	          }
	      }
	      else if (obj.x) curleft += obj.x;
      }
      return curleft;
}
//查找对象Y轴坐标位置
function findPosY(obj) {      
      var curtop = 0;
      if(obj)
      {
	      if (obj.offsetParent) {
	          while (obj.offsetParent) {
	              curtop += obj.offsetTop
	              obj = obj.offsetParent;
	          }
	      }
	      else if (obj.y) curtop += obj.y;
      }
      return curtop;
}
