
DiscountSearchForm = new function() {
	this.onCardTypeLoad = function(form) {
		new Ajax.Request("/database/system/modules/com.gridnine.opencms.modules.startravel/elements/search-form.jsp?command=discountCardsList", {
			parameters: {cardType : $F(form["cardType"])},
			onSuccess: function(transport) {
				Util.updateOptions($(form["cardType"]).options,
					transport.responseText.evalJSON());
			},
			onFailure: function(transport) {
				Util.handleAjaxError(transport);
			}
		});
	}
	this.onCardTypeChange = function(form) {
		new Ajax.Request("/database/system/modules/com.gridnine.opencms.modules.startravel/elements/search-form.jsp?command=discountCityList", {
			parameters: {cardType : $F(form["cardType"])},
			onSuccess: function(transport) {
				Util.updateOptions($(form["city"]).options,
					transport.responseText.evalJSON());
				DiscountSearchForm.onCityChange(form);
			},
			onFailure: function(transport) {
				Util.handleAjaxError(transport);
			}
		});
	}
	
	this.onCityChange = function(form) {
		new Ajax.Request("/database/system/modules/com.gridnine.opencms.modules.startravel/elements/search-form.jsp?command=discountCategoryList", {
			parameters: {
				cardType : $F(form["cardType"]),
				city : $F(form["city"])
			},
			onSuccess: function(transport) {
				Util.updateOptions($(form["category"]).options,
					transport.responseText.evalJSON());
			},
			onFailure: function(transport) {
				Util.handleAjaxError(transport);
			}
		});
	}
}

CourseSearchForm = new function() {
	this.onLanguageLoad = function(form) {
		new Ajax.Request("/database/system/modules/com.gridnine.opencms.modules.startravel/elements/search-form.jsp?command=courseLanguageList", {
			parameters: {lang : $F(form["lang"])},
			onSuccess: function(transport) {
				Util.updateOptions($(form["lang"]).options,
					transport.responseText.evalJSON());
			},
			onFailure: function(transport) {
				Util.handleAjaxError(transport);
			}
		});
	}

	this.onLanguageChange = function(form) {
		new Ajax.Request("/database/system/modules/com.gridnine.opencms.modules.startravel/elements/search-form.jsp?command=courseCountryList", {
			parameters: {lang : $F(form["lang"])},
			onSuccess: function(transport) {
				Util.updateOptions($(form["country"]).options,
					transport.responseText.evalJSON());
				CourseSearchForm.onCountryChange(form);
			},
			onFailure: function(transport) {
				Util.handleAjaxError(transport);
			}
		});
	}
	
	this.onCountryChange = function(form) {
		new Ajax.Request("/database/system/modules/com.gridnine.opencms.modules.startravel/elements/search-form.jsp?command=courseTypeList", {
			parameters: {
				lang : $F(form["lang"]),
				country : $F(form["country"])
			},
			onSuccess: function(transport) {
				Util.updateOptions($(form["type"]).options,
					transport.responseText.evalJSON());
			},
			onFailure: function(transport) {
				Util.handleAjaxError(transport);
			}
		});
	}
}

TourSearchForm = new function() {
	this.onContinentLoad = function(form) {
		new Ajax.Request("/database/system/modules/com.gridnine.opencms.modules.startravel/elements/search-form.jsp?command=tourContinentList", {
			parameters: {continent : $F(form["continent"])},
			onSuccess: function(transport) {
				Util.updateOptions($(form["continent"]).options,
					transport.responseText.evalJSON());
			},
			onFailure: function(transport) {
				Util.handleAjaxError(transport);
			}
		});
	}
	this.onContinentChange = function(form) {
		new Ajax.Request("/database/system/modules/com.gridnine.opencms.modules.startravel/elements/search-form.jsp?command=tourCountryList", {
			parameters: {continent : $F(form["continent"])},
			onSuccess: function(transport) {
				Util.updateOptions($(form["country"]).options,
					transport.responseText.evalJSON());
				TourSearchForm.onCountryChange(form);
			},
			onFailure: function(transport) {
				Util.handleAjaxError(transport);
			}
		});
	}
	
	this.onCountryChange = function(form) {
		new Ajax.Request("/database/system/modules/com.gridnine.opencms.modules.startravel/elements/search-form.jsp?command=tourTypeList", {
			parameters: {
				continent : $F(form["continent"]),
				country : $F(form["country"])
			},
			onSuccess: function(transport) {
				Util.updateOptions($(form["type"]).options,
					transport.responseText.evalJSON());
			},
			onFailure: function(transport) {
				Util.handleAjaxError(transport);
			}
		});
	}
}

Util = new function() {
	this.handleAjaxError = function(transport) {
		alert("Error:\n\n" + transport.responseText);
	}
	
	this.updateOptions = function(options, arr) {
		var curr = options[options.selectedIndex].value;
		options.length = 0;
		options[0] = new Option("-", "");
		for (var i = 0; i < arr.length; i++) {
			options[i + 1] = new Option(arr[i].value, arr[i].name);
			if (arr[i].name == curr) {
				options.selectedIndex = i + 1;
			}
		}
	}
}

