window.onbeforeunload = function () {   clearselections(); }

var ajax = new sack();
	var ajax2 = new sack();
	var ajax3 = new sack();
	var ajax5 = new sack();
	var ajax7 = new sack();
	var ajax8 = new sack();
	
	function updatefilters(trigger) {
		document.body.style.cursor = 'wait';
		var dd_app 			= document.getElementById("ddShippingAppellation");
		var dd_varietals 	= document.getElementById("ddShippingVarietals");
		var dd_wineries 	= document.getElementById("ddWineries");
		var dd_pricerange 	= document.getElementById("ddPriceRange");
		var dd_shipping		= document.getElementById("ddShippingLocations2");
		var dd_type			= document.getElementById("ddType");
		
		var selectedApp 		= 0;
		var selectedWinery 		= 0;
		var selectedPriceRange 	= 0;
		var selectedVarietal 	= 0;
		var selectedState		= 0;
		var selectedType		= 0;
		
		if(dd_app.selectedIndex!=-1) selectedApp = dd_app.options[dd_app.selectedIndex].value;
		if(dd_wineries.selectedIndex!=-1) selectedWinery = dd_wineries.options[dd_wineries.selectedIndex].value;
		if(dd_pricerange.selectedIndex!=-1) selectedPriceRange = dd_pricerange.options[dd_pricerange.selectedIndex].value;
		if(dd_varietals.selectedIndex!=-1) selectedVarietal = dd_varietals.options[dd_varietals.selectedIndex].value;
		if(dd_shipping.selectedIndex!=-1) selectedState = dd_shipping.options[dd_shipping.selectedIndex].value;
		if(dd_type.selectedIndex!=-1) selectedType = dd_type.options[dd_type.selectedIndex].value;
		
		if(selectedState==-1) selectedState=0;
		if(trigger=="shippingstate") {
			fetch_appellations(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedApp);
			fetch_varietals(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedVarietal);
			fetch_wineries(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedWinery);
			fetch_pricerange(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedPriceRange);
			fetch_type(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedType);
			calculateResults(selectedState,selectedApp,selectedWinery,selectedVarietal,selectedPriceRange,selectedType)
		}
		
		if(trigger=='appellation') {
			fetch_varietals(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedVarietal);
			fetch_wineries(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedWinery);
			fetch_pricerange(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedPriceRange);
			fetch_type(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedType);
			calculateResults(selectedState,selectedApp,selectedWinery,selectedVarietal,selectedPriceRange,selectedType)
		}
		
		if(trigger=='varietal') {
			fetch_appellations(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedApp);
			fetch_wineries(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedWinery);
			fetch_pricerange(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedPriceRange);
			fetch_type(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedType);
			calculateResults(selectedState,selectedApp,selectedWinery,selectedVarietal,selectedPriceRange,selectedType)
		}
		
		if(trigger=='winery') {
			fetch_appellations(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedApp);
			fetch_varietals(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedVarietal);
			fetch_pricerange(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedPriceRange);
			fetch_type(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedType);
			calculateResults(selectedState,selectedApp,selectedWinery,selectedVarietal,selectedPriceRange,selectedType)
		}
		
		if(trigger=='pricerange') {
			fetch_appellations(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedApp);
			fetch_varietals(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedVarietal);
			fetch_wineries(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedWinery);
			fetch_type(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedType);
			calculateResults(selectedState,selectedApp,selectedWinery,selectedVarietal,selectedPriceRange,selectedType)
		}
		
		if(trigger=='type') {
			fetch_appellations(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedApp);
			fetch_varietals(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedVarietal);
			fetch_wineries(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedWinery);
			fetch_pricerange(selectedState,selectedApp,selectedVarietal,selectedWinery,selectedPriceRange,selectedType,selectedPriceRange);
			calculateResults(selectedState,selectedApp,selectedWinery,selectedVarietal,selectedPriceRange,selectedType)
		}
	}
	
	
	
	
	
	function fetch_appellations(param_state,param_app,param_varietal,param_winery,param_price,param_type,defaultvalue) {
		ajax.requestFile = "../retrieveShippingAppellations.aspx?stateId="+param_state+"&appellationId="+param_app+"&varietalId="+param_varietal+"&wineryId="+param_winery+"&pricerangeId="+param_price+"&typeId="+param_type+"&val="+defaultvalue;
		ajax.onCompletion = function(){ displayAppellations(ajax,defaultvalue); };	// Specify function that will be executed after file has been found
		ajax.runAJAX();		// Execute AJAX function
	}
	
	
	function fetch_varietals(param_state,param_app,param_varietal,param_winery,param_price,param_type,defaultvalue) {
		ajax2.requestFile = "../retrieveShippingVarietals.aspx?stateId="+param_state+"&appellationId="+param_app+"&varietalId="+param_varietal+"&wineryId="+param_winery+"&pricerangeId="+param_price+"&typeId="+param_type+"&val="+defaultvalue;
		ajax2.onCompletion = function(){ displayVarietals(ajax2,defaultvalue); };	// Specify function that will be executed after file has been found
		ajax2.runAJAX();		// Execute AJAX function
	}
	
	function fetch_wineries(param_state,param_app,param_varietal,param_winery,param_price,param_type,defaultvalue) {
		ajax3.requestFile = "../retrieveShippingWineries.aspx?stateId="+param_state+"&appellationId="+param_app+"&varietalId="+param_varietal+"&wineryId="+param_winery+"&pricerangeId="+param_price+"&typeId="+param_type+"&val="+defaultvalue;
		ajax3.onCompletion = function(){ displayWineries(ajax3,defaultvalue); };	// Specify function that will be executed after file has been found
		ajax3.runAJAX();		// Execute AJAX function
	}
	
	function fetch_pricerange(param_state,param_app,param_varietal,param_winery,param_price,param_type,defaultvalue) {
		ajax7.requestFile = "../retrieveShippingPrices.aspx?stateId="+param_state+"&appellationId="+param_app+"&varietalId="+param_varietal+"&wineryId="+param_winery+"&pricerangeId="+param_price+"&typeId="+param_type+"&val="+defaultvalue;
		ajax7.onCompletion = function(){ displayPriceRange(ajax7,defaultvalue); };	// Specify function that will be executed after file has been found
		ajax7.runAJAX();		// Execute AJAX function
	}
	
	function fetch_type(param_state,param_app,param_varietal,param_winery,param_price,param_type,defaultvalue) {
		ajax8.requestFile = "../retrieveShippingTypes.aspx?stateId="+param_state+"&appellationId="+param_app+"&varietalId="+param_varietal+"&wineryId="+param_winery+"&pricerangeId="+param_price+"&typeId="+param_type+"&val="+defaultvalue;
		ajax8.onCompletion = function(){ displayTypes(ajax8,defaultvalue); };	// Specify function that will be executed after file has been found
		ajax8.runAJAX();		// Execute AJAX function
	}
	
	function displayAppellations(ajax,defaultValue)
	{
		var xml = ajax.response;
		xml = xml.replace(/\n/gi,'');

		document.getElementById("ddShippingAppellation").options.length = 0;
		
		var options = xml.split(/<appellation>/gi);
		var valueValuue = "";
		var textValue = "";
		
		document.getElementById("ddShippingAppellation").options[0] = new Option("All",0);
		
		for(var no=1;no<options.length;no++){
		
			var elements = options[no].split(/</gi);
			
			for(var no2=0;no2<elements.length;no2++){
				if(elements[no2].substring(0,1)!='/'){
					var key = elements[no2].replace(/^(.*?)>.*$/gi,'$1');
					var value = elements[no2].replace(/^.*?>(.*)$/gi,'$1');
			
					if(key.indexOf('id')>=0){
						valueValuue = value;
					}
					
					if(key.indexOf('avadva')>=0){
						textValue = value;
					}
					
				}
			}
			document.getElementById("ddShippingAppellation").options[(no-1)+1] = new Option(textValue,valueValuue);
			
		}

		if(defaultValue!=-1) {
			var dd = document.getElementById("ddShippingAppellation");
			for(var j=0;j<dd.length;j++) {
				if(dd.options[j].value==defaultValue) {
					dd.options[j].selected=true;
				}
			}
		}
	}


	function displayVarietals(ajax,defaultValue)
	{
		var xml = ajax.response;
		xml = xml.replace(/\n/gi,'');

		document.getElementById("ddShippingVarietals").options.length = 0;
		
		var options = xml.split(/<appellation>/gi);
		var valueValuue = "";
		var textValue = "";
		
		document.getElementById("ddShippingVarietals").options[0] = new Option("All",0);
		
		for(var no=1;no<options.length;no++){
		
			var elements = options[no].split(/</gi);
			
			for(var no2=0;no2<elements.length;no2++){
				if(elements[no2].substring(0,1)!='/'){
					var key = elements[no2].replace(/^(.*?)>.*$/gi,'$1');
					var value = elements[no2].replace(/^.*?>(.*)$/gi,'$1');
			
					if(key.indexOf('id')>=0){
						valueValuue = value;
					}
					
					if(key.indexOf('avadva')>=0){
						textValue = value;
					}
					
				}
			}
			document.getElementById("ddShippingVarietals").options[(no-1)+1] = new Option(textValue,valueValuue);
		}
		if(defaultValue!=-1) {
			var dd = document.getElementById("ddShippingVarietals");
			for(var j=0;j<dd.length;j++) {
				if(dd.options[j].value==defaultValue) {
					dd.options[j].selected=true;
				}
			}
		}
	}
	
	
	function displayWineries(ajax,defaultValue)
	{
		var xml = ajax.response;
		xml = xml.replace(/\n/gi,'');

		document.getElementById("ddWineries").options.length = 0;
		
		var options = xml.split(/<appellation>/gi);
		var valueValuue = "";
		var textValue = "";
		
		document.getElementById("ddWineries").options[0] = new Option("All",0);
		
		if(options.length>0) {
		for(var no=1;no<options.length;no++){
		
			var elements = options[no].split(/</gi);
			
			for(var no2=0;no2<elements.length;no2++){
				if(elements[no2].substring(0,1)!='/'){
					var key = elements[no2].replace(/^(.*?)>.*$/gi,'$1');
					var value = elements[no2].replace(/^.*?>(.*)$/gi,'$1');
			
					if(key.indexOf('id')>=0){
						valueValuue = value;
					}
					
					if(key.indexOf('avadva')>=0){
						textValue = value;
					}
					
				}
			}
			document.getElementById("ddWineries").options[(no-1)+1] = new Option(textValue,valueValuue);
		}
		}
		if(defaultValue!=-1) {
			var dd = document.getElementById("ddWineries");
			for(var j=0;j<dd.length;j++) {
				if(dd.options[j].value==defaultValue) {
					dd.options[j].selected=true;
				}
			}
		}
	}
	
	
	function replaceIt(sString, sReplaceThis, sWithThis) { 
		if (sReplaceThis != "" && sReplaceThis != sWithThis) { 
			var counter = 0; 
			var start = 0; 
			var before = ""; 
			var after = ""; 
			while (counter<sString.length) { 
				start = sString.indexOf(sReplaceThis, counter); 
				if (start == -1) { 
					break; 
				} else { 
					before = sString.substr(0, start); 
					after = sString.substr(start + sReplaceThis.length, sString.length); 
					sString = before + sWithThis + after; 
					counter = before.length + sWithThis.length; 
				} 
			} 
		} 
		return sString; 
	}
	

	function displayPriceRange(ajax,defaultValue)
	{
		var strValue = "";
		var xml = ajax.response;
		xml = xml.replace(/\n/gi,'');

		document.getElementById("ddPriceRange").options.length = 0;
		
		var options = xml.split(/<appellation>/gi);
		var valueValuue = "";
		var textValue = "";
		var count = 0;
		document.getElementById("ddPriceRange").options[0] = new Option("All",0);
		
		if(options.length>0) {
		for(var no=1;no<options.length;no++){
		
			var elements = options[no].split(/</gi);
			
			for(var no2=0;no2<elements.length;no2++){
				if(elements[no2].substring(0,1)!='/'){
					var key = elements[no2].replace(/^(.*?)>.*$/gi,'$1');
					var value = elements[no2].replace(/^.*?>(.*)$/gi,'$1');
			
					if(key.indexOf('id')>=0){
						valueValue = value;
						if(value=="10") strValue="under $10";
						if(value=="10-20") strValue="$10-$19.99";
						if(value=="20-30") strValue="$20-$29.99";
						if(value=="30-40") strValue="$30-$39.99";
						if(value=="40-50") strValue="$40-$49.99";
						if(value=="50") strValue = "over $50";
					}
					
					if(key.indexOf('avadva')>=0){
						textValue = value;
					}
					
				}
			}
			if(textValue!=0) {
				count+=1;
			document.getElementById("ddPriceRange").options[count] = new Option(strValue,valueValue);
			}
			}
		}
		if(defaultValue!=-1) {
			var dd = document.getElementById("ddPriceRange");
			for(var j=0;j<dd.length;j++) {
				if(dd.options[j].value==defaultValue) {
					dd.options[j].selected=true;
				}
			}
		}
	}
	
	
	function displayTypes(ajax,defaultValue)
	{
		var xml = ajax.response;
		xml = xml.replace(/\n/gi,'');

		document.getElementById("ddType").options.length = 0;
		
		var options = xml.split(/<appellation>/gi);
		var valueValuue = "";
		var textValue = "";
		
		document.getElementById("ddType").options[0] = new Option("All",0);
		
		for(var no=1;no<options.length;no++){
		
			var elements = options[no].split(/</gi);
			
			for(var no2=0;no2<elements.length;no2++){
				if(elements[no2].substring(0,1)!='/'){
					var key = elements[no2].replace(/^(.*?)>.*$/gi,'$1');
					var value = elements[no2].replace(/^.*?>(.*)$/gi,'$1');
			
					if(key.indexOf('id')>=0){
						valueValuue = value;
					}
					
					if(key.indexOf('avadva')>=0){
						textValue = value;
					}
					
				}
			}
			document.getElementById("ddType").options[(no-1)+1] = new Option(textValue,valueValuue);
			
		}

		if(defaultValue!=-1) {
			var dd = document.getElementById("ddType");
			for(var j=0;j<dd.length;j++) {
				if(dd.options[j].value==defaultValue) {
					dd.options[j].selected=true;
				}
			}
		}
	}
	
	
	function calculateResults(stateId,appellationId,wineryId,varietalId,pricerangeId,typeId)
	{	
		ajax5.requestFile = "../calculateStoreSearch.aspx?stateId="+stateId+"&wineryId="+wineryId+"&appellationId="+appellationId+"&varietalId="+varietalId+"&pricerangeId="+pricerangeId+"&typeId="+typeId;	// Specifying which file to get
		ajax5.onCompletion = function(){ displayCalculationResult(ajax5); };	// Specify function that will be executed after file has been found
		ajax5.runAJAX();		// Execute AJAX function
	}

	function displayCalculationResult(ajax)
	{
		var xml = ajax.response;
		xml = xml.replace(/\n/gi,'');
		
		var options = xml.split(/<appellation>/gi);
		var valueValuue = "";
		var textValue = "";
		
		for(var no=1;no<options.length;no++){
		
			var elements = options[no].split(/</gi);
			
			for(var no2=0;no2<elements.length;no2++){
				if(elements[no2].substring(0,1)!='/'){
					var key = elements[no2].replace(/^(.*?)>.*$/gi,'$1');
					var value = elements[no2].replace(/^.*?>(.*)$/gi,'$1');
			
					if(key.indexOf('id')>=0){
						valueValuue = value;
					}
					
					if(key.indexOf('avadva')>=0){
						textValue = value;
					}
					
				}
			}
			
			if(valueValuue==0) {
				document.getElementById("searchBtn").value = "no wines";
				document.getElementById("searchBtn").disabled=true;
			}
			else {
				document.getElementById("searchBtn").value = "see all "+valueValuue+" wines";
				document.getElementById("searchBtn").disabled=false;
			}
		}
		document.body.style.cursor = 'default';
	}
	
	
	function clearselections() {
		document.getElementById("ddPriceRange").selectedIndex=0;
		document.getElementById("ddWineries").selectedIndex=0;
		document.getElementById("ddShippingVarietals").selectedIndex=0;
		document.getElementById("ddShippingAppellation").selectedIndex=0;
		document.getElementById("ddType").selectedIndex=0;
		
		
		document.getElementById("searchBtn").value = "no wines";
		document.getElementById("searchBtn").disabled=true;
		
		//alert("clear");
	}
	
	
	function searchstore(strpath) {
		var dd_app 			= document.getElementById("ddShippingAppellation");
		var dd_varietals 	= document.getElementById("ddShippingVarietals");
		var dd_wineries 	= document.getElementById("ddWineries");
		var dd_pricerange 	= document.getElementById("ddPriceRange");
		var dd_state 		= document.getElementById("ddShippingLocations2");
		var dd_type			= document.getElementById("ddType");
		
		var selectedApp = 0;
		var selectedState = 0;
		var selectedWinery = 0;
		var selectedPriceRange = 0;
		var selectedVarietal = 0;
		var selectedType = 0;
		
		if(dd_state.selectedIndex!=-1) selectedState = dd_state.options[dd_state.selectedIndex].value;
		if(dd_app.selectedIndex!=-1) selectedApp = dd_app.options[dd_app.selectedIndex].value;
		if(dd_wineries.selectedIndex!=-1) selectedWinery = dd_wineries.options[dd_wineries.selectedIndex].value;
		if(dd_pricerange.selectedIndex!=-1) selectedPriceRange = dd_pricerange.options[dd_pricerange.selectedIndex].value;
		if(dd_varietals.selectedIndex!=-1) selectedVarietal = dd_varietals.options[dd_varietals.selectedIndex].value;
		if(dd_type.selectedIndex!=-1) selectedType = dd_type.options[dd_type.selectedIndex].value;
		
		if(typeof(strpath)=="undefined") strpath=""; 
		//location.href=strpath+"new-search-wine.aspx?appellationId="+selectedApp+"&wineryId="+selectedWinery+"&varietalId="+selectedVarietal+"&pricerangeId="+selectedPriceRange;
		location.href=strpath+"new-search-state.aspx?stateId="+selectedState+"&appellationId="+selectedApp+"&wineryId="+selectedWinery+"&varietalId="+selectedVarietal+"&pricerangeId="+selectedPriceRange+"&typeId="+selectedType;

	}
	