
var requester = null;
var formRequester = null;
var COUNTRY_ID = null;
var PROVINCE_ID = null;
var CITY_ID = null;
var CITY_LETTER = null;

var requester1 = null;
var requester2 = null;
var formRequester = null;

/* Seteamos el timer para el refresh del queue status y levanto el queue status  */
function initLoadProc()
{
	/* Levantamos el Pais Default y todo lo demas */
	getCountriesGEOData(1);
}

function provinceChanged(provinceComboBox, groupID)
{
   COUNTRY_ID = null;
   PROVINCE_ID = null;
   CITY_ID = null;
   CITY_LETTER = null;

   var xmlMessage='id_province='+provinceComboBox.value;

   if (groupID == 1)
   {
     if (requester1 != null && requester1.readyState != 0 && requester1.readyState != 4)
     {
        requester1.abort();
     }

     try
     {
        requester1 = new XMLHttpRequest();
        if (requester1.overrideMimeType) {
          requester1.overrideMimeType('text/xml');		
        }
     }
     catch (error)
     {
        try
        {
          requester1 = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (error)
        {
          requester1 = null;
          return false;
        }
     }
 	
     requester1.onreadystatechange = fetchCitiesGEOData1;
     requester1.open("GET", 'http://www.xgaming.com.ar/getGEOData.php?'+xmlMessage, true);
     requester1.send(null);
   }
   else
   {
     if (requester2 != null && requester2.readyState != 0 && requester2.readyState != 4)
     {
        requester2.abort();
     }

     try
     {
        requester2 = new XMLHttpRequest();
        if (requester2.overrideMimeType) {
          requester2.overrideMimeType('text/xml');		
        }
     }
     catch (error)
     {
        try
        {
          requester2 = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (error)
        {
          requester2 = null;
          return false;
        }
     }
 	
     requester2.onreadystatechange = fetchCitiesGEOData2;
     requester2.open("GET", 'http://www.xgaming.com.ar/getGEOData.php?'+xmlMessage, true);
     requester2.send(null);
   }
}

function cityLetterChanged(provinceComboBox,letterComboBox,groupID)
{
   COUNTRY_ID = null;
   PROVINCE_ID = null;
   CITY_ID = null;
   CITY_LETTER = null;

   var xmlMessage='id_province='+provinceComboBox.value+'&letter='+letterComboBox.value;

   if (groupID == 1)
   {
     if (requester1 != null && requester1.readyState != 0 && requester1.readyState != 4)
     {
        requester1.abort();
     }

     try
     {
        requester1 = new XMLHttpRequest();
        if (requester1.overrideMimeType) {
          requester1.overrideMimeType('text/xml');		
        }
     }
     catch (error)
     {
        try
        {
          requester1 = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (error)
        {
          requester1 = null;
          return false;
        }
     }

     requester1.onreadystatechange = fetchCitiesGEOData1;
     requester1.open("GET", 'http://www.xgaming.com.ar/getGEOData.php?'+xmlMessage, true);
     requester1.send(null);
   }
   else
   {
     if (requester2 != null && requester2.readyState != 0 && requester2.readyState != 4)
     {
        requester2.abort();
     }

     try
     {
        requester2 = new XMLHttpRequest();
        if (requester2.overrideMimeType) {
          requester2.overrideMimeType('text/xml');		
        }
     }
     catch (error)
     {
        try
        {
          requester2 = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (error)
        {
          requester2 = null;
          return false;
        }
     }

     requester2.onreadystatechange = fetchCitiesGEOData2;
     requester2.open("GET", 'http://www.xgaming.com.ar/getGEOData.php?'+xmlMessage, true);
     requester2.send(null);
   }
}


function getCountriesGEOData(groupID)
{
   var xmlMessage;

   if (COUNTRY_ID != null) {
      xmlMessage='id_country='+COUNTRY_ID;
      if (PROVINCE_ID != null) {
         xmlMessage += '&id_province='+PROVINCE_ID;
         if ((CITY_ID != null) && (CITY_ID != 0) && (CITY_LETTER != null)) {
           xmlMessage += '&id_city='+CITY_ID+'&letter='+CITY_LETTER;
         }
      }   
   }

   if (groupID == 1)
   {
     if (requester1 != null && requester1.readyState != 0 && requester1.readyState != 4)
     {
        requester1.abort();
     }

     try
     {
        requester1 = new XMLHttpRequest();
        if (requester1.overrideMimeType) {
          requester1.overrideMimeType('text/xml');		
        }
     }
     catch (error)
     {
        try
        {
           requester1 = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (error)
        {
           requester1 = null;
           return false;
        }
     }

     requester1.onreadystatechange = fetchCountriesGEOData1;
     requester1.open("GET", "http://www.xgaming.com.ar/getGEOData.php?"+xmlMessage,true);
     requester1.send(null);
   }
   else
   {
     if (requester2 != null && requester2.readyState != 0 && requester2.readyState != 4)
     {
        requester2.abort();
     }

     try
     {
        requester2 = new XMLHttpRequest();
        if (requester2.overrideMimeType) {
          requester2.overrideMimeType('text/xml');		
        }
     }
     catch (error)
     {
        try
        {
           requester2 = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (error)
        {
           requester2 = null;
           return false;
        }
     }

     requester2.onreadystatechange = fetchCountriesGEOData2;
     requester2.open("GET", "http://www.xgaming.com.ar/getGEOData.php?"+xmlMessage,true);
     requester2.send(null);
   }

   return true;
}


/* Execute the action which has been associated with the completion of this object */
function fetchCountriesGEOData1()
{
	// If XMLHR object has finished retrieving the data
	if (requester1.readyState == 4)
	{
		// If the data was retrieved successfully
		try
		{
			if (requester1.status == 200)
			{
				updateCountryGEOData(1);
			}
			// IE returns a status code of 0 on some occasions, so ignore this case
			else if (requester1.status != 0)
			{
				alert("There was an error while retrieving the URL: " + requester1.statusText);
			}
		}
		catch (error)
		{
		}
	}

	return true;
}

/* Execute the action which has been associated with the completion of this object */
function fetchCountriesGEOData2()
{
	// If XMLHR object has finished retrieving the data
	if (requester2.readyState == 4)
	{
		// If the data was retrieved successfully
		try
		{
			if (requester2.status == 200)
			{    			
				updateCountryGEOData(2);
			}
			// IE returns a status code of 0 on some occasions, so ignore this case
			else if (requester2.status != 0)
			{
				alert("There was an error while retrieving the URL: " + requester2.statusText);
			}
		}
		catch (error)
		{
		}
	}

	return true;
}


/* Execute the action which has been associated with the completion of this object */
function fetchCitiesGEOData1()
{
	// If XMLHR object has finished retrieving the data
	if (requester1.readyState == 4)
	{
		// If the data was retrieved successfully
		try
		{
			if (requester1.status == 200)
			{    			
				updateCityGEOData(1);
			}
			// IE returns a status code of 0 on some occasions, so ignore this case
			else if (requester1.status != 0)
			{
				alert("There was an error while retrieving the URL: " + requester1.statusText);
			}
		}
		catch (error)
		{
		}
	}

	return true;
}

/* Execute the action which has been associated with the completion of this object */
function fetchCitiesGEOData2()
{
	// If XMLHR object has finished retrieving the data
	if (requester2.readyState == 4)
	{
		// If the data was retrieved successfully
		try
		{
			if (requester2.status == 200)
			{    			
				updateCityGEOData(2);
			}
			// IE returns a status code of 0 on some occasions, so ignore this case
			else if (requester2.status != 0)
			{
				alert("There was an error while retrieving the URL: " + requester2.statusText);
			}
		}
		catch (error)
		{
		}
	}

	return true;
}


/* Actualizo Pais, Provincia, Ciudad, ZIPCodes retrieved via XMLHR */
function updateCountryGEOData(groupID)
{
  var countriesParentNode;
  var countriesArray;
  var countryNode;
  if (groupID == 1) { 
     var bCountries = document.getElementById("basic_countries");
     var respText = requester1.responseText;
     var xmlDoc = requester1.responseXML;
  }
  else { 
     var bCountries = document.getElementById("fiscal_countries");
     var respText = requester2.responseText;
     var xmlDoc = requester2.responseXML;
  }

  bCountries.options.length=0;
  if (respText.charAt(0) == "<")
  {
    countriesParentNode = xmlDoc.getElementsByTagName("countries");
    countriesArray = countriesParentNode[0].getElementsByTagName("country");
    for (i=0; i < countriesArray.length; i++)
    {
      countryNode = countriesArray[i];
      var optResp=new Option(countryNode.firstChild.nodeValue, countryNode.getAttribute("id"));
      bCountries.options[bCountries.options.length]=optResp;
      if (COUNTRY_ID != null) {
        if (countryNode.getAttribute("id") == COUNTRY_ID)
          bCountries.selectedIndex = i;
      }
    }
  }

  updateProvinceGEOData(groupID);
}

/* Actualizo Provincia, Ciudad, ZIPCodes retrieved via XMLHR */
function updateProvinceGEOData(groupID)
{
  var provincesParentNode;
  var provincesArray;
  var provinceNode;
  if (groupID == 1) {
     var bProvinces = document.getElementById("basic_provinces");
     var respText = requester1.responseText;
     var xmlDoc = requester1.responseXML;
  }
  else {
     var bProvinces = document.getElementById("fiscal_provinces");
     var respText = requester2.responseText;
     var xmlDoc = requester2.responseXML;
  }

  bProvinces.options.length=0;
  if (respText.charAt(0) == "<")
  {
    provincesParentNode = xmlDoc.getElementsByTagName("provinces");
    provincesArray = provincesParentNode[0].getElementsByTagName("province");
    for (i=0; i < provincesArray.length; i++)
    {
      provinceNode = provincesArray[i];
      var optResp=new Option(provinceNode.firstChild.nodeValue, provinceNode.getAttribute("id"));
      bProvinces.options[bProvinces.options.length]=optResp;
      if (PROVINCE_ID != null) {
        if (provinceNode.getAttribute("id") == PROVINCE_ID)
          bProvinces.selectedIndex = i;
      }
    }
  }

  updateCityGEOData(groupID);
}

/* Actualizo Ciudad, ZIPCodes retrieved via XMLHR */
function updateCityGEOData(groupID)
{
  var citiesParentNode; 
  var citiesArray;
  var cityNode;
  if (groupID == 1) { 
     var bCities = document.getElementById("basic_cities");
     var respText = requester1.responseText;
     var xmlDoc = requester1.responseXML;
  }
  else { 
     var bCities = document.getElementById("fiscal_cities");
     var respText = requester2.responseText;
     var xmlDoc = requester2.responseXML;
  }
  var bCitiesLetter = document.getElementById("city_letter");
  var bLetterOpt;

  if (respText.charAt(0) == "<")
  {
    bCities.options.length = 0;
    citiesNode = xmlDoc.getElementsByTagName("cities");
    citiesArray = citiesNode[0].getElementsByTagName("city");
    for (var i=0; i < citiesArray.length; i++)
    {
      cityNode = citiesArray[i];
      var optResp=new Option(cityNode.firstChild.nodeValue, cityNode.getAttribute("id"));
      bCities.options[i]=optResp;
      if (CITY_ID != null) {
        if (cityNode.getAttribute("id") == CITY_ID) {
          bCities.selectedIndex = i;
        }
      }
    }

    if (CITY_LETTER != null)
    {
      for (var j=0; j < bCitiesLetter.options.length; j++)
      {
        bLetterOpt = bCitiesLetter.options[j];
        if (bLetterOpt.value == CITY_LETTER)
          bCitiesLetter.selectedIndex = j;
      }
    }
  }
}
