  var _oddsUitl = new Object();

_oddsUitl.commonCompany = new Array(1,127,4,1001,1006, 1015,5,7,19); //澳门、188Bet、立博、皇冠、新三星、云鼎、William Hill、Victor Chandler、bet365、Canbet
_oddsUitl.initCompany = function() {
  _oddsUitl.companyList = new _glodds.List();
  _oddsUitl.companyList.Add("1", new _glodds.Company("1^*^澳门^澳门^澳门^^"));
  _oddsUitl.companyList.Add("199", new _glodds.Company("199^*^12bet^12bet^12bet^^"));
  _oddsUitl.companyList.Add("19", new _glodds.Company("19^*^bet365^bet365^bet365^^"));
  _oddsUitl.companyList.Add("4", new _glodds.Company("4^*^立博^立博^立博^^"));
  _oddsUitl.companyList.Add("1001", new _glodds.Company("1001^*^皇冠^皇冠^皇冠^^"));
  //_oddsUitl.companyList.Add("1015", new _glodds.Company("1015^*^新三星^新三星^新三星^^"));
  //_oddsUitl.companyList.Add("1006", new _glodds.Company("1006^*^云鼎^雲鼎^云鼎^^"));
 // _oddsUitl.companyList.Add("6", new _glodds.Company("6^*^博天堂^博天堂^博天堂^^"));
  //_oddsUitl.companyList.Add("126", new _glodds.Company("126^*^10Bet^10Bet^10Bet^^"));
  //_oddsUitl.companyList.Add("201", new _glodds.Company("201^*^乐天堂^乐天堂^Asiabet^^"));
  _oddsUitl.companyList.Add("7", new _glodds.Company("7^*^威廉^威廉^威廉^^"));
  //_oddsUitl.companyList.Add("172", new _glodds.Company("172^*^Canbet^Canbet^Canbet^^"));
  //_oddsUitl.companyList.Add("29", new _glodds.Company("29^*^BetInternet^BetInternet^BetInternet^^"));
  //_oddsUitl.companyList.Add("24", new _glodds.Company("24^*^BWin^BWin^BWin^^"));
  _oddsUitl.companyList.Add("127", new _glodds.Company("127^*^188Bet^188Bet^188Bet^^"));
  //_oddsUitl.companyList.Add("110", new _glodds.Company("110^*^wbexonline^wbexonline^wbexonline^^"));
  _oddsUitl.companyList.Add("5", new _glodds.Company("5^*^钱德勒-伟德(VC-MAN)^钱德勒-伟德(VC-MAN)^钱德勒-伟德(VC-MAN)^^"));
}
_oddsUitl.defaultCompany = new Array(1, 199, 19, 7);
_oddsUitl.getCompanyType = function(id, name) {
  for(var i=0; i<_oddsUitl.commonCompany.length; i++) {
    if(id==_oddsUitl.commonCompany[i]) return "*";
  }

  if(!name || name.length==0) return "|";
  var c = name.charAt(0);
  var s;
  if((c>='A' && c<='Z') || (c>='a' && c<='z'))
    s = c.toUpperCase();
  else if(c>='0' && c<='9')
    s = "0";
  else
    s = "@";
  return s;
}
_oddsUitl.getCCSort = function(id) {
  for(var i=0; i<_oddsUitl.commonCompany.length; i++) {
    if(id==_oddsUitl.commonCompany[i]) return i;
  }
  return id+10000;
}


_oddsUitl.oddsVs = new Array();
_oddsUitl.oddsVs[0] = new Array('平手', '0');
_oddsUitl.oddsVs[1] = new Array('平手/半球', '0/0.5');
_oddsUitl.oddsVs[2] = new Array('半球', '0.5');
_oddsUitl.oddsVs[3] = new Array('半球/一球', '0.5/1');
_oddsUitl.oddsVs[4] = new Array('一球', '1');
_oddsUitl.oddsVs[5] = new Array('一球/球半', '1/1.5');
_oddsUitl.oddsVs[6] = new Array('球半', '1.5');
_oddsUitl.oddsVs[7] = new Array('球半/两球', '1.5/2');
/*_oddsUitl.oddsVs[8] = new Array('两球', '2');
_oddsUitl.oddsVs[9] = new Array('两球/两球半', '2/2.5');
_oddsUitl.oddsVs[10] = new Array('两球半', '2.5');
_oddsUitl.oddsVs[11] = new Array('两球半/三球', '2.5/3');
_oddsUitl.oddsVs[12] = new Array('三球', '3');
_oddsUitl.oddsVs[13] = new Array('三球/三球半', '3/3.5');
_oddsUitl.oddsVs[14] = new Array('三球半', '3.5');
_oddsUitl.oddsVs[15] = new Array('三球半/四球', '3.5/4');
_oddsUitl.oddsVs[16] = new Array('四球', '4');
_oddsUitl.oddsVs[17] = new Array('四球/四球半', '4/4.5');
_oddsUitl.oddsVs[18] = new Array('四球半', '4.5');
_oddsUitl.oddsVs[19] = new Array('四球半/五球', '4.5/5');
_oddsUitl.oddsVs[20] = new Array('五球', '5');
_oddsUitl.oddsVs[21] = new Array('五球/五球半', '5/5.5');*/
var ddc = ["两","三","四","五","六","七","八","九","十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十"];
for(var ii=0; ii<ddc.length-1; ii++) {
  _oddsUitl.oddsVs[ii*4+8] = new Array(ddc[ii]+'球', (ii+2)+'');
  _oddsUitl.oddsVs[ii*4+9] = new Array(ddc[ii]+'球/'+ddc[ii]+'球半', (ii+2)+'/'+(ii+2)+'.5');
  _oddsUitl.oddsVs[ii*4+10] = new Array(ddc[ii]+'球半', (ii+2)+'.5');
  _oddsUitl.oddsVs[ii*4+11] = new Array(ddc[ii]+'球半/'+ddc[ii+1]+'球', (ii+2)+'.5/'+(ii+3));
}

_oddsUitl.VsType = new Array();
_oddsUitl.VsType[0] = new Array("", "-");
_oddsUitl.VsType[1] = new Array("受让", "+");

_oddsUitl.matchLevel = new Array();
_oddsUitl.matchLevel[0] = new Array("第三轮", "第三輪", "3rd round");
_oddsUitl.matchLevel[1] = new Array("普通联赛", "普通聯賽", "League match");
_oddsUitl.matchLevel[2] = new Array("无级别赛事", "無級別賽事", "");
_oddsUitl.matchLevel[3] = new Array("预选赛", "預選賽", "Qualifying Round");
_oddsUitl.matchLevel[4] = new Array("小组赛", "小組賽", "Group phase");
_oddsUitl.matchLevel[5] = new Array("第一阶段小组赛", "第一階段小組賽", "First Qualfying Round");
_oddsUitl.matchLevel[6] = new Array("第二阶段小组赛", "第二階段小組賽", "Second Qualfying Round");
_oddsUitl.matchLevel[7] = new Array("第二轮", "第二輪", "2nd round");
_oddsUitl.matchLevel[8] = new Array("六十四强", "六十四強", "32nd-final");
_oddsUitl.matchLevel[9] = new Array("三十二强", "三十二強", "16th-final");
_oddsUitl.matchLevel[10] = new Array("十六强", "十六強", "8th-final");
_oddsUitl.matchLevel[11] = new Array("八强", "八強", "Quater-final");
_oddsUitl.matchLevel[12] = new Array("半决赛", "半決賽", "Semifinal");
_oddsUitl.matchLevel[13] = new Array("三、四名决赛", "三四名決賽", "3rd Place Match");
_oddsUitl.matchLevel[14] = new Array("决赛", "決賽", "Final");
_oddsUitl.matchLevel[15] = new Array("资格赛", "資格賽", "Qualfying Match");
_oddsUitl.matchLevel[16] = new Array("资格赛第一轮", "資格賽第一輪", "Qualfying Round1");
_oddsUitl.matchLevel[17] = new Array("资格赛第二轮", "資格賽第二輪", "Qualfying Round2");
_oddsUitl.matchLevel[18] = new Array("资格赛第三轮", "資格賽第三輪", "Qualfying Round3");
_oddsUitl.matchLevel[19] = new Array("资格赛半决赛", "資格賽半決賽", "Qualfying Semifinal");
_oddsUitl.matchLevel[20] = new Array("资格赛决赛", "資格賽決賽", "Qualfying Final");
_oddsUitl.matchLevel[21] = new Array("第一轮", "第一輪", "1st round");
_oddsUitl.matchLevel[22] = new Array("升级附加赛", "升級附加賽", "Promotion Playoffs");
_oddsUitl.matchLevel[23] = new Array("保级附加赛", "保級附加賽", "Regelation Playoffs");
_oddsUitl.matchLevel[24] = new Array("单循环赛", "單循環賽", "Single Round Robin");
_oddsUitl.matchLevel[25] = new Array("双循环赛", "雙循環賽", "Double Round Robin");
_oddsUitl.matchLevel[26] = new Array("常规赛", "常規賽", "Regular");
_oddsUitl.matchLevel[27] = new Array("季后赛", "季後賽", "Playoff");
_oddsUitl.matchLevel[28] = new Array("季前赛", "季前賽", "Preseason");
_oddsUitl.matchLevel[29] = new Array("东部决赛", "東部決賽", "Eastern-Final");
_oddsUitl.matchLevel[30] = new Array("西部决赛", "西部決賽", "Western-Final");
_oddsUitl.matchLevel[31] = new Array("总决赛", "總決賽", "Final");
_oddsUitl.matchLevel[32] = new Array("其它", "其它", "Others");
_oddsUitl.matchLevel[33] = new Array("附加赛", "附加賽", "Play-off");
_oddsUitl.matchLevel[34] = new Array("五、六名决赛", "五六名決賽", "5th Match");
_oddsUitl.matchLevel[37] = new Array("东部半决赛", "東部半決賽", "Eastern-Semifinal");
_oddsUitl.matchLevel[38] = new Array("西部半决赛", "西部半決賽", "Western-Semifinal");
_oddsUitl.matchLevel[39] = new Array("第四轮", "第四輪", "4th Round");
_oddsUitl.matchLevel[40] = new Array("第五轮", "第五輪", "5th Round");
_oddsUitl.matchLevel[41] = new Array("第六轮", "第六輪", "6th Round");

_oddsUitl.matchStatus = new Array();
_oddsUitl.matchStatus[0] = new Array("", "", "");
_oddsUitl.matchStatus[1] = new Array("未", "未", "");
_oddsUitl.matchStatus[2] = new Array("待", "待", "FT ONLY");
_oddsUitl.matchStatus[3] = new Array("上", "上", "1st");
_oddsUitl.matchStatus[4] = new Array("下", "下", "2nd");
_oddsUitl.matchStatus[5] = new Array("半", "半", "HT");
_oddsUitl.matchStatus[6] = new Array("完", "完", "FT");
_oddsUitl.matchStatus[7] = new Array("加", "加", "Extra");
_oddsUitl.matchStatus[8] = new Array("加上", "加上", "");
_oddsUitl.matchStatus[9] = new Array("加下", "加下", "");
_oddsUitl.matchStatus[10] = new Array("加完", "加完", "");
_oddsUitl.matchStatus[11] = new Array("点球", "點球", "Penalty");
_oddsUitl.matchStatus[12] = new Array("停", "停", "Pause");
_oddsUitl.matchStatus[13] = new Array("斩", "斬", "Suspend");
_oddsUitl.matchStatus[14] = new Array("取消", "取消", "Cancel");
_oddsUitl.matchStatus[15] = new Array("改期", "改期", "Postp");
_oddsUitl.matchStatus[16] = new Array("延时", "延時", "");


_oddsUitl.getVsName = function(vsId, typ) {
  var str = "";
  var vid = vsId;
  if(!isNaN(parseInt(vid))) {
    var tt = 1;
    if(String(vid).length>0 && String(vid).substring(0,1)=="-") {
      tt = 0;
      vid = Math.abs(vid);
    }
    str = _oddsUitl.getVsTypeName(tt, typ);
    if(vid>=0 && vid<_oddsUitl.oddsVs.length) {
      str += _oddsUitl.oddsVs[vid][(typ=="en" || typ=="2")?1:0];
    }
  }

  return "<font color=blue>"+str+"</font>";
}

_oddsUitl.getVsTypeName = function(typeId, typ) {
  return _oddsUitl.VsType[typeId==1?1:0][(typ=="en" || typ=="2")?1:0];
}

_oddsUitl.getTotalName = function(tId) {
  var str = "";
  if(!isNaN(parseInt(tId)) && tId>=0 && tId<_oddsUitl.oddsVs.length) {
    str = _oddsUitl.oddsVs[tId][1];
  }

  return "<font color=blue>"+str+"</font>";
}

_oddsUitl.getPeriod = function(period, ll) {
  if(period=="0")
    return "参考盘";
  else if(period=="2")
    return "初盘";
  else if(ll)
    return "当前赔率";
  else
    return "";
}

_oddsUitl.getLevelName = function(levelId, lang) {
  var str = "";
  var l = (lang=="en"?2:(lang=="tr"?1:0));
  if(!isNaN(parseInt(levelId)) && levelId>=0 && levelId<_oddsUitl.matchLevel.length) {
    str = _oddsUitl.matchLevel[levelId][l];
  }
  return str;
}

_oddsUitl.getRoundName = function(roundNum, lang) {
  var str = "";
  if(lang=="en")
    str = "Round "+roundNum;
  else if(lang=="tr")
    str = "第"+roundNum+"輪";
  else
    str = "第"+roundNum+"轮";
  return str;
}

_oddsUitl.getStatusName = function(statusId, lang) {
  var str = "";
  var l = (lang=="en"?2:(lang=="tr"?1:0));
  if(!isNaN(parseInt(statusId)) && statusId>=0 && statusId<_oddsUitl.matchLevel.length) {
    str = _oddsUitl.matchStatus[statusId][l];
  }
  return str;
}


_oddsUitl.getUrlArg = function(strArg) {
  var _url = location.href;
  if(_url.substring(_url.length-1)=="#")
    _url=_url.substring(0,_url.length-1);
  _url=_url + "&";
  var regex = new RegExp("(\\?|\\&)" + strArg + "=([^\\&\\?]*)\\&", "gi");
  if (! regex.test(_url)) return "";
  var arr = regex.exec(_url);
  return RegExp.$2;
}

_oddsUitl.getRndStr = function(len) {							
  var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";				
  var ret = "", n;
  for (var i=0; i<len; i++) {
    n = Math.round(Math.random()*(str.length-1));
    ret += str.substring(n, n+1);
  }
  return ret;
}

_oddsUitl.setCookie = function(name, value) {
  var argv = arguments;
  var argc = arguments.length;
  var expires = (argc > 2) ? argv[2] : null;
  var path    = (argc > 3) ? argv[3] : null;
  var domain  = (argc > 4) ? argv[4] : null;
  var secure  = (argc > 5) ? argv[5] : false;
  document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null)  ? "" : ("; domain=" + domain)) + ((secure == true)  ? "; secure" : "");
}

_oddsUitl.getCookie = function(name) {
  var c = document.cookie;
  var n,k,t;

  t = name+"=";
  n = c.indexOf(t);
  if(n >= 0)
  {
    k = c.substring(n+t.length);
    n = k.indexOf(";");
    if(n>=1) k = k.substring(0,n);
    return unescape(k);
  }
  return null;
}


_oddsUitl.getDayStr = function(dt) {
  return dt.getFullYear()+"-"+(dt.getMonth()+1)+"-"+dt.getDate();
}

_oddsUitl.getTimeStr = function(dt) {
  return dt.getHours()+":"+(dt.getMinutes()<10?"0":"")+dt.getMinutes()+":"+(dt.getSeconds()<10?"0":"")+dt.getSeconds();
}

_oddsUitl.getDtStr = function(dt) {
  return (dt.getMonth()+1)+"-"+dt.getDate()+" "+(dt.getHours()<10?"0":"")+dt.getHours()+":"+(dt.getMinutes()<10?"0":"")+dt.getMinutes();
}

_oddsUitl.getDateTimeStr = function(dt) {
  return dt.getFullYear()+"-"+(dt.getMonth()+1)+"-"+dt.getDate()+" "+(dt.getHours()<10?"0":"")+dt.getHours()+":"+(dt.getMinutes()<10?"0":"")+dt.getMinutes();
}

_oddsUitl.getWeekStr = function(dt) {
  var ww = ["日", "一", "二", "三", "四", "五", "六"];
  return "星期" + ww[dt.getDay()];
}

_oddsUitl.getDate = function(str) {
  var p = str.split("-");
  return new Date(p[0], parseInt(p[1],10)-1, p[2]);
}


_oddsUitl.getEuropeRate = function(win, draw, lose) {
  var ret = new Object();

  if(win==0 || draw==0 || lose==0) {
    ret.retRate = "--";
    ret.winRate = "--";
    ret.drawRate = "--";
    ret.loseRate = "--";
  } else {
    ret.r_ret = 1/(1/win+1/draw+1/lose);
    ret.r_win = ret.r_ret/win;
    ret.r_draw = ret.r_ret/draw;
    ret.r_lose = ret.r_ret/lose;

    ret.retRate = (Math.round(ret.r_ret*1000)/10) + "%";
    ret.winRate = (Math.round(ret.r_win*1000)/10) + "%";
    ret.drawRate = (Math.round(ret.r_draw*1000)/10) + "%";
    ret.loseRate = (Math.round(ret.r_lose*1000)/10) + "%";
  }

  return ret;
}



  //定义namespace
  var _glodds = new Object();
  //公共变量
  _glodds.SplitDomain = "$";
  _glodds.SplitRecord = "~";
  _glodds.SplitColumn = "^";


  //联赛项类
  _glodds.League = function(infoStr) {
    var infoArr = infoStr.split(_glodds.SplitColumn);
    this.lId = infoArr[0];
    this.cnName = infoArr[1];
    this.trName = infoArr[2];
    this.enName = infoArr[3];
    this.color = infoArr[4];
    this.defShow = infoArr[5];

    this.matchNum = 0;
    this.overNum = 0;
    this.getNum = function(md) {
      return md==0?this.matchNum:this.overNum;
    }

    if(typeof(this.color)!="undefined" && this.color!="" && this.color.substring(0, 1)!="#")
      this.color = "#" + this.color;

    this.getName = function(lang) {
      if(lang=="en")
        return this.enName;
      else if(lang=="tr")
        return this.trName;
      else
        return this.cnName;
    }
  }


  //比赛项类
  _glodds.Match = function(infoStr) {
    var infoArr = infoStr.split(_glodds.SplitColumn);
    this.mId = infoArr[0];
    this.lId = infoArr[1];
    this.koTimeUTC = parseInt(infoArr[2], 10);
    this.koTime = new Date(this.koTimeUTC * 1000);
    this.t1Id = infoArr[3];
    this.t1CnName = infoArr[4];
    this.t1TrName = infoArr[5];
    this.t1EnName = infoArr[6];
    this.t1Position = infoArr[7];
    this.t2Id = infoArr[8];
    this.t2CnName = infoArr[9];
    this.t2TrName = infoArr[10];
    this.t2EnName = infoArr[11];
    this.t2Position = infoArr[12];
    this.matchTv = infoArr[13];

    this.koDay = _oddsUitl.getDayStr(this.koTime);
    this.bOver = false;

    if(this.t1CnName.length>8) this.t1CnName=this.t1CnName.substring(0,8);
    if(this.t1TrName.length>8) this.t1TrName=this.t1TrName.substring(0,8);
    if(this.t2CnName.length>8) this.t2CnName=this.t2CnName.substring(0,8);
    if(this.t2TrName.length>8) this.t2TrName=this.t2TrName.substring(0,8);

    this.getT1Name = function(lang) {
      if(lang=="en")
        return this.t1EnName;
      else if(lang=="tr")
        return this.t1TrName;
      else
        return this.t1CnName;
    }

    this.getT2Name = function(lang) {
      if(lang=="en")
        return this.t2EnName;
      else if(lang=="tr")
        return this.t2TrName;
      else
        return this.t2CnName;
    }
  }


  //公司项类
  _glodds.Company = function(infoStr) {
    var infoArr = infoStr.split(_glodds.SplitColumn);
    this.cId = infoArr[0];
    this.cType = infoArr[1];
    this.cnName = infoArr[2];
    this.trName = infoArr[3];
    this.enName = infoArr[4];
    this.cnCtName = infoArr[5];
    this.trCtName = infoArr[6];
    this.enCtName = infoArr[7];

    this.getName = function(lang) {
      var name = this.getName2(lang);
      /*if(this.cId=="5") {
        name = this.getNameT(lang);
      }
      if(this.cId=="127") {
        name = "<a href='http://www.betbrain.com/bookieGooooal.do?dealerId=3000385&language=zh_CN&site=757' target='_blank'>" + name + "</a>";
     // } else if(this.cId=="29") {
     //   name = "<a href='http://www.betinternet.com/zh/console.bet?affiliateid=194' target='_blank'>" + name + "</a>";
     // } else if(this.cId=="172") {
     //   name = "<a href='http://record.commissionking.com/_c81fc77e822081b87c3da1f65ac5a2a5/1/' target='_blank'>" + name + "</a>";
      } else if(this.cId=="201") {
        name = "<a href='http://www.asiabet88.com/banner/gooooal/index.htm' target='_blank'>" + name + "</a>";
      } else if(this.cId=="199") {
        name = "<a href='http://www.12biying.com/index.aspx?lng=cs' target='_blank'>" + name + "</a>";
      }*/
      return name;
    }

    this.getName2 = function(lang) {
      /*if(this.cId=="5") {
        return "<img src='http://pic.gooooal.com/images/100078/100078087.gif'>";
      }
      if(this.cId=="127") {
        return "<img src='http://pic.gooooal.com/images/100001/100001343.gif'>";
      //} else if(this.cId=="29") {
      //  return "<img src='http://pic.gooooal.com/images/100005/100005467.GIF'>";
      //} else if(this.cId=="172") {
      //  return "<img src='http://pic.gooooal.com/images/100013/100013081.jpg'>";
        } else if(this.cId=="201") {
          return "<img src='http://pic.gooooal.com/images/100030/100030593.jpg'>";
      } else if(this.cId=="199") {
        return "<img src='http://pic.gooooal.com/userCenter/images/12BET_logo4.gif'>";
      } else*/ {
        return this.getNameT(lang);
      }
    }

    this.getNameT = function(lang) {
      if(lang=="en")
        return this.enName;
      else if(lang=="tr")
        return this.trName;
      else
        return this.cnName;
    }

    this.getCtName = function(lang) {
      if(lang=="en")
        return this.enCtName;
      else if(lang=="tr")
        return this.trCtName;
      else
        return this.cnCtName;
    }
  }


  //赔率信息
  _glodds.OddsInfo = function(infoStr) {
    var infoArr = infoStr.split(_glodds.SplitColumn);
    this.mId = infoArr[0];
    this.sId = infoArr[1];
    this.oType = infoArr[2];
    this.host = infoArr[3];
    this.vs = infoArr[4];
    this.visit = infoArr[5];
    this.hostF = infoArr[6];
    this.vsF = infoArr[7];
    this.visitF = infoArr[8];

    this.chgTime = 0;

    this.getOdds = function(idx) {
      if(idx==1)
        return this.host;
      else if(idx==2)
        return this.vs;
      else if(idx==3)
        return this.visit;
      else if(idx==4)
        return this.hostF;
      else if(idx==5)
        return this.vsF;
      else if(idx==6)
        return this.visitF;
    }

    this.setOdds = function(idx, value) {
      if(idx==1)
        this.host = value;
      else if(idx==2)
        this.vs = value;
      else if(idx==3)
        this.visit = value;
      else if(idx==4)
        this.hostF = value;
      else if(idx==5)
        this.vsF = value;
      else if(idx==6)
        this.visitF = value;
    }
  }


  //变化数据
  _glodds.OddsChg = function(infoStr) {
    var infoArr = infoStr.split(_glodds.SplitColumn);
    this.mId = infoArr[0];
    this.cId = infoArr[1];
    this.oType = infoArr[2];
    this.sId = infoArr[3];
    this.chgTimeUTC = parseInt(infoArr[4], 10);
    this.chgTime = new Date(this.chgTimeUTC * 1000);
    this.host = infoArr[5];
    this.vs = infoArr[6];
    this.visit = infoArr[7];

    this.getOdds = function(idx) {
        if(idx==1) return this.host;
        else if(idx==2) return this.vs;
        else if(idx==3) return this.visit;
    }
  }


  _glodds.ChgInfo = function(mId, cId, sId, lt, pos, gol, ov, nv, ct) {
    this.mId = mId;
    this.cId = cId;
    this.sId = sId;
    this.leftTime = lt;
    this.pos = pos;
    this.gol = gol;
    this.oldValue = ov;
    this.newValue = nv;
    this.chgTime = ct;
  }



  //赛事信息（单场）
  _glodds.Match_d = function(infoStr) {
    var infoArr = infoStr.split(_glodds.SplitColumn);
    this.mId = infoArr[0];
    this.lId = infoArr[1];
    this.koTimeUTC = parseInt(infoArr[2], 10);
    this.koTime = new Date(this.koTimeUTC * 1000);
    this.statusId = infoArr[3];
    this.seasonId = infoArr[4];
    this.levelId = infoArr[5];
    this.groupId = infoArr[6];
    this.roundNum = infoArr[7];
    this.t1Score = infoArr[8];
    this.t2Score = infoArr[9];
    this.t1HalfScore = infoArr[10];
    this.t2HalfScore = infoArr[11];
    this.t1Id = infoArr[12];
    this.t1CnName = infoArr[13];
    this.t1TrName = infoArr[14];
    this.t1EnName = infoArr[15];
    this.t1Position = infoArr[16];
    this.t1Logo = infoArr[17];
    this.t2Id = infoArr[18];
    this.t2CnName = infoArr[19];
    this.t2TrName = infoArr[20];
    this.t2EnName = infoArr[21];
    this.t2Position = infoArr[22];
    this.t2Logo = infoArr[23];
    this.lCnName = infoArr[24];
    this.lTrName = infoArr[25];
    this.lEnName = infoArr[26];
    this.seasonType = infoArr[27];
    this.place = infoArr[28];

   // if(this.t1Logo=="") this.t1Logo = "http://data.gooooal.com/img/team/"+this.t1Id+"_s.jpg";
   // if(this.t2Logo=="") this.t2Logo = "http://data.gooooal.com/img/team/"+this.t2Id+"_s.jpg";

    this.getT1Name = function(lang) {
      if(lang=="en")
        return this.t1EnName;
      else if(lang=="tr")
        return this.t1TrName;
      else
        return this.t1CnName;
    }

    this.getT2Name = function(lang) {
      if(lang=="en")
        return this.t2EnName;
      else if(lang=="tr")
        return this.t2TrName;
      else
        return this.t2CnName;
    }

    this.getLName = function(lang) {
      if(lang=="en")
        return this.lEnName;
      else if(lang=="tr")
        return this.lTrName;
      else
        return this.lCnName;
    }

    this.getSeasonName = function(lang) {
      var nn = new Array(["赛季", "賽季"])
      var str = this.seasonId;
      if(this.seasonType==1) str = this.seasonId+"-"+(parseInt(this.seasonId)+1);
      if(lang=="en") {
        return ((this.seasonType==1 || this.seasonType==2)?"Season":"Year") + str;
      } else {
        return str + ((this.seasonType==1 || this.seasonType==2)?(lang=="tr"?"賽季":"赛季"):"年");
      }
    }

    this.getRoundInfo = function(lang) {
      var str = "";
      if(this.levelId!="1" && this.levelId!="2") {
        str = _oddsUitl.getLevelName(this.levelId, lang);
      }
      if(this.roundNum>0) {
        str += _oddsUitl.getRoundName(this.roundNum, lang);
      }
      return str;
    }
  }


  //赔率信息(单场详细)
  _glodds.OddsInfo_d = function(infoStr) {
    var infoArr = infoStr.split(_glodds.SplitColumn);
    this.mId = infoArr[0];
    this.cId = infoArr[1];
    this.oType = infoArr[2];
    this.sId = infoArr[3];
    this.chgTimeUTC = parseInt(infoArr[4], 10);
    this.chgTime = new Date(this.chgTimeUTC * 1000);
    this.host = infoArr[5];
    this.vs = infoArr[6];
    this.visit = infoArr[7];
    this.period = infoArr[8];
  }


  //通用列表类
  _glodds.List = function() {
    this.items = new Array();
    this.keys = new Object();

    this.Add = function(key, value) {
      if(typeof(key) != "undefined") {
        var vv = typeof(value)=="undefined"?null:value;
        var idx = this.keys[key];
        if(idx==null) {
          idx = this.items.length;
          this.keys[key] = idx;
        }
        this.items[idx] = vv;
      }
    }

    this.Get = function(key) {
      var idx = this.keys[key];
      if(idx!=null)
        return this.items[idx];
      return null;
    }

    this.Clear = function() {
      for(var k in this.keys) {
        delete this.keys[k];
      }
      delete this.keys;
      this.keys = null;
      this.keys = new Object();

      for(var i=0; i<this.items.length; i++) {
        delete this.items(i);
      }
      delete this.items;
      this.items = null;
      this.items = new Array();
    }
  }



  //ajax调用
  _glodds.CallAjax = function(url, fncb, param, fnfl) {
    var url1 = url + (url.indexOf("?")>=0?"&":"?") + _oddsUitl.getRndStr(10);
    $.ajax({
      type: "GET",
      url: url1,
      dataType: "text/html; charset=utf-8",
      success: function(data, stat) {
        fncb(data, param);
      },
      error: function(xml, stat, e) {
        if(fnfl) fnfl(stat, param);
      }
    });
  }


  /* 调用赛事数据文件
   * url   数据文件路径
   * fncb  读取数据完成后的回调函数
   * param 调用回调函数时会原样传入
   * fnfl  调用失败时回调函数
   */
  _glodds.LoadMatchData = function(url, fncb, param, fnfl) {
    var pm = Array(fncb, param, fnfl);
    _glodds.CallAjax(url, _glodds.LoadMatchDataHandler, pm, _glodds.LoadDataFaildHandler);
  }

  _glodds.LoadDataFaildHandler = function(stat, param) {
    if(param[2]) param[2](stat, param[1]);
  }

  _glodds.LoadMatchDataHandler = function(data, param) {

    var matchdata = new Object();
    matchdata.LeagueList = new _glodds.List();
    matchdata.MatchList = new _glodds.List();
    matchdata.CompanyList = new _glodds.List();

    matchdata.CTypeNum = new Object();

    //分隔大数据域
    var domains = data.split(_glodds.SplitDomain);

    //处理公共数据域
    var publicDomain = domains[0].split(_glodds.SplitColumn);
    matchdata.TimeStamp = parseInt(publicDomain[0], 10);
    matchdata.LeagueNum = parseInt(publicDomain[1], 10);
    matchdata.MatchNum = 0;//parseInt(publicDomain[2], 10);
    matchdata.CompanyNum = parseInt(publicDomain[3], 10);

    var leagueItem, matchItem, companyItem, nd;

    //处理联赛数据域
    var leagueDomain = domains[1].split(_glodds.SplitRecord);
    for(var i=0; i<leagueDomain.length; i++) {
      if(leagueDomain[i].length>5) {
        leagueItem = new _glodds.League(leagueDomain[i]);
        matchdata.LeagueList.Add(leagueItem.lId, leagueItem);
      }
    }

    //处理比赛数据
    var matchDomain = domains[2].split(_glodds.SplitRecord);
    for(var i=0; i<matchDomain.length; i++) {
      if(matchDomain[i].length>5) {
        matchItem = new _glodds.Match(matchDomain[i]);
        matchdata.MatchList.Add(matchItem.mId, matchItem);

        if(g_odds.nowTime/1000-matchItem.koTimeUTC>5*60)
          matchItem.bOver = true;
        else
          matchdata.MatchNum++;

        leagueItem = matchdata.LeagueList.Get(matchItem.lId);
        if(leagueItem!=null) {
          if(matchItem.bOver)
            leagueItem.overNum++;
          else
            leagueItem.matchNum++;
        }
      }
    }

    //处理公司数据
    var companyDomain = domains[3].split(_glodds.SplitRecord);
    for(var i=0; i<companyDomain.length; i++) {
      if(companyDomain[i].length>5) {
        companyItem = new _glodds.Company(companyDomain[i]);
        if(companyItem.cId=="201") continue;
        matchdata.CompanyList.Add(companyItem.cId, companyItem);

        /*if(companyItem.cType=="") */companyItem.cType = _oddsUitl.getCompanyType(companyItem.cId, companyItem.cnName);
        nd = matchdata.CTypeNum[companyItem.cType];
        if(nd)
          nd++;
        else
          nd = 1;
        matchdata.CTypeNum[companyItem.cType] = nd;
      }
    }
    _glodds.sortCompany(matchdata.CompanyList);

    param[0](matchdata, param[1]);

  }

  _glodds.sortCompany = function(clist) {
    clist.items.sort(_glodds.sortCfunc);
    for(var k in clist.keys) {
      delete clist.keys[k];
    }
    for(var i=0; i<clist.items.length; i++) {
      clist.keys[clist.items[i].cId] = i;
    }
  }
  _glodds.sortCfunc = function(c1, c2) {
    if(c1.cType<c2.cType)
      return -1;
    else if(c1.cType>c2.cType)
      return 1;
    else if(c1.cType=="*")
      return _oddsUitl.getCCSort(c1.cId)<_oddsUitl.getCCSort(c2.cId)?-1:1;
    else
      return parseInt(c1.cId)<parseInt(c2.cId)?-1:1;
  }


  //调用赔率数据文件
  _glodds.LoadOddsData = function(url, fncb, param, fnfl) {
    var pm = Array(fncb, param, fnfl);
    _glodds.CallAjax(url, _glodds.LoadOddsDataHandler, pm, _glodds.LoadDataFaildHandler);
  }

  _glodds.LoadOddsDataHandler = function(data, param) {

    var oddsdata = new Object();
    oddsdata.MatchList = new _glodds.List();

    try {
      //分隔大数据域
      var domains = data.split(_glodds.SplitDomain);

      //处理公共数据域
      var publicDomain = domains[0].split(_glodds.SplitColumn);
      oddsdata.TimeStamp = parseInt(publicDomain[0], 10);
      oddsdata.OddsNum = parseInt(publicDomain[1], 10);

      var oddsItem, mList, oddsList;

      //处理赔率数据域
      var oddsDomain = domains[1].split(_glodds.SplitRecord);
      for(var i=0; i<oddsDomain.length; i++) {
        if(oddsDomain[i].length>5) {
          oddsItem = new _glodds.OddsInfo(oddsDomain[i]);
          if(oddsItem.cId=="201") continue;
          mList = oddsdata.MatchList.Get(oddsItem.mId);
          if(mList==null) {
            mList = new _glodds.List();
            oddsdata.MatchList.Add(oddsItem.mId, mList);
          }
          oddsList = mList.Get(oddsItem.sId);
          if(oddsList==null) {
            oddsList = new _glodds.List();
            mList.Add(oddsItem.sId, oddsList);
          }
          oddsList.Add(oddsItem.oType, oddsItem);
        }
      }

    } catch (e) {}

    param[0](oddsdata, param[1]);

  }


  //调用变化数据文件
  _glodds.LoadOddsChgData = function(url, fncb, param, fnfl) {
    var pm = Array(fncb, param, fnfl);
    _glodds.CallAjax(url, _glodds.LoadOddsChgDataHandler, pm, _glodds.LoadDataFaildHandler);
  }

  _glodds.LoadOddsChgDataHandler = function(data, param) {

    if(!data) return _glodds.LoadDataFaildHandler("nodata", param);

    var oddsdata = new Object();
    oddsdata.OddsChgList = new Array();

    try {
      //分隔大数据域
      var domains = data.split(_glodds.SplitDomain);

      //处理公共数据域
      var publicDomain = domains[0].split(_glodds.SplitColumn);
      oddsdata.TimeStamp = parseInt(publicDomain[0], 10);
      oddsdata.OddsChgNum = parseInt(publicDomain[1], 10);

      var oddsItem, match;

      //处理赔率数据域
      var oddsDomain = domains[1].split(_glodds.SplitRecord);
      for(var i=0; i<oddsDomain.length; i++) {
        if(oddsDomain[i].length>5) {
          oddsItem = new _glodds.OddsChg(oddsDomain[i]);
          if(oddsItem.cId=="201") continue;
          oddsdata.OddsChgList.push(oddsItem);
        }
      }

    } catch (e) {}

    param[0](oddsdata, param[1]);

  }


  //调用单场赔率文件
  _glodds.LoadMatchOddsData = function(url, fncb, param, fnfl) {
    var pm = Array(fncb, param, fnfl);
    _glodds.CallAjax(url, _glodds.LoadMatchOddsDataHandler, pm, _glodds.LoadDataFaildHandler);
  }

  _glodds.LoadMatchOddsDataHandler = function(data, param) {

    var matchdata = new Object();
    matchdata.CompanyList = new _glodds.List();
    matchdata.AsianData = new _glodds.List();
    matchdata.EuropeData = new _glodds.List();
    matchdata.OverUnderData = new _glodds.List();


    //分隔大数据域
    var domains = data.split(_glodds.SplitDomain);

    //处理公共数据域
    var publicDomain = domains[0].split(_glodds.SplitColumn);
    matchdata.TimeStamp = parseInt(publicDomain[0], 10);
    matchdata.LoadChg = parseInt(publicDomain[1], 10);

    //处理比赛数据
    matchdata.Match = new _glodds.Match_d(domains[1]);

    var companyItem, oddsItem, companyList, oddsList;

    //处理公司数据
    var companyDomain = domains[2].split(_glodds.SplitRecord);
    for(var i=0; i<companyDomain.length; i++) {
      if(companyDomain[i].length>5) {
        companyItem = new _glodds.Company(companyDomain[i]);
        if(companyItem.cId=="201") continue;
        matchdata.CompanyList.Add(companyItem.cId, companyItem);
      }
    }

    //亚盘,欧盘,大小球
    var oddsDomain = domains[3].split(_glodds.SplitRecord);
    for(var i=0; i<oddsDomain.length; i++) {
      if(oddsDomain[i].length>5) {
        oddsItem = new _glodds.OddsInfo_d(oddsDomain[i]);
        if(oddsItem.cId=="201") continue;
        if(oddsItem.oType=="a")
          companyList = matchdata.AsianData.Get(oddsItem.cId);
        else if(oddsItem.oType=="e")
          companyList = matchdata.EuropeData.Get(oddsItem.cId);
        else if(oddsItem.oType=="o")
          companyList = matchdata.OverUnderData.Get(oddsItem.cId);
        else
          continue;
        if(companyList==null) {
          companyList = new _glodds.List();
          companyList.cId = oddsItem.cId;
          if(oddsItem.oType=="a")
            matchdata.AsianData.Add(oddsItem.cId, companyList);
          else if(oddsItem.oType=="e")
            matchdata.EuropeData.Add(oddsItem.cId, companyList);
          else if(oddsItem.oType=="o")
            matchdata.OverUnderData.Add(oddsItem.cId, companyList);
        }
        oddsList = companyList.Get(oddsItem.sId);
        if(oddsList==null) {
          oddsList = new Array();
          companyList.Add(oddsItem.sId, oddsList);
        }
        oddsList.push(oddsItem);
      }
    }



    param[0](matchdata, param[1]);

  }

_oddsUitl.initCompany();
