/// <reference path="jquery-vsdoc.js" /> 
/// <reference path="trinet.js" /> 

jQuery(function()
{
	var openSearchEngine = function(url, query, category, language)
	{
		url = url.replace(/\$q\$/gi, query);
		url = url.replace(/\$c\$/gi, category);
		url = url.replace(/\$l\$/gi, language);
		Trinet.Core.openWindow(url, "_blank", 640, 450, false, true, true, true, true, true, true);
		// (url, name, width, height, maximize, scrollbars, menubar, toolbar, location, statusbar, resizable)
	};
	
	var persistOptions = function()
	{
		if ("undefined" !== typeof(document.cookie))
		{
			var list = jQuery("form[name=multiSearchForm] input:checkbox").map(function() 
			{
				return this.name + "=" + (this.checked ? "1" : "0");
			});
			
			list = jQuery.unique(list);
			var value = list.join("&");
			
			var expires = new Date();
			expires.setFullYear(1 + expires.getFullYear());
			value = "SearchFormOption=" + value + "; expires=" + expires.toGMTString();
			document.cookie = value;
		}
	};
	
	var updateLabel = function()
	{
		var list = jQuery("form[name=multiSearchForm] input:checkbox:checked").map(function()
		{
			var lbl = jQuery("label[for=" + this.id + "]").html();
			if (0 === lbl.length) { lbl = this.value; }
			return lbl;
		});
		
		list = jQuery.unique(list);
		var value = "Searching: ";
		if (0 === list.length)
		{
			value += "<b>None</b>";
		}
		else
		{
			value += list.join(", ");
		}
		
		jQuery("#multiSearchFormLabel").html(value);
	};
	
	jQuery("form[name=multiSearchForm] input:checkbox").click(function()
	{
		persistOptions();
		updateLabel();
	});
	
	jQuery("form[name=multiSearchForm] a[rel*=multi-search]")
		.click(function()
		{
			var rel = this.getAttribute("rel");
			if ("string" === typeof(rel) && 0 !== rel.length)
			{
				var section, checked;
				if (rel.match(/multi-search-all/i))
				{
					section = rel.replace(/multi-search-all\[([^\]]*)\]/i, "$1");
					checked = true;
				}
				else
				{
					section = rel.replace(/multi-search-none\[([^\]]*)\]/i, "$1");
					checked = false;
				}
				if (0 !== section.length)
				{
					jQuery("form[name=multiSearchForm] input:checkbox[section=" + section + "]").attr("checked", checked);
					persistOptions();
					updateLabel();
					return false;
				}
			}
		});
	
	jQuery("form[name=multiSearchForm]").submit(function()
	{
		var id = jQuery("input:hidden[name=qid]").val();
		if ("string" !== typeof(id) || 0 === id.length) { id = "txtSearch"; }
		
		var txt = jQuery("input:text[id$=" + id + "]");
		if (0 !== txt.length)
		{
			var query = txt.val();
			if (0 === query.length)
			{
				alert("Please enter something to search for!");
				txt.setFocus();
				return false;
			}
			
			var list = jQuery("form[name=multiSearchForm] input:checkbox:checked");
			if (0 === list.length)
			{
				alert("Please select at least one search engine!");
				jQuery("form[name=multiSearchForm] input:checkbox").setFocus();
				return false;
			}
			
			var category = jQuery("form[name=multiSearchForm] select[name=cat]").val();
			var language = jQuery("form[name=multiSearchForm] select[name=lang]").val();
			list.each(function()
			{
				var url = this.value;
				if (0 !== url.length)
				{
					openSearchEngine(url, query, category, language);
				}
			});
		}
		
		return false;
	});
	
	updateLabel();
});

