// -------------------- Star Auto Retrieve odds xml -------------------------// 

var JointConfigData = new Array();
var FixtureData = new Array();
var OddsData = new Array();
var OutputData = new Array();
var degdata =0;
var bfound = false;
var basyncProperty = true;
var ARR_ACTIVEX = ["MSXML4.DOMDocument", "MSXML3.DOMDocument", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XmlDom"];

// -------------------- Common function -------------------------// 


function LoadTreeXMLData(inxmlDoc,inConfig){
var LoadData = new Array();
var RowData = new Array();
var root = inxmlDoc.documentElement;
var root1 =null;
var root2 =null;
var k =0;
for (var x = 0;x<root.childNodes.length;x++){
	root1 = root.childNodes.item(x);
	  for (var y = 0 ;y<root1.childNodes.length;y++){
	        root2 = root1.childNodes.item(y)
	        for (var z = 0 ;z<root2.childNodes.length;z++){
	        	RowData = setArrayNull(inConfig.length);
			Location = new Array(x,y,z);
			RowData = RetrieveTreeRowDataByLocation(root,Location,RowData);
			LoadData[k] = new Array();
			LoadData[k] = RowData;
			k++;
			
		}
	  }

	  
}
return LoadData;
}

function LoadSingleXMLData(inxmlDoc,inConfig){
var LoadData = new Array();
	var xmlEle = inxmlDoc.getElementsByTagName("Fixture");
        if (xmlEle.length==0) xmlEle = inxmlDoc.getElementsByTagName("CPN");
        
	for (var i=0;i<xmlEle.length;i++){
		LoadData[i] = new Array(inConfig.length);
		for (var j=0;j<inConfig.length;j++){
			if (xmlEle.item(i).getAttribute(inConfig[j])!=null) 
			  	LoadData[i][j] = xmlEle.item(i).getAttribute(inConfig[j])
			 else
			 	LoadData[i][j] = -1; 	
		
		}
		
	}
return LoadData;
}

 
function RetrieveTreeRowDataByLocation(xmlEle,aLocation,aRowData){
	for (var i=0;i<aLocation.length;i++){
		xmlEle = LocateEleByRowID(xmlEle,aLocation[i]);
			for (var y=0;y<OddsConfigEle.length;y++){
				if (xmlEle.getAttribute(OddsConfigEle[y])!=null)
 				aRowData[y] = xmlEle.getAttribute(OddsConfigEle[y]);
			} 
	}
return aRowData;
}

function LocateEleByRowID(Ele,RowsID){
return Ele.childNodes.item(RowsID);
}

function setArrayNull (iSize){
var aReturn = new Array();
for (var i=0; i<iSize;i++){
	aReturn[i] = -1;
}
return aReturn;
}



function JointEle(StructureTable_id,EleId,row_id_0,row_id_1){
var JointEleData = new Array();
switch(StructureTable_id){
case 0 :
JointEleData = FixtureData[row_id_0][EleId];
break;
case 1 :
JointEleData = OddsData[row_id_1][EleId];
break;

}
return JointEleData;
}

function FindElement(inArray, Ele, StructureTbl_id, row_id){

	for( j=0;j<inArray.length;j++){
		if (inArray[j] == Ele && !bfound){
		JointConfigData[0][row_id] = j;
		JointConfigData[1][row_id] = StructureTbl_id;
		bfound = true;}
	}

}

function JointData(){
var tempArray = new Array();

OutputData = new Array();

var k = 0;
if ( // (FixtureData.length == 0 && OddsData.length == 0) ||
    (FixtureData.length >= 0 && OddsData.length == 0) ||
    (FixtureData.length == 0 && OddsData.length >= 0)) {
	
	//if (chp=="1") {alert("tt");OutputData = OddsData;}
} else {    
      for (i=0; i< OddsData.length; i++){
      	   tempArray = JointConfigData[0];
       	for (y=0;y<FixtureData.length;y++){
      	    if (FixtureData[y][0] == OddsData[i][0]){
      	    OutputData[k] = new Array();
		for (j =0; j < tempArray.length;j++ ){
  		OutputData[k][j] = JointEle(JointConfigData[1][j],JointConfigData[0][j],y,i) ;
  		}
	    k++;
	    }
	}
      }
}

if (CheckDownloadedData()) {
	b_isDownloading = false;
    OddsArea();
}

}


function CheckDownloadedData(){
var CheckDownloaded = false;
var chksum = 0;
for (var i=0;i<ObjectEle.length;i++) {
chkDownloadFlag[i] = 0;
eval("if("+ObjectEle[i]+".LastModifiedData.length>0) chkDownloadFlag[i] =1;");
}

for (i=0;i<chkDownloadFlag.length;i++) {
chksum += chkDownloadFlag[i];
}
if (chksum == chkDownloadFlag.length) CheckDownloaded = true;
return CheckDownloaded;
}


function readFixture(x_doc,x_tag,a_item)
{
   var st = new Array();
    var xmlDoc = document.createElement("XML");
    xmlDoc.load(x_doc);
    //Ele = xmlDoc.documentElement;
    
    var ele = xmlDoc.getElementsByTagName(x_tag);
    //var ele = Ele.getElementsByTagName(x_tag); 

    for (i=0; i<ele.length; i++){
        st[ele.item(i).getAttribute(a_item[0])] = new Array(ele.item(i).getAttribute(a_item[0]),ele.item(i).getAttribute(a_item[1]),ele.item(i).getAttribute(a_item[2]),ele.item(i).getAttribute(a_item[3]),ele.item(i).getAttribute(a_item[4]));
    }
    
    return st;     
}




// -------------------- Common function -------------------------// 




function init_config(){
JointConfigData[0] = new Array();
JointConfigData[1] = new Array();
chkDownloadFlag = new Array();
	for(var i=0;i<JointDataConfig.length;i++){
		bfound = false;
		FindElement(fixtureconfig,JointDataConfig[i],0,i);
		FindElement(OddsConfigEle,JointDataConfig[i],1,i);
	}
}

// ------------- Package xmldoc ----------------- //

function xmlOddsData(){
  this.dataURL = null;
  this.timerHandler = null;
  this.n_timeOut = 5000;
  this.varname = null;
  this.targetTag = null;
  this.xmldoc = null;
  this.startRetrieve = start_loadXML;
  this.LoadXML = data_loadXML;
  this.doRetreive = data_doRetreive;
  this.bGetting = false;
  this.sGlobalName = null;
  this.init = xmlodds_init;
  this.debugcount = 0;
  this.LastModifiedData = null;
  this.chkDownloadFlag = 0;
  this.chkRetrieveOK = data_chkRetrieveOK;
}

function xmlodds_init(ProcName,  tagID, inTimeOut , inDataURL, inXmlConfigEle, insOutputData)
{
	this.n_timeOut = inTimeOut;
	this.targetTag = tagID;
	this.varname = ProcName;
	this.XmlConfigEle = inXmlConfigEle;
	this.dataURL = inDataURL;
	this.sOutputData = insOutputData;
	var bACTIVEXFound = false;

	for(var i=0; i < ARR_ACTIVEX.length && !bACTIVEXFound; i++){
		try{
			this.xmldoc = new ActiveXObject(ARR_ACTIVEX[i]);
			bACTIVEXFound = true;    
		} 
		catch(objException){ 
			this.xmldoc = null;
		}
	}

	if (!bACTIVEXFound){
		throw "No DOM DOcument found on your computer.";
	}
	this.xmldoc.async = basyncProperty;	
	
	if(this.xmldoc.async == true){
		eval("function chg_"+this.targetTag+"(){try{"+this.varname+".chkRetrieveOK();degdata +=1;}catch(e){}};");
		eval("this.xmldoc.onreadystatechange = chg_"+this.targetTag+";");
	}

}

function start_loadXML()
{
try {
		this.LoadXML();
 		var timer1 = setTimeout("this." + this.varname + ".startRetrieve();",this.n_timeOut);
	}
catch (e){
		alert ("debug -- start_loadXML : " ,e);
	}
}

function data_doRetreive(){
        var OutputData = new Array();
	
	if (this.LastModifiedData != null){
		if (this.LastModifiedData == this.xmldoc.xml  ||
		   this.xmldoc.xml == null ||
		   this.xmldoc.xml == "" ||
		   this.xmldoc == null) {
			return;
 		}
	}
	
	if ((this.xmldoc.xml.length <=0 || this.xmldoc.xml == null) && this.LastModifiedData != null)	return;
	
		this.LastModifiedData = this.xmldoc.xml;
		if(this.LastModifiedData.length >0) this.chkDownloadFlag = 1;
		

	if (this.xmldoc.documentElement.hasChildNodes){
		if(!this.xmldoc.documentElement.firstChild.hasChildNodes){
			OutputData = LoadSingleXMLData(this.xmldoc,this.XmlConfigEle);
		}
		else {
	        	OutputData = LoadTreeXMLData(this.xmldoc,this.XmlConfigEle);
		}        
	}

	eval(this.sOutputData + "= OutputData");
	JointData();
}

function data_chkRetrieveOK(){	
	
        if (this.xmldoc.readyState != 4){
        this.bGetting = true;
        return;
	};

        this.doRetreive();
        
}


function data_loadXML() {
try {
   	
     	
 	if (!this.bGetting){
	this.xmldoc.load(this.dataURL);
	};

	if (this.xmldoc.async == false)
	this.chkRetrieveOK();
	
	this.bGetting = false;

}
catch (e) {
		alert("debug -- loadXML  :",e);
}
}


function readTV(x_doc,x_tag,a_item)
{
      var st = new Array()
      var xdoc = new ActiveXObject("Microsoft.XMLDOM");
      xdoc.async = false;
      xdoc.load(x_doc);
      
      var ele = xdoc.getElementsByTagName(x_tag);
       for (i=0; i<ele.length; i++){
        st[ele.item(i).getAttribute(a_item[0])] = new Array(ele.item(i).getAttribute(a_item[0]),ele.item(i).getAttribute(a_item[1]),ele.item(i).getAttribute(a_item[2]),ele.item(i).getAttribute(a_item[3]),ele.item(i).getAttribute(a_item[4]));
       }
    
    return st;
   
}
// ------------- Package xmldoc ----------------- //
// -------------------- End Auto Retrieve odds xml -------------------------// 
