﻿Type.registerNamespace('Vehix.Presentation.Research')
Vehix.Presentation.Research.Selector = function(id,validationGroup,category,bodyStyleElementID,yearElementID,makeElementID,modelElementID,trimElementID,zipElementID,navigateElementID,href,scopeKey)
{
	Vehix.Presentation.Research.Selector.initializeBase(this);
	var element;
	
	this.set_id(id);
	this.set_enableChangedEvent(false);
	this._validationGroup = validationGroup;
	this._category = category;
	
	this._bodyStyleElementID = bodyStyleElementID;
	if(element = $get(this._bodyStyleElementID))
	{
		element.onchange = new Function('$find(\''+ id +'\').changed(\'bodyStyle\',this.options[this.selectedIndex].value)');
	}
	
	this._yearElementID = yearElementID;
	if(element = $get(this._yearElementID))
	{
		element.onchange = new Function('$find(\''+ id +'\').changed(\'year\',this.options[this.selectedIndex].value)');
	}
	
	this._makeElementID = makeElementID;
	if(element = $get(this._makeElementID))
	{
		element.onchange = new Function('$find(\''+ id +'\').changed(\'make\',this.options[this.selectedIndex].value)');
	}
	
	this._modelElementID = modelElementID;
	if(element = $get(this._modelElementID))
	{
		element.onchange = new Function('$find(\''+ id +'\').changed(\'model\',this.options[this.selectedIndex].value)');
	}
	
	this._trimElementID = trimElementID;
	if(element = $get(this._trimElementID))
	{
		element.onchange = new Function('$find(\''+ id +'\').changed(\'trim\',this.options[this.selectedIndex].value)');
	}
	
	this._zipElementID = zipElementID;
	
	this._navigateElementID = navigateElementID;
	if(element = $get(this._navigateElementID))
	{
		element.href = 'javascript:$find(\''+ id +'\').navigate()';
	}
	
	this._href = href;
	if(Sys.Application.findComponent(id) == null)
	{
		Sys.Application.addComponent(this);
		Sys.Application.add_load(new Function('if(!Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()){$find(\''+ id+'\').restore()}'));	
	}
	
	this._scopeKey = scopeKey;
	
	this.set_enableChangedEvent(true);
}
Vehix.Presentation.Research.Selector.prototype =
{
	get_category: function()
	{
		return this._category;
	},
	get_bodyStyle: function()
	{
		return Vehix.Presentation.tryGetSelectedValue($get(this._bodyStyleElementID));
	},
	set_bodyStyle: function(value)
	{
		var element = $get(this._bodyStyleElementID);
		if (element)
		{
			Vehix.Presentation.trySetSelectedValue(element, value);
			Sys.UI.Behavior.getBehaviorByName(element, 'CascadingDropDownBehavior').set_SelectedValue(value);
		}
	},
	get_year: function()
	{
		return Vehix.Presentation.tryGetSelectedValue($get(this._yearElementID));
	},
	set_year: function(value)
	{
		var element = $get(this._yearElementID);
		if (element)
		{
			Vehix.Presentation.trySetSelectedValue(element, value);
			Sys.UI.Behavior.getBehaviorByName(element, 'CascadingDropDownBehavior').set_SelectedValue(value);
		}
	},
	get_makeID: function()
	{
		return Vehix.Presentation.tryGetSelectedValue($get(this._makeElementID));
	},
	set_makeID: function(value)
	{
		var element = $get(this._makeElementID);
		if (element)
		{
			Vehix.Presentation.trySetSelectedValue(element, value);
			Sys.UI.Behavior.getBehaviorByName(element, 'CascadingDropDownBehavior').set_SelectedValue(value);
		}
	},
	get_make: function()
	{
		return Vehix.Presentation.tryGetSelectedText($get(this._makeElementID));
	},
	get_modelID: function()
	{
		return Vehix.Presentation.tryGetSelectedValue($get(this._modelElementID));
	},
	set_modelID: function(value)
	{
		var element = $get(this._modelElementID);
		if (element)
		{
			Vehix.Presentation.trySetSelectedValue(element, value);
			Sys.UI.Behavior.getBehaviorByName(element, 'CascadingDropDownBehavior').set_SelectedValue(value);
		}
	},
	get_model: function()
	{
		return Vehix.Presentation.tryGetSelectedText($get(this._modelElementID));
	},
	get_trimID: function()
	{
		return Vehix.Presentation.tryGetSelectedValue($get(this._trimElementID));
	},
	set_trimID: function(value)
	{
		var element = $get(this._trimElementID);
		if (element)
		{
			Vehix.Presentation.trySetSelectedValue(element, value);
			Sys.UI.Behavior.getBehaviorByName(element, 'CascadingDropDownBehavior').set_SelectedValue(value);
		}
	},
	get_trim: function()
	{
		return Vehix.Presentation.tryGetSelectedText($get(this._trimElementID));
	},
	get_zip: function()
	{
		var result = null;
		var element = $get(this._zipElementID);
		if (element)
		{
			result = element.value;
		}
		return result;
	},
	set_zip: function(value)
	{
		var element = $get(this._zipElementID);
		if (element)
		{
			element.value = value;
		}
	},
	get_href: function()
	{
		return this._href;
	},
	set_href: function(value)
	{
		this._href = value;
	},
	restore: function(state)
	{
		if (!state) state = Vehix.Presentation.getCookie('Research Selector State');
		if (state)
		{
			try
			{
				this.set_enableChangedEvent(false)
				state = eval('(' + state + ')')
				if (state.scopeKey == this._scopeKey)
				{
					this.set_bodyStyle(state.bodyStyle);
					this.set_year(state.year);
					this.set_makeID(state.make);
					this.set_modelID(state.model);
					this.set_trimID(state.trim);
				}
				this.set_zip(Vehix.Presentation.getCookie('zip'));
			}
			catch (e)
			{

			}
			finally
			{
				this.set_enableChangedEvent(true)
			}
		}
	},
	persist: function()
	{
		Vehix.Presentation.setCookie('Research Selector State', { scopeKey: this._scopeKey, bodyStyle: this.get_bodyStyle(), year: this.get_year(), make: this.get_makeID(), model: this.get_modelID(), trim: this.get_trimID() })
	},
	navigate: function()
	{
		if (Page_ClientValidate(this._validationGroup) == true)
		{
			this.persist();
			var href = this.get_href();
			var queryString = new Vehix.Presentation.QueryString(href);
			if (this.get_bodyStyle())
			{
				queryString.set_item('bodystyle', this.get_bodyStyle());
			}
			if (this.get_year())
			{
				queryString.set_item('year', this.get_year());
			}
			if (this.get_make())
			{
				queryString.set_item('makeid', this.get_makeID());
			}
			if (this.get_model())
			{
				queryString.set_item('modelid', this.get_modelID());
			}
			if (this.get_trim())
			{
				queryString.set_item('trimid', this.get_trimID());
			}
			Vehix.Presentation.clearCookie('zip');
			Vehix.Presentation.setCookie('zip', this.get_zip());
			document.location.href = queryString.toString(Vehix.Presentation.QueryString.stripQuery(this.get_href()));
		}
	}
}
Vehix.Presentation.Research.Selector.registerClass('Vehix.Presentation.Research.Selector',Vehix.Presentation.Selector);