﻿// JScript File

function makeHttpRequest(url, element, calltype) {
  var http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
      http_request.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // IE
    try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  if (!http_request) {
    alert('Browser doesn\'t support Ajax. Site will NOT FULLY function properly.');
    return false;
  }
  http_request.onreadystatechange = function() {
    if (http_request.readyState == 4) {
      if (http_request.status == 200) {            
        loadXML(http_request.responseXML,calltype);
      } else {
        alert('There was a problem with the request. (Code: ' + http_request.status + ')');
      }
    }
  }
  http_request.open('GET', url, true);
  http_request.send(null);
}


function loadXML(xml,calltype)
{
	if(calltype == 'Cuisine')
	{		
		var string = '';
		var root = xml.getElementsByTagName('root')[0];
		// Fill City
		var City = root.getElementsByTagName('City');		
		var SearchCity = document.getElementById('SearchCity');				
		SelectedCity = SearchCity.options[SearchCity.selectedIndex].value;		
		SearchCity.options.length = 1;
		for (i = 0; i < City.length; i++)
		{
		    var city = City[i];		    
		    var Text = city.getElementsByTagName("Text")[0].firstChild.nodeValue;     		
		    var Value = city.getElementsByTagName("Value")[0].firstChild.nodeValue;	
		    addOption(SearchCity, Text, Value, false);	    		    	    
		}
		selectPreviousOption(SearchCity, SelectedCity);
		// Fill Price Range
		var PriceRange = root.getElementsByTagName('PriceRange');		
		var SearchPriceRange = document.getElementById('SearchPriceRange');				
		SelectedPriceRange = SearchPriceRange.options[SearchPriceRange.selectedIndex].value;		
		SearchPriceRange.options.length = 1;
		for (i = 0; i < PriceRange.length; i++)
		{
		    var priceRange = PriceRange[i];		    
		    var Text = priceRange.getElementsByTagName("Text")[0].firstChild.nodeValue;     		
		    var Value = priceRange.getElementsByTagName("Value")[0].firstChild.nodeValue;		    
		    addOption(SearchPriceRange, Text, Value, false);	    		    	    
		}
		selectPreviousOption(SearchPriceRange, SelectedPriceRange);
	}
	if(calltype == 'City')
	{	
	    	
		var string = '';
		var root = xml.getElementsByTagName('root')[0];
		// Fill Cuisine
		var Cuisine = root.getElementsByTagName('Cuisine');		
		var SearchCuisine = document.getElementById('SearchCuisine');				
		SelectedCuisine = SearchCuisine.options[SearchCuisine.selectedIndex].value;		
		SearchCuisine.options.length = 1;
		for (i = 0; i < Cuisine.length; i++)
		{
		    var cuisine = Cuisine[i];		    
		    var Text = cuisine.getElementsByTagName("Text")[0].firstChild.nodeValue;     		
		    var Value = cuisine.getElementsByTagName("Value")[0].firstChild.nodeValue;	
		    addOption(SearchCuisine, Text, Value, false);	    		    	    
		}
		selectPreviousOption(SearchCuisine, SelectedCuisine);
		// Fill Price Range
		var PriceRange = root.getElementsByTagName('PriceRange');		
		var SearchPriceRange = document.getElementById('SearchPriceRange');				
		SelectedPriceRange = SearchPriceRange.options[SearchPriceRange.selectedIndex].value;		
		SearchPriceRange.options.length = 1;
		for (i = 0; i < PriceRange.length; i++)
		{
		    var priceRange = PriceRange[i];		    
		    var Text = priceRange.getElementsByTagName("Text")[0].firstChild.nodeValue;     		
		    var Value = priceRange.getElementsByTagName("Value")[0].firstChild.nodeValue;		    
		    addOption(SearchPriceRange, Text, Value, false);	    		    	    
		}
		selectPreviousOption(SearchPriceRange, SelectedPriceRange);
	}
	if(calltype == 'PriceRange')
	{
		var string = '';
		var root = xml.getElementsByTagName('root')[0];
		// Fill Cuisine
		var Cuisine = root.getElementsByTagName('Cuisine');		
		var SearchCuisine = document.getElementById('SearchCuisine');				
		SelectedCuisine = SearchCuisine.options[SearchCuisine.selectedIndex].value;		
		SearchCuisine.options.length = 1;
		for (i = 0; i < Cuisine.length; i++)
		{
		    var cuisine = Cuisine[i];		    
		    var Text = cuisine.getElementsByTagName("Text")[0].firstChild.nodeValue;     		
		    var Value = cuisine.getElementsByTagName("Value")[0].firstChild.nodeValue;		    
		    addOption(SearchCuisine, Text, Value, false);	    		    	    
		}
		selectPreviousOption(SearchCuisine, SelectedCuisine);
		// Fill City
		var City = root.getElementsByTagName('City');		
		var SearchCity = document.getElementById('SearchCity');				
		SelectedCity = SearchCity.options[SearchCity.selectedIndex].value;		
		SearchCity.options.length = 1;
		for (i = 0; i < City.length; i++)
		{
		    var city = City[i];		    
		    var Text = city.getElementsByTagName("Text")[0].firstChild.nodeValue;     		
		    var Value = city.getElementsByTagName("Value")[0].firstChild.nodeValue;	
		    addOption(SearchCity, Text, Value, false);	    		    	    
		}
		selectPreviousOption(SearchCity, SelectedCity);	
	}
}

function getFilter(calltype)
{   
    var SearchCuisine = '';
    if(document.getElementById('SearchCuisine').length > 0)
    {
       SearchCuisine = document.getElementById('SearchCuisine').options[document.getElementById('SearchCuisine').selectedIndex].value;
    }
    else
    {
       SearchCuisine = document.getElementById('SearchCuisine').value;
    }    

    var SearchCity = '';
    if(document.getElementById('SearchCity').length > 0)
    {
       SearchCity = document.getElementById('SearchCity').options[document.getElementById('SearchCity').selectedIndex].value;
    }
    else
    {
       SearchCity = document.getElementById('SearchCity').value;
    }                  
    
    var SearchPriceRange = '';
    if(document.getElementById('SearchPriceRange').length > 0)
    {
       SearchPriceRange = document.getElementById('SearchPriceRange').options[document.getElementById('SearchPriceRange').selectedIndex].value;
    }
    else
    {
       SearchPriceRange = document.getElementById('SearchPriceRange').value;
    }
    var url = "ajaxHelper.aspx?CallType="+calltype+"&Cuisine="+SearchCuisine+"&City="+SearchCity+"&PriceRange="+SearchPriceRange;               
    
    makeHttpRequest(url,undefined,calltype);
}

// Add option to drop down list
function addOption(obj,text,value,selected) {
	if (obj!=null && obj.options!=null) {
		obj.options[obj.options.length] = new Option(text, value, false, selected);
		}
	}
	
function selectPreviousOption(obj, Selected)
{
	if (!hasOptions(obj))
	{
	   return;
	}
	for (var i=0; i<obj.options.length; i++)
	{
		if (obj.options[i].value == Selected)
		{
		   obj.options[i].selected = true;
		}
	}
}


function hasOptions(obj) {
	if (obj!=null && obj.options!=null) { return true; }
	return false;
	}





