var xmlHttp;
var submitSearchForm = true;
var langCode;

/************************************************************\
*
\************************************************************/
function getResortCodes()
{
    var str = document.getElementById('inputResortName').value;
    if (str.length==0)
    {
        document.getElementById("txtHint").innerHTML="";
        return;
    }
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null)
    {
        alert ("Browser does not support HTTP Request");
        return;
    }
    var url="/DWVC/en/gdist/accom/search_by_name.php";
    url=url+"?resname="+str;
    url=url+"&sid="+Math.random();
    xmlHttp.onreadystatechange=stateChanged ;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}

/************************************************************\
*
\************************************************************/
function stateChanged()
{
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
    {
        document.getElementById("txtHint").innerHTML=xmlHttp.responseText ;
    }
}

/************************************************************\
*
\************************************************************/
function GetXmlHttpObject()
{
    var objXMLHttp=null;
    if (window.XMLHttpRequest)
    {
        objXMLHttp=new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
        objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    return objXMLHttp
}

/************************************************************\
*
\************************************************************/
function setResortCode(resCode) {
    var rcode =  document.getElementById('RSRESO_CODE');
    rcode.value = resCode;
    hideResortByName();
}

/************************************************************\
*
\************************************************************/
function showResortByName() {
    var container = document.getElementById('resByNameContainer');
    container.style.display='inline';
    document.getElementById('inputResortName').focus();
    submitSearchForm = false;
}

/************************************************************\
*
\************************************************************/
function hideResortByName() {
    var container = document.getElementById('resByNameContainer');
    container.style.display='none';
    submitSearchForm = true;
}

/************************************************************\
*
\************************************************************/
function searchFormSubmitAction() {
    if (!submitSearchForm) {
        getResortCodes();
    }
    return submitSearchForm;
}

/************************************************************\
* Get regions for country
\************************************************************/
function getRegionsForCountry(lang)
{
    var ctry = document.getElementById('COUNTRY');
		var region = document.getElementById('REGION');
    var selndx = ctry.selectedIndex;
    var ctryCode = ctry.options[selndx].value;
    
    langCode=lang;
    
	setView();

    hideTown();
    
    if (ctryCode.length==0)
    {
        //document.getElementById("REGION").innerHTML="";
				region.options.length = 0;
        return;
    }
    xmlHttp2=GetXmlHttpObject();
    if (xmlHttp2==null)
    {
        alert ("Browser does not support HTTP Request");
        return;
    }
    var url="/DWVC/en/gdist/accom/locations_for_country.php";
    url=url+"?ctry="+ctryCode;
    url=url+"&lang="+lang;
    url=url+"&sid="+Math.random();
    xmlHttp2.onreadystatechange=countryStateChanged ;
    xmlHttp2.open("GET",url,true);
    xmlHttp2.send(null);
}

function setView()
{
	if (document.getElementById('RSRESO_CODE')) {
    var rescode = document.getElementById('RSRESO_CODE');
    if (rescode.value!='') {
	  var resopt = document.getElementById('rescode-options');
	  var stdopt = document.getElementById('std-options');
	  resopt.style.display='inline';
	  stdopt.style.display='none';
    }
	}
}

/************************************************************\
*
\************************************************************/
function countryStateChanged()
{
    if (xmlHttp2.readyState==4 || xmlHttp2.readyState=="complete")
    {
        hideTown();
        var region = document.getElementById('REGION');
        var town = document.getElementById('TOWN');
        
        //region.innerHTML=xmlHttp2.responseText ;
        
        // the colons separate the options
        // the |s separate the label and value of each option element
        var responseString = rtrim(xmlHttp2.responseText);
        
        // create array with element for each option
        var optionsArray = responseString.split(":");
        
        // only get array length once because it's slightly faster;
        var optionsArrayLength =  optionsArray.length;
        
        // clear destination select
        region.options.length = 0;
        
        // add option nodes into destination select
        for(var i=0; i < optionsArrayLength; i++) {
            // split array element to get option label and option value
            var tempArray = optionsArray[ i ].split("|");
            var newValue = tempArray[ 0 ];
            var newReturn = tempArray[ 1 ];
            region.options[ i ] = new Option(rtrim(newValue),rtrim(newReturn));
        }
        
        for (var i=0; i < region.options.length; i++) {
            if (region.options[i].value == def_region) {
                region.options[i].selected=true;
                if (def_town.length >0) {
                    //showTown();
                    getTownsForRegion(langCode);
                }
            }
        }
        
        
    }
}

/************************************************************\
*
\************************************************************/
function showRegion() {
    var container = document.getElementById('regionContainer');
    container.style.display='inline';
}

/************************************************************\
*
\************************************************************/
function hideRegion() {
    var container = document.getElementById('regionContainer');
    container.style.display='none';
}


/************************************************************\
* Get Towns for Country
\************************************************************/
function getTownsForRegion(lang)
{
    var ctry = document.getElementById('COUNTRY');
    var selndx = ctry.selectedIndex;
    var ctryCode = ctry.options[selndx].value;
    
    var region = document.getElementById('REGION');
    var selrndx = region.selectedIndex;
    var regionName = region.options[selrndx].value;

		var town = document.getElementById('TOWN');
    
    if (ctryCode.length==0)
    {
        //document.getElementById("REGION").innerHTML="";
				region.options.length = 0;
        return;
    }
    if (regionName.length==0)
    {
        //document.getElementById("TOWN").innerHTML="";
				town.options.length = 0;
        return;
    }
    xmlHttp3=GetXmlHttpObject();
    if (xmlHttp3==null)
    {
        alert ("Browser does not support HTTP Request");
        return;
    }
    var url="/DWVC/en/gdist/accom/towns_for_location.php";
    url=url+"?ctry="+ctryCode;
    url=url+"&locn="+regionName;
    url=url+"&lang="+lang;
    url=url+"&sid="+Math.random();
    xmlHttp3.onreadystatechange=regionStateChanged ;
    xmlHttp3.open("GET",url,true);
    xmlHttp3.send(null);
}

/************************************************************\
*
\************************************************************/
function regionStateChanged()
{
    if (xmlHttp3.readyState==4 || xmlHttp3.readyState=="complete")
    {
				
        if (xmlHttp3.responseText==null) {
						hideTown();
            return;
        } else if (xmlHttp3.responseText.length==0) {
						hideTown();
          	return;	
				} else {
            //showTown();
            //document.getElementById("TOWN").innerHTML=xmlHttp3.responseText ;
            var town = document.getElementById('TOWN');
            
            // the colons separate the options
            // the |s separate the label and value of each option element
            var responseString = xmlHttp3.responseText;
            var optionsArray = responseString.split(":");
            var optionsArrayLength =  optionsArray.length;
            
            // clear destination select
            town.options.length = 0;
            
            // add option nodes into destination select
            for(var i=0; i < optionsArrayLength; i++) {
                // split array element to get option label and option value
                var tempArray = optionsArray[ i ].split("|");
                var newValue = tempArray[ 0 ];
                var newReturn = tempArray[ 1 ];
                town.options[ i ] = new Option(rtrim(newValue),rtrim(newReturn));
            }
            
            // Restore value
            for (var i=0; i < town.options.length; i++) {
                if (town.options[i].value == def_town) {
                    town.options[i].selected=true;
                }
            }
            if (optionsArrayLength >1) {
              showTown();
            }
            
        }
    }
}

/************************************************************\
*
\************************************************************/
function showTown() {
    var container = document.getElementById('townContainer');
    container.style.display='inline';
}

/************************************************************\
*
\************************************************************/
function hideTown() {
    var container = document.getElementById('townContainer');
    container.style.display='none';
}


function rtrim(str) {
  return str.replace(/\s+$/,'');
}