var $=function(id){return document.getElementById(id);}
var $$=function(tag){return document.createElement(tag);}
var evl=function(res){return eval('('+res+')');}
var COLORS=["#003399","#330099","#990000","#990066","#000000","#cc0033","#009900","#330000","#cc0000","#0000ff","#660000","#000000"];

function getRandomColor(){
  return COLORS[Math.floor(Math.random()*COLORS.length)];
}

var Class = {
  create: function() {
    return function() {
      this.initialize.apply(this, arguments);
    }
  }
}

String.prototype.TrimString = function(){
	stringin = this.replace( /^\s+/g, "" );
    return stringin.replace( /\s+$/g, "" );
}

String.prototype.replaceAll = function(search, replace){
    var regex = new RegExp(search, "g");
    return this.replace(regex, replace);
} 
String.prototype.GBLength=function()
{
    // replace将符合此正则的字符串替换成指定字符 然后在计算长度
    return this.replace(/[^\x00-\xff]/g,"**").length
}

function FormatNumber(srcStr,nAfterDot){
    var srcStr,nAfterDot;
    var resultStr,nTen;
    srcStr = ""+srcStr+"";
    strLen = srcStr.length;
    dotPos = srcStr.indexOf(".",0);
    if (dotPos == -1){
        resultStr = srcStr+".";
        for (i=0;i<nAfterDot;i++){
            resultStr = resultStr+"0";
        }
        return resultStr;
    } else{
        if ((strLen - dotPos - 1) >= nAfterDot){
            nAfter = dotPos + nAfterDot + 1;
            nTen =1;
            for(j=0;j<nAfterDot;j++){
            nTen = nTen*10;
        }
        resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen;
        return resultStr;
        } else{
            resultStr = srcStr;
            for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){
                resultStr = resultStr+"0";
            }
            return resultStr;
        }
    }
}

Date.prototype.ToCommentString = function(){
	var month = this.getMonth()+1;
	var pre=(month<10?"0":"");
	month=pre+month;
	var date = this.getDate();
	var pre2=(date<10?"0":"");
	var date =pre2+ date;
	
	var hour = this.getHours();
	var pre2=(hour<10?"0":"");
	var hour =pre2+ hour;
	var mins = this.getMinutes();
	var pre2=(mins<10?"0":"");
	var mins =pre2+ mins;
	var sec = this.getSeconds();
	var pre2=(sec<10?"0":"");
	var sec =pre2+ sec;
	
	return this.getYear()+"-"+month+"-"+date+" "+hour+":"+mins+":"+sec;
}


function launchFull(url, name) {
var str = "left=0,screenX=0,top=0,screenY=0,status=yes";

if (window.screen) {
  var ah = screen.availHeight -125;
  var aw = screen.availWidth - 49;
  str += ",height=" + ah;
  str += ",innerHeight=" + ah;
  str += ",width=" + aw;
  str += ",innerWidth=" + aw;
  str +=",status=no,scrollbars=yes";
} else {
  str += ",status=no,scrollbars=yes,resizable"; 
}
///,status=no,scrollbars=no

  return window.open(url, name, str);
}

function launchCenter(url, name, height, width) {

  str='status:no;help:no;dialogLeft:0px;dialogTop:0px;dialogWidth:'+width+'px;dialogHeight:'+height+'px';
  return showModelessDialog(url, name, str);
}
function launchWH(url, name,width,height) {
var str = "left=0,screenX=0,top=0,screenY=0";

if (window.screen) {
  var ah = width;
  var aw = height;
  str += ",height=" + ah;
  str += ",innerHeight=" + ah;
  str += ",width=" + aw;
  str += ",innerWidth=" + aw;
} else {
  str += ",resizable"; 
}
///,status=no,scrollbars=no
  return window.open(url, name, str);
}

Object.prototype.bindfunc = new Function();

Function.prototype.bind = function() {
  var __method = this, args = $A(arguments);
  var object = args.shift();
  object.bindfunc = __method;
  return function() {
  return __method.apply(object, args.concat($A(arguments)));
  }
}
var $A = Array.from = function(iterable) {
  if (!iterable) return [];
  if (iterable.toArray) {
    return iterable.toArray();
  } else {
    var results = [];
    for (var i = 0; i < iterable.length; i++)
      results.push(iterable[i]);
    return results;
  }
}

function getPosition(e) {
    e = e || window.event;
    var cursor = {x:0, y:0};
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    } 
    else {
        cursor.x = e.clientX + 
            (document.documentElement.scrollLeft || 
            document.body.scrollLeft) - 
            document.documentElement.clientLeft;
        cursor.y = e.clientY + 
            (document.documentElement.scrollTop || 
            document.body.scrollTop) - 
            document.documentElement.clientTop;
    }
    return cursor;
}


function getLeftPos(e)
{
    var left=e.offsetLeft;
    while (e=e.offsetParent)
    {
        left+=e.offsetLeft;
    }
    return left;
}
function getTopPos(e)
{
    var top=e.offsetTop;
    while (e=e.offsetParent)
    {
        top+=e.offsetTop;
    }
    return top;
}

function logerror(err,file,line){
   ajax.post("/pvkgame_arena/servlet/JSerrorLogServlet",null,"error="+err+"&file="+file+"&line="+line);
}


// ---
/*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
*/
function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];		
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}	
	}
	return (arrReturnElements)
}
// ---
// Revised version May 11th 2007
function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}	
	}
	return returnElements;
}
// ---
/*
	Revised to support looking for multiple class names,
	no matter in which order they're applied to the element
*/
function getElementsByClassName(oElm, strTagName, oClassNames){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var arrRegExpClassNames = new Array();
	if(typeof oClassNames == "object"){
		for(var i=0; i<oClassNames.length; i++){
			arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
		}
	}
	else{
		arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
	}
	var oElement;
	var bMatchesAll;
	for(var j=0; j<arrElements.length; j++){
		oElement = arrElements[j];
		bMatchesAll = true;
		for(var k=0; k<arrRegExpClassNames.length; k++){
			if(!arrRegExpClassNames[k].test(oElement.className)){
				bMatchesAll = false;
				break;
			}
		}
		if(bMatchesAll){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}
// ---
// Array support for the push method in IE 5
if(typeof Array.prototype.push != "function"){
	Array.prototype.push = ArrayPush;
	function ArrayPush(value){
		this[this.length] = value;
	}
}






