	/*uthell@gmail.com
  *
  **/
  Array.prototype.remove=function(dx)
  {    if(isNaN(dx)||dx>this.length){return false;}
    for(var i=0,n=0;i<this.length;i++)
    {
        if(this[i]!=this[dx])
        {
            this[n++]=this[i]
        }
    }
    this.length-=1
  }
	
String.prototype.trim= function() 
{ 
            return this.replace(/(^\s*)|(\s*$)/g, ""); 
}

function getObjectLength(o)
{
	var rs=0,i;
	for(var i in o)
	{
		rs++;
	}
	return rs;
}


function randomChar(m){
	var x="0123456789poiuytrewqasdfghjklmnbvcxzQWERTYUIOPLKJHGFDSAZXCVBNM";
	var tmp="";
	for(var i=0;i<m;i++) {
	tmp += x.charAt(Math.ceil(Math.random()*100000000)%x.length);
	}
	return tmp;
}

function randomNum(arrange){	
	return Math.floor(Math.random()*arrange);

}

function pause(numberMillis) {
	/*
	var dialogScript =
		'window.setTimeout(' +
		' function () { window.close(); }, ' + numberMillis + ');';
	if(window.addEventListener) {

	}else{
		var result =
			window.showModalDialog(
			'javascript:document.writeln(' +
			'"<script>' + dialogScript + '<' + '/script>")');
	};
	*/
}

var ClientDetect = {        init: function () {
                this.browser = this.searchString(this.dataBrowser) || "未知浏览器";
                this.version = this.searchVersion(navigator.userAgent)
                        || this.searchVersion(navigator.appVersion)
                        || "未知版本";
                this.OS = this.searchString(this.dataOS) || "未知 OS";
        },
        searchString: function (data) {
                for (var i=0;i<data.length;i++)        {
                        var dataString = data[i].string;
                        var dataProp = data[i].prop;
                        this.versionSearchString = data[i].versionSearch || data[i].identity;
                        if (dataString) {
                                if (dataString.indexOf(data[i].subString) != -1)
                                        return data[i].identity;
                        }
                        else if (dataProp)
                                return data[i].identity;
                }
        },
        searchVersion: function (dataString) {
                var index = dataString.indexOf(this.versionSearchString);
                if (index == -1) return;
                return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
        },
        dataBrowser: [
                {         string: navigator.userAgent,
                        subString: "OmniWeb",
                        versionSearch: "OmniWeb/",
                        identity: "OmniWeb"
                },
                {
                        string: navigator.vendor,
                        subString: "Apple",
                        identity: "Safari"
                },
                {
                        prop: window.opera,
                        identity: "Opera"
                },
                {
                        string: navigator.vendor,
                        subString: "iCab",
                        identity: "iCab"
                },
                {
                        string: navigator.vendor,
                        subString: "KDE",
                        identity: "Konqueror"
                },
                {
                        string: navigator.userAgent,
                        subString: "Firefox",
                        identity: "Firefox"
                },
                {
                        string: navigator.vendor,
                        subString: "Camino",
                        identity: "Camino"
                },
                {                                        string: navigator.userAgent,
                        subString: "Netscape",
                        identity: "Netscape"
                },
                {
                        string: navigator.userAgent,
                        subString: "MSIE",
                        identity: "Internet Explorer",
                        versionSearch: "MSIE"
                },
                {
                        string: navigator.userAgent,
                        subString: "Gecko",
                        identity: "Mozilla",
                        versionSearch: "rv"
                },
                {                                         string: navigator.userAgent,
                        subString: "Mozilla",
                        identity: "Netscape",
                        versionSearch: "Mozilla"
                }
        ],
        dataOS : [
                {
                        string: navigator.platform,
                        subString: "Win",
                        identity: "Windows"
                },
                {
                        string: navigator.platform,
                        subString: "Mac",
                        identity: "Mac"
                },
                {
                        string: navigator.platform,
                        subString: "Linux",
                        identity: "Linux"
                }
        ]

};


						function getElementPos(elementId)
			{
																var ua = navigator.userAgent.toLowerCase();
				var isOpera = (ua.indexOf('opera') != -1);
				var isIE = (ua.indexOf('msie') != -1 && !isOpera); 				var el = document.getElementById(elementId);
				if(el.parentNode === null || el.style.display == 'none')
				{
					return false;
				}
				var parent = null;
				var pos = [];
				var box;
				if(el.getBoundingClientRect)    				{
					box = el.getBoundingClientRect();
					var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
					var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
					return {x:box.left + scrollLeft, y:box.top + scrollTop};
				}
				else if(document.getBoxObjectFor)    				{
					box = document.getBoxObjectFor(el);
					var borderLeft = (el.style.borderLeftWidth)?parseInt(el.style.borderLeftWidth):0;
					var borderTop = (el.style.borderTopWidth)?parseInt(el.style.borderTopWidth):0;
					pos = [box.x - borderLeft, box.y - borderTop];
				}
				else    				{ 
					pos = [el.offsetLeft, el.offsetTop];
					parent = el.offsetParent;
					if (parent != el)
					{
						while (parent)
						{
							pos[0] += parent.offsetLeft;
							pos[1] += parent.offsetTop;
							parent = parent.offsetParent;
						}
					}
					if (ua.indexOf('opera') != -1 || ( ua.indexOf('safari') != -1 && el.style.position == 'absolute' ))
					{
						pos[0] -= document.body.offsetLeft;
						pos[1] -= document.body.offsetTop;
					}
				}
				if (el.parentNode)
				{
					parent = el.parentNode;
				}
				else
				{
					parent = null;
				}
				while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML')
				{ 					pos[0] -= parent.scrollLeft;
					pos[1] -= parent.scrollTop;
					if (parent.parentNode)
					{
						parent = parent.parentNode;
					}
					else
					{
						parent = null;
					}
				}
				return {x:pos[0], y:pos[1]};
			} 


function getPageSize() {
				var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	}
	else if (document.body.scrollHeight > document.body.offsetHeight){ 		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	}
	else { 		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {			windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight) { 		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	}
	else if (document.body) { 		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
		if(yScroll < windowHeight){
		pageHeight = windowHeight;
	}
	else { 
		pageHeight = yScroll;
	}

		if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	}
	else {
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}


function addHTML(oParentNode, sHTML) {
	if(window.addEventListener) {		var oRange = oParentNode.ownerDocument.createRange();
		oRange.setStartBefore(oParentNode);
		var oFrag = oRange.createContextualFragment(sHTML);
		oParentNode.appendChild(oFrag);
	}
	else {		oParentNode.insertAdjacentHTML("BeforeEnd", sHTML);
	}
}

function textAreaLimit(eId,limit){
	var textlen=$(eId).value.length;
	if(textlen>limit){
		$(eId).value=$(eId).value.substring(0,limit);
	}
}



function UrlEncode(str){
  var ret="";
  var strSpecial="!\"#$%&'()*+,/:;<=>?[]^`{|}~%";
  for(var i=0;i<str.length;i++){
   var chr = str.charAt(i);
    var c=str2asc(chr);
    if(parseInt("0x"+c) > 0x7f){
      ret+="%"+c.slice(0,2)+"%"+c.slice(-2);
    }else{
      if(chr==" ")
        ret+="+";
      else if(strSpecial.indexOf(chr)!=-1)
        ret+="%"+c.toString(16);
      else
        ret+=chr;
    }
  }
  return ret;
}

function UrlDecode(str){
  var ret="";
  for(var i=0;i<str.length;i++){
   var chr = str.charAt(i);
    if(chr == "+"){
      ret+=" ";
    }else if(chr=="%"){
     var asc = str.substring(i+1,i+3);
     if(parseInt("0x"+asc)>0x7f){
      ret+=asc2str(parseInt("0x"+asc+str.substring(i+4,i+6)));
      i+=5;
     }else{
      ret+=asc2str(parseInt("0x"+asc));
      i+=2;
     }
    }else{
      ret+= chr;
    }
  }
  return ret;
} 




function ConfirmClose() {
     window.event.returnValue = "你当前的更改还没有保存，将会丢失，是否继续？";
 }
 function ShowConfirmClose(turnOn) {
	 if(turnOn==false)
		document.body.onbeforeunload = null;
	 else
		document.body.onbeforeunload = ConfirmClose;	
 }
