var EC_HelpCenter = {
	default_search_value: '',
	search_url: '/search/helpcenter',
	templateGen_url: '/helpcenter/content/templategen',
	templateGenProducts_url: '/helpcenter/content/templates/5',
	current_url: '/helpcenter',
	resultPanelIsVisible: false,
	resultCount: 0,
	resultIndex: -1, 
	timer: false,
	timeout: 3000,
	products: false,
	nav: false,
	navScroller: false,
	navInitFx: false,
	
	init: function() {		
		this.default_search_value = $('search').value;
		$('search').addEvent('focus', this.initSearch);
		$('search').addEvent('blur', this.resetSearch);
		$('search').addEvent('keydown', this.keyFunctions);
		$('searchButton').addEvent('click', this.doSearch);		
		
		this.nav = $('hc_nav_child_container');
		
		if (this.nav) {
			this.initNav();
		}
	},
	
	initNav: function()
	{
		$$('.nav_arrow').setStyle('display', 'block');
		
		var child = $('hc_nav_child').getChildren()[0];
		var width = 0;
		
		child.getChildren().each(function(item, i) {
			width += item.getSize().x + 18;
			item.addEvent('click', EC_HelpCenter.selectNavGroup);
			
			if (i == 0) {
				item.fireEvent('click', {target: item}, 500);
			}
		});
		
		child.setStyle('width', width + 15);
		
		EC_HelpCenter.navScroller = new Scroller('hc_nav_child', {area: 120, velocity: 0.25});
		EC_HelpCenter.navScroller.start(); 
		
		$('hc_nav_child_container').addEvent('mouseout', (function(e) {
			EC_HelpCenter.navScroller.stop();
		}));

		$$('.nav_arrow').addEvent('mousemove', (function(e) {
			EC_HelpCenter.navScroller.getCoords(e);
		}));
		
		$('hc_nav_child').addEvent('mousemove', (function(e) {
			if (EC_HelpCenter.navInitFx != false) {
				EC_HelpCenter.navInitFx.cancel();
			}
		}));

		$$('.nav_arrow').addEvent('mousemove', (function(e) {
			if (EC_HelpCenter.navInitFx != false) {
				EC_HelpCenter.navInitFx.cancel();
			}
		}));
		
		new Fx.SmoothScroll();
		
		if (width > 900) {
			(function() { EC_HelpCenter.navInitFx = new Fx.Scroll($('hc_nav_child'), {duration: 1500}); EC_HelpCenter.navInitFx.start(75, 0); }).delay(500);
		}
	},
	
	selectNavGroup: function(e)
	{
		var target = e.target;
		if (target.nodeName != 'A') {
			target = target.parentNode;
		} 
		
		var group = 'subnav_' + target.rel;
		
		if ($(group)) {
			$('hc_leftnav').empty();
			
			var h3 = new Element('h3');
			h3.set('text', target.title);
			$(h3).inject('hc_leftnav');
			
			var subnav = $(group).clone();
			subnav.setStyle('display', 'block');
			$(subnav).inject('hc_leftnav');
							
			$$('.page_link').each(function(el, i) {
				el.addEvent('click', function () { EC_HelpCenter.gotoPage(el.title) });
			});
		}
	},
	
	prevPage: function() {
		uri = EC_HelpCenter.current_url.replace('/helpcenter/fileprep/', '');
		uri = uri.toInt();
		uri = "/helpcenter/fileprep/" + (uri - 1);
		EC_HelpCenter.gotoPage(uri);
	},
	
	nextPage: function() {
		uri = EC_HelpCenter.current_url.replace('/helpcenter/fileprep/', '');
		uri = uri.toInt();
		uri = "/helpcenter/fileprep/" + (uri + 1);
		EC_HelpCenter.gotoPage(uri);
	},
	
	gotoPage: function(uri) {
		EC_HelpCenter.current_url = uri;
		uri = uri.replace(/helpcenter/g, 'helpcenter/content');
		$('page').empty();

		var req = new Request.JSON({url: uri, onComplete: function(result) {
				$('page').set('html', result.content); 
				
				if (result.js) {
					$exec(result.js);
				}
			}
		}).send();
	},
	
	initSearch: function() {
		if ($('search').value == EC_HelpCenter.default_search_value) {
			$('search').value = '';
			$('search').removeClass('empty_search');
		}
	},
		
	resetSearch: function() {
		if ($('search').value == '') {
			$('search').value = EC_HelpCenter.default_search_value;
			$('search').addClass('empty_search');
		}
	},
	
	templateGenUpdateProdSelect: function() { 
		if($('product_select').value != '0') {
			if(EC_HelpCenter.products == false) {
				$('template_cover').style.visibility = "visible";
				$('template_cover').style.display = "block";
				var req = new Request.JSON({url: EC_HelpCenter.templateGenProducts_url, onComplete: function(result) {
						new_html = "";
						EC_HelpCenter.products = result.content; 
						$('size_select').empty();
						
						for (i in EC_HelpCenter.products[$('product_select').value]['sizes']) {
							if(typeof EC_HelpCenter.products[$('product_select').value]['sizes'][i] == "object") {
								option = new Element('option');
								option.value = EC_HelpCenter.products[$('product_select').value]['sizes'][i]['path'];
								option.set('html', EC_HelpCenter.products[$('product_select').value]['sizes'][i]['description']);
								option.injectInside('size_select');
							}
						}
						$('template_cover').style.visibility = "hidden";
						$('template_cover').style.display = "none";
					}
				}).post({'products': 'yes'});
			}
			else {
				$('size_select').empty();
				for (i in EC_HelpCenter.products[$('product_select').value]['sizes']) {
					if(typeof EC_HelpCenter.products[$('product_select').value]['sizes'][i] == "object") {
						option = new Element('option');
						option.value = EC_HelpCenter.products[$('product_select').value]['sizes'][i]['path'];
						option.set('html', EC_HelpCenter.products[$('product_select').value]['sizes'][i]['description']);
						option.injectInside('size_select');
					}
				}
				$('template_cover').style.visibility = "hidden";
				$('template_cover').style.display = "none";
			}
		}
	},
	
	selectTemplate: function() {
		if ($('product_select').value == '0' || $('size_select').value == '0') {
			alert("Please select a product and a size to generate the appropriate template");
		}
		else {
			$('template_cover').style.visibility = "visible";
			$('template_cover').style.display = "block";
			var req = new Request.JSON({url: EC_HelpCenter.templateGen_url, onComplete: function(result) {
					$('page').empty();
					$('page').set('html', result.content); 
				}
			}).post({'product': $('product_select').value, 'size': $('size_select').value});
		} 
	},
	
	doSearch: function(event) {
		event = new Event(event); 
		if ($('search').value != '' && $('search').value != EC_HelpCenter.default_search_value && event.key != 'up' && event.key != 'down') { 
			var req = new Request.JSON({url: EC_HelpCenter.search_url, autoCancel: true, onComplete: function(result){
				EC_HelpCenter.showSearchResultPanel();
				EC_HelpCenter.clearSearchItems();
				EC_HelpCenter.resultCount = result.length;
				
				if (result.length > 0) {
					for (var i = 0; i < result.length; i++) {
						EC_HelpCenter.addSearchItem(result[i]);
					}
				} else {
					EC_HelpCenter.addSearchItem({title: 'No Results Found', text: 'Your search string returned no results. Please try a different search.', link: ''});
				}
			}}).post({'value': $('search').value});
		}
	},
	
	keyFunctions: function(event) {
		var children, child;
		event = new Event(event);		
		children = $('search_result_panel_content').getChildren();
		
		if (event.key == 'up' && EC_HelpCenter.resultIndex >= 0) {			
			child = children[EC_HelpCenter.resultIndex];
			child.removeClass('search_result_item');
			
			EC_HelpCenter.resultIndex--;
			
			if (EC_HelpCenter.resultIndex > -1) {
				child = children[EC_HelpCenter.resultIndex];
				child.addClass('search_result_item');
			}
			
			clearTimeout(EC_HelpCenter.timer);
			EC_HelpCenter.timer = setTimeout("EC_HelpCenter.hideSearchResultPanel()", EC_HelpCenter.timeout);
		}
		if (event.key == 'down' && EC_HelpCenter.resultIndex <= EC_HelpCenter.resultCount - 1) {			
			if (EC_HelpCenter.resultIndex > -1 && EC_HelpCenter.resultIndex < EC_HelpCenter.resultCount - 1) {
				child = children[EC_HelpCenter.resultIndex]; 
				child.removeClass('search_result_item');
			}			
			
			if (EC_HelpCenter.resultIndex < EC_HelpCenter.resultCount - 1) {
				
				EC_HelpCenter.resultIndex++;
			
				child = children[EC_HelpCenter.resultIndex];
				child.addClass('search_result_item');
			}
			
			clearTimeout(EC_HelpCenter.timer);
			EC_HelpCenter.timer = setTimeout("EC_HelpCenter.hideSearchResultPanel()", EC_HelpCenter.timeout);
		}
		if (event.key == 'enter' && EC_HelpCenter.resultIndex >= 0) {
			child = children[EC_HelpCenter.resultIndex];
			if (child && child.title != '') {
				EC_HelpCenter.gotoPage(child.title);
				EC_HelpCenter.hideSearchResultPanel();
				$('search').value = EC_HelpCenter.default_search_value;
				$('search').addClass('empty_search');
			}
		}
	},
	
	showSearchResultPanel: function() {
		clearTimeout(EC_HelpCenter.timer);
		EC_HelpCenter.timer = setTimeout("EC_HelpCenter.hideSearchResultPanel()", EC_HelpCenter.timeout);
		if (EC_HelpCenter.resultPanelIsVisible == false) {
			var coord = $('search').getCoordinates(); 
			$('search_result_panel').setStyle('top', coord.top + 27);
			$('search_result_panel').setStyle('left', coord.left - 71); 
			EC_HelpCenter.resultPanelIsVisible = true; 
			$('search_result_panel').setStyle('opacity', 0); 
			$('search_result_panel').setStyle('display', '');
			$('search_result_panel').tween('opacity', 1);
		}
	},
	
	hideSearchResultPanel: function() {
		if (EC_HelpCenter.resultPanelIsVisible == true) {
			EC_HelpCenter.resultPanelIsVisible = false;
			EC_HelpCenter.resultCount = 0;
			EC_HelpCenter.resultIndex = -1;
			$('search_result_panel').tween('opacity', 0);
			setTimeout("$('search_result_panel').setStyle('display', 'none')", 500);
		}
	},
	
	clearSearchItems: function() {
		$('search_result_panel_content').empty();
	},
	
	addSearchItem: function(item) {
		var div = new Element('div');
		div.title = item.link;
		div.addEvent('click', function(event) {
			if (event.target.title != '') {
				EC_HelpCenter.gotoPage(event.target.title);
				EC_HelpCenter.hideSearchResultPanel();
				$('search').value = EC_HelpCenter.default_search_value;
				$('search').addClass('empty_search');

			}
		});
		div.addEvent('mouseover', function(event) {
			clearTimeout(EC_HelpCenter.timer);
			EC_HelpCenter.timer = setTimeout("EC_HelpCenter.hideSearchResultPanel()", EC_HelpCenter.timeout);
		});
		
		var title = new Element('h3');
		title.set('html', item.title);
		title.title = item.link;
		
		var text = new Element('p');
		text.set('html', item.text);
		text.title = item.link;
		
		title.injectInside(div);
		text.injectInside(div);
		div.injectInside('search_result_panel_content');
	}

};

window.addEvent('domready', function() {
	EC_HelpCenter.init();
});
