var LineupInteract = Class.create({
	initialize: function() {
		this.lastRadioClicked = null;
		this.finishClickInFormCallBacks = [];
		this.lastChannelSearch = null;
		document.observe('dom:loaded', this.initialEventBinding.bind(this));
	},

	initialEventBinding: function() {
		$('categorySelection').observe('click', this.clickInForm.bind(this));
		$('searchButton').observe('click', this.searchButtonClicked.bind(this));
		$('viewAllImage').observe('click', this.viewAllImageClicked.bind(this));
		new Ajax.Autocompleter("searchField", "autocomplete_choices", "includes/usdish.com/channelsAutocompleteResponse.php", {paramName: "channelName", minChars: 2, afterUpdateElement: this.autocompleteListElementSelected.bind(this)});
	},

	clickInForm: function(event) {
		var el = Event.element(event);
		if(el.type=='radio' && el.id!=this.lastRadioClicked) {
			new Ajax.Request('includes/usdish.com/channelsLineupResponse.php', {method: 'post', parameters: {category: el.value}, onComplete: this.finishClickInForm.bind(this)});
			this.lastRadioClicked = el.id;
		}
	},

	finishClickInForm: function(response) {
		$('channelLineupContainer').innerHTML = response.responseText;
		for(var i=0; i<this.finishClickInFormCallBacks.length; i++) {
			setTimeout(this.finishClickInFormCallBacks[i], 0);
		}
		this.finishClickInFormCallBacks = [];
	},

	registerFinishClickInFormCallBack: function(func) {
		this.finishClickInFormCallBacks.push(func);
	},

	searchButtonClicked: function() {
		if($F('searchField')!='' && $F('searchField')!='Enter Channel Name Here') {
			if($('radio1').checked) {
				this.searchButtonAjax();
			}
			else {
				this.lastRadioClicked = 'radio1';
				this.registerFinishClickInFormCallBack(this.searchButtonAjax.bind(this));
				this.viewAllImageClicked();
			}
		}
	},

	searchButtonAjax: function() {
		new Ajax.Request('includes/usdish.com/channelsSearchResponse.php', {parameters: {channelName: $F('searchField')}, onComplete: this.finishSearchButtonClicked.bind(this)});
	},

	finishSearchButtonClicked: function(response) {
		var id = response.responseText;
		this.scrollToElement(id);
	},

	viewAllImageClicked: function() {
		if($('radio1').checked==false) {
			$('radio1').checked = true;
			new Ajax.Request('includes/usdish.com/channelsLineupResponse.php', {method: 'post', parameters: {category: $('radio1').value}, onComplete: this.finishClickInForm.bind(this)});
		}
	},

	autocompleteListElementSelected: function(text, li) {
		setTimeout(this.autocompleteListElementSelectedDelayFunction.bindAsEventListener(this, text, li), 100);
	},

	autocompleteListElementSelectedDelayFunction: function(event, text, li) {
		if($('radio1').checked) {
			//this.scrollToElement(li.id);
			this.searchButtonAjax();
		}
		else {
			this.lastRadioClicked = 'radio1';
			this.registerFinishClickInFormCallBack(this.searchButtonAjax.bind(this));
			this.viewAllImageClicked();
		}
	},

	scrollToElement: function(id) {
		if(id > 0) {
			if($('channel'+id)!=null) {
				$('channel'+id).scrollTo();

				if(this.lastChannelSearch!=null) {
					$('channel'+this.lastChannelSearch).up().removeClassName('highlight');
				}

				$('channel'+id).up().addClassName('highlight');
				this.lastChannelSearch = id;
			}
			else {
				new Effect.Highlight($('searchField').up(), {startcolor: '#ff0000', endcolor: '#eeeeee'});
			}
		}
		else {
			new Effect.Highlight($('searchField').up(), {startcolor: '#ff0000', endcolor: '#eeeeee'});
		}
	}
});

interact = new LineupInteract();