/*
	Use to display help window in either tips or help format
	Pass object for settings
	properties: 
			tagsearch - only return topics that match this tagsearch
			category  - only return topics that are in this category
									( value can be id or name )
			format    - "tips" or "faq"			
*/

	function ShowHelpWindow(settings)
	{	
		/*
			use settings that are set - use default values for the rest
			make sure that there is a default value set for each possible setting
		*/
		var default_settings = {
														 tagsearch : '',
														 category  : '',
														 format    : 'faq'			
														}
		for (var i in default_settings) {
			settings[i] = settings[i] ? settings[i] : default_settings[i];
		}

		/*
			variables
		*/
		var help_topics       = [];
		var current_topic     = 0;
		var window_content    = null;
		var topics_container  = Builder.node('DIV',{className:'help_window_height'});
		var topics_actions    = Builder.node('DIV');
		var previous_button   = Builder.node('BUTTON',{},['Previous']);
		var next_button       = Builder.node('BUTTON',{},['Next']);
				next_button.onclick = function() { 
					current_topic++;
					display_help_topics();
				}
				previous_button.onclick = function() { 
					current_topic--;					
					display_help_topics();
				}
		
		var create_window = function(title)
		{
			if ($('help_window')) $('help_window').parentNode.removeChild($('help_window'));
			var help_window				   = new Window();
			help_window.id 			     = 'help_window';
			help_window.title 		   = title;
			help_window.bottom_color = '#c6def7';
			help_window.create();
			window_content = $('help_window_inner');
			
			window_content.appendChild(topics_container);
			if (settings.format == 'tips')
			{
				window_content.appendChild(topics_actions);
				build_topics_controls();
			}
		}
		
		this.load_help_topics = function()
		{
			var xmlhttp = new XMLHttpRequest();
			var poststr = 'action=load_help_topics&tagsearch=' + 
										urlencode(settings.tagsearch) + '&category=' + urlencode(settings.category) + 
										'&format=' + urlencode(settings.format);
		  xmlhttp.open("GET", jsconfig.site.root+"library/help.actions.php?"+poststr,true);
		  xmlhttp.onreadystatechange=function() {
			  if (xmlhttp.readyState==4) 
			  {
				  var response = JSON.parse(xmlhttp.responseText);
				  if (response == false) alert(xmlhttp.responseText);
				  else
					{						
							create_window(response.title);
							help_topics = response.help_topics;
							current_topic = 0;
							display(response.format);
					}
			  }
		  }
		  xmlhttp.send(null);		
		}

		var rate_topic = function(rating)
		{
			var xmlhttp = new XMLHttpRequest();
			var poststr = 'action=rate_help_topic&topic_id=' + help_topics[current_topic]['id'] + '&rating='+rating;
			xmlhttp.open("GET", jsconfig.site.root+"library/help.actions.php?"+poststr,true);
		  xmlhttp.onreadystatechange=function() {
			  if (xmlhttp.readyState==4) 
			  {
				  var response = JSON.parse(xmlhttp.responseText);
				  if (response == false) alert(xmlhttp.responseText);
				  else
					{
						show_rating_success();
					}
			  }
		  }
		  xmlhttp.send(null);					
		}
		
		var show_at_login_toggle = function(show)
		{
			$('show_at_login_message').innerHTML = 'saving...';
			var xmlhttp = new XMLHttpRequest();
			var poststr = 'action=show_help_at_login&show=' + show;
			xmlhttp.open("GET", jsconfig.site.root+"library/help.actions.php?"+poststr,true);
		  xmlhttp.onreadystatechange=function() {
			  if (xmlhttp.readyState==4) 
			  {
				  var response = JSON.parse(xmlhttp.responseText);
				  if (response == false) alert(xmlhttp.responseText);
				  else
					{
						$('show_at_login_message').innerHTML = 'saved.';
					}
			  }
		  }
		  xmlhttp.send(null);					
		}		
		
		var show_rating_success = function()
		{
			var rating = $('help_topic_rating');
			var message = Builder.node('SPAN',{},['Thank you for your feedback']);
			rating.parentNode.replaceChild(message,rating);
		}
		
		var build_topics_controls = function()
		{
			var yes = commonjs.jslink('yes');
					yes.onclick = function() {
						rate_topic(1);
					}
			var no  = commonjs.jslink('no');
					no.onclick = function() {
						rate_topic(0);
					}
			var rating = Builder.node('SPAN',{id:'help_topic_rating'},['Was this helpful? ',yes,' | ',no]);
						
			
			var show_at_login_checkbox = Builder.node('INPUT',{type:'checkbox'});		
					show_at_login_checkbox.onclick = function() {
						show_at_login_toggle(this.checked);
					}

			var show_at_login_message = Builder.node('SPAN',{id:'show_at_login_message'},['']);
					
			var show_at_login = Builder.node('SPAN',{},['Show StudyTag Tips each time I log in ',show_at_login_checkbox,
																									  show_at_login_message]);
			
			var button_container = Builder.node('P',{className:'center'},[previous_button,next_button]);
			
			// commonjs.append_children(topics_actions,[commonjs.hr(),rating,commonjs.hr(),show_at_login]);
				 commonjs.append_children(topics_actions,[commonjs.hr(),button_container,commonjs.hr(),show_at_login]);
			// have to set checked state here or IE won't do it!
			show_at_login_checkbox.checked = jsconfig.help_at_login == 1 ? true : false;			
		}
		
		var render_buttons = function()
		{
			var num_topics = help_topics.length;
			var last_index = num_topics-1;
			next_button.style.display     = ( current_topic == last_index || num_topics < 2 ) ? 'none' : '';
			previous_button.style.display = ( current_topic > 0 ) ? '' : 'none';	
		}
		
		var display_help_topics = function()
		{
			render_buttons();
			var topic_title = Builder.node('H2',{},[help_topics[current_topic]['name']]);
			var topic_body  = Builder.node('DIV');
			topic_body.innerHTML = help_topics[current_topic]['body'];
			topics_container.innerHTML = '';
			commonjs.append_children(topics_container,[topic_title,topic_body]);
		}
		
		var display_faq = function()
		{
			var top_list = Builder.node('UL',{id:'faq_top_list'});
			var faq_body = Builder.node('DIV');
			for (var i=0;i<help_topics.length;i++) {
				var tlink = Builder.node('A',{href:'javascript:void(0);'},[help_topics[i].name]);
				tlink.ref = 'faq_'+help_topics[i]['id'];
				tlink.onclick = function() {
					new Effect.ElementScroll(topics_container,this.ref);
				}
				top_list.appendChild(Builder.node('LI',{},[tlink]));
				var title = Builder.node('SPAN',{className:'bold',id:'faq_'+help_topics[i]['id']},[help_topics[i].name]);
				var toplink  = commonjs.jslink('top');
						toplink.onclick = function() {
							new Effect.ElementScroll(topics_container,'faq_top_list');							
						}
				var controls = Builder.node('DIV',{},[toplink]);						
				var fbody = Builder.node('DIV');
						fbody.innerHTML = help_topics[i]['body'];
				faq_body.appendChild(commonjs.hr());
				faq_body.appendChild(title);
				faq_body.appendChild(fbody);
				faq_body.appendChild(controls);				
				
			}
			topics_container.appendChild(top_list);
			topics_container.appendChild(faq_body);
		}
		
		var display = function(format)
		{
			if (format == 'tips') { display_help_topics(); }
			else if (format == 'faq') { display_faq(); }
		}
		
		
		
		// use contructor?
		this.load_help_topics();
		
	}