/*
	Script for sml_facetedsearch
*/

$j.scf.behavior.add("sml_facetedsearch_Behavior", {
	autoAttach: "div.sml_facetedsearch",

	attach: function(el, settings, jq){
		var sml=  $j.scf.smartlet.get(el);
		if(!sml) return;

		var jqResults = $j(".sml_facetedsearch_resultpane", jq);
		var jqFilters = $j(".sml_facetedsearch_filterpane", jq);
		var jqNav = $j(".sml_facetedsearch_navpane", jq);
		var jqInfo = $j(".sml_facetedsearch_info", jq);

	 	var jqInfoDisplay= $j("div.sml_facetedsearch_queryinfo",jq);

		initEnrichment();

		function initEnrichment(){
			enrich();
			enrichVerbose();
			enrichInput();
		}

		$j.scf.smartlet.bind('sml_facetedsearch_facet', function(ev) {
			var facet= ev.args.facet;
			var key= ev.args.key;
			var name= ev.args.name;
			var multimode= ev.args.multimode;
			var togglemulti= ev.args.togglemulti;

			var oFilters = $j.six.facetedSearch.getFilters(sml.get("filters"));

			var subtype= null;
			if (facet.indexOf('_')>0) { subtype= facet.replace(/^.+_/,""); facet= facet.replace(/_.+$/,"") }

			var o;
			if (oFilters.filters[facet]) {
				o = oFilters.filters[facet];
			} else {
				o = {"selection":[],"multi":"and"};
				if (multimode != "and" && multimode != "andor") {
					o.multi = "single";
				}
			}

			var callback = true;

			if (togglemulti) {
				switch(multimode) {

					case "and":		// fall through.
					case "or":		// fall through.
					case "single":
						callback = (o.inv || o.selection.length > 1);
						o.multi = multimode;
						o.inv = false;
						break;

					case "not":
						o.multi = "or";
						o.inv = true;
						break;
				}

				if (o.multi == "single") {
					o.selection = o.selection.slice(0, 1);
				}
			} else {
				if (name == null && multimode == null){
					var index = -1;
					for (var i=0; i < o.selection.length; i++){
						if (o.selection[i].key == key) {
							index = i;
							break;
						}
					}
					if (index != -1) {
						o.selection.splice(index, 1);
						if (o.selection.length == 0) o = null;
					}
				} else {
					var sel = new Object();
					sel.key = key;
					sel.name = name;
					if (subtype) sel.subtype = subtype;

					if (o.multi != "single") {
						o.selection[o.selection.length] = sel;
					} else {
						o.selection[0] = sel;
					}
				}
			}

			if (o)
				oFilters.filters[facet] = o;
			else
				delete oFilters.filters[facet];

			sml.set("filters", $j.scf.json.toString(oFilters) );

			if (!callback) return;

			//alert(sml.get("filters"));

			$j("#" + sml.id("search")).click();
		});

		$j.scf.smartlet.bind('sml_facetedsearch_filters', function(ev) {
			if (removeFilter(ev.args.removeFilter)) $j("#" + sml.id("search")).click();
		});

		$j.scf.smartlet.bind('sml_facetedsearch_persist', function(ev) {
			sml.set("action", ev.args.action);
			sml.set("persistkey", ev.args.persistkey);
			sml.set("persistproperty", ev.args.persistproperty);
			$j("form",jq).submit();
		});

		$j("form",jq).submit(function() {
			var frm = $j(this);
			var txt = $j("input[name='"+sml.id('searchterm')+"']",jq);
			cache= {};	// clear autocomplete cache
			txt.autocomplete("close");	// close autcomplete

			sml.set("searchterm", $j("input[name='"+sml.id('searchterm')+"']",jq).val() );
			var vcb = $j(":checkbox[name='"+sml.id('verbose')+"']",jq);
			if(vcb.length) sml.set("verbose", vcb.is(":checked") );
			sml.set("searchwithin", $j(":checkbox[name='"+sml.id('searchwithin')+"']",jq).is(":checked") );
			sml.set("searchprofile", $j(":checkbox[name='"+sml.id('searchprofile')+"']",jq).is(":checked")?'titlesonly':'' );

			var action= sml.get('action');

			jqInfo.hide();

			jqResults.hide();
			//if (action!='goto')
			//	jqNav.hide();
			enableInputs(false);

			sml.ajax({
				error: function(x){
					enableInputs(true);
					jqInfo.html(x.lastError).addClass("is_info error").show();
					setTimeout(function(){
						$j("body").scf.busy(false);
					}, 1000);
				},
				busy: function(mode){
					if(mode==false){
						$j("body").scf.busy(false);
					}
					else{
						$j("body").scf.busy({delay: 1});
					}
				}
				,ready: function() {
					ready(action);
				},
				abortPrevious: true
			});
			return false;
		});

		$j("#" + sml.id("search")).click(function(){
			// Reset action for searches.
			sml.set("action","");
			$j("form",jq).submit();
			return false;
		});

		if ($j.six.facetedSearch.getSmartletOption(sml.get('options'),'searchstart','client')=='client') $j("form",jq).submit();

		// Paging enrichment
		function enrichNavigation() {
			$j("div.sml_facetedsearch_nav button.navlink",jq).click(function() {
				if($j(this).hasClass("disabled")) return false;
				var page = $j(this).scf.form.val();
				sml.set('page', page);
				sml.set('action','goto');
				$j("form",jq).submit();
				return false;
			});

			$j("#" + sml.id("orderby"),jq).change(function() {
				sml.set("orderby", $j(this).val());
				sml.set("action","sort");
				$j("form",jq).submit();
				return false;
			});

			$j("#" + sml.id("order"),jq).hide();

			$j("#" + sml.id("pagesize"),jq).change(function(){
				sml.set("pagesize", $j(this).val());
				sml.set("page", 1);
				sml.set("action", "goto");
				$j("form",jq).submit();
				return false;
			});
		}

		var cache= {};
		function enrichInput() {
			var textBox = $j("input[name='"+sml.id('searchterm')+"']",jq);

			var callbackUrl = "/Pub/Faceted-Search-Smartlet/Faceted-Search-AutoCompleteCallback.html";
			if (callbackUrl.indexOf('?') == -1)
				callbackUrl += "?loc=";
			else
				callbackUrl += "&loc=";

			textBox.autocomplete({
				minLength: 2
				,delay: 100
				,source: function(request, response) {
					if ( request.term in cache ) {
						response( cache[ request.term ] );
						return;
					}
					request.queryxml=sml.get('queryxml');
					$j.ajax({
						url: callbackUrl + sml.lc,
						dataType: "json",
						data: request,
						error: function(){
							textBox.removeClass("ui-autocomplete-loading");
						},
						success: function( data ) {
							cache[ request.term ] = data;
							response( data );
						}
					});
				}
				,select: function(ev, ui) {
					textBox.val(ui.item.value);
					$j("#" + sml.id("search")).click();
					return false;
				}
			});
			textBox.keypress(function(e){
				if((e.keyCode && e.keyCode == 13)||(e.which && e.which == 13)){
					$j("#" + sml.id("search")).click();
					return false;
				}
			});
		}

		var ent = null;
		function enableInputs(enable) {
			clearTimeout(ent); ent=null;
			$j("button[type=submit]",jq).attr('disabled', !enable);
			$j("input[name='"+sml.id('searchterm')+"']",jq).attr("disabled", !enable);
			if(!enable){
				ent = setTimeout(function(){
					enableInputs(true);
				}, 5000);
			}
		}

		function removeFilter(flt) {	// remove a filter from the filters json, * to remove all
			var filters= sml.get("filters");
			if (filters) {
				var oFilters= $j.scf.json.parse(filters);
				if (flt=='*') {
					for (var prop in oFilters.filters) {	// delete all changable properties
						if (!oFilters.filters[prop].list || oFilters.filters[prop].list=='show') delete oFilters.filters[prop];
					}
				}
				else {
					delete oFilters.filters[flt];
				}
				sml.set("filters", $j.scf.json.toString(oFilters) );
				return true;
			}
			return false;
		}

		function enrichFilters() {
			// enrich filter list

			$j(".sml_facetedsearch_fltlist a",jq).click(function() {
				var url= $j(this).attr("href");
				var flt= $j.six.facetedSearch.getQueryParam(url,'filter');
				var remove=  $j.six.facetedSearch.getQueryParam(url,'remove');

				if (!flt) {	// urlparameters used?
					res= url.match(/\/removefilter\/([^\/]*)\/([^\/]*)/);
					// alert(url+":"+" 1:"+decodeUrlParam(res[1])+" 2:"+decodeUrlParam(res[2]));
					if (res && res[2]) {
						flt= decodeUrlParam(res[1]);
						remove= decodeUrlParam(res[2]);
					}
				}

				if (remove && removeFilter(flt) ) $j("#" + sml.id("search")).click();
				return false;
			});
		}

		function enrichVerbose(){
			$j(":checkbox[name='"+sml.id('verbose')+"']",jq).click (function () {
				sml.set("verbose", this.checked? 1: 0);

				sml.trigger('sml_facetedsearch_display', {
					"verbose": sml.get("verbose")
				});

				if (sml.get("verbose")==0) jqInfoDisplay.slideUp();
				else {
					jqInfoDisplay.slideDown();
					if (!sml.get('queryinfo')) sml.ajax({busy:true,ready:ready});
				}
			});
		}

		function ready(action){
			try {
				if (action == "save"){
					jqResults.show();
					jqNav.show();
				} else {
					jqResults.hide().html(sml.get('htmlresult')).show();
					jqFilters.html(sml.get('htmlfilters'));
					jqNav.html(sml.get('htmlnav')).show();
				}

				if (action=="load"){
					var popup=$j("ul.loadsavepopup");
					popup.slideUp("fast", function(){
						popup.remove();
					});
				}

				enrich();
				if (action!='goto')	{
					$j("input[name='"+sml.id('searchterm')+"']",jq).val( sml.get("searchterm") );
				}
				enableInputs(true);
				$j("input[name='"+sml.id('searchterm')+"']",jq).autocomplete("close");

				// Attach highlighting behaviour
				$j(".sml_facetedsearch_results",jq).scf.behavior("HighlightBehavior",{
					"terms":sml.get("extractedterms"),
					"subSelection": "td,th,a,div",
					"wrapper": '<em class="searchTerm"></em>'
				});

				// Update order by dropdown
				$j("#" + sml.id("orderby"),jq).val(sml.get("orderby"));

			} catch(e) {
				alert("Internal error: "+ e.description);
			}
		}

		// enrich after load and ajax callback
		function enrich() {
			enrichFilters();
			enrichNavigation();

			var tbl= $j.six.facetedSearch.formatQueryInfo(sml.get('queryinfo'));
			jqInfoDisplay.html(tbl);
		}

	}
});

$j.scf.behavior.add("sml_facetedsearch_Facet_Behavior", {
	autoAttach: "div.sml_facetedsearch_facet",

	attach: function(el, settings, jq){
		var sml=  $j.scf.smartlet.get(el);
		var jqSmlBox= jq.parents(".sml_facetedsearch_facet_box");	// get the box
		var jqResult= $j("div.sml_facetedsearch_facet_result",jq);
	 	var jqInfoDisplay= $j("div.sml_facetedsearch_facet_queryinfo",jq);
		enrich();
		initToggle();

		var busyHandler = function(mode){
			if(mode==undefined) mode = true;
			if(mode == true)
				jqSmlBox.addClass('busy');
			else
				jqSmlBox.removeClass('busy');
		};

		function ajax(ready, ev){
			sml.ajax({busy: busyHandler || true, ready: ready, event: ev, abortPrevious: true});
		}

		// enrich single multiselect button
		if (jqSmlBox.size()>1) jqSmlBox= jqSmlBox.last();  // extra safety: if multiple -nested- matches, get the last one
		function enrichMultiSelect() {
			var multiLnk = $j(".smlboxbtns a",jqSmlBox);

			var oFilters = $j.six.facetedSearch.getFilters(sml.get("filters"));

			if ($j.six.facetedSearch.getSmartletOption(sml.get('options'),'allowmulti',0)!=0 && oFilters.filters[sml.get("facet")]){
				window.status = sml.get("facet") + " - ACTIVE";
				multiLnk.removeClass("tog_inactive");
				multiLnk.addClass("tog_active");

				var s="";
				switch(oFilters.filters[sml.get("facet")].multi){
					case "or" :
						s = "<i>" + $j.six.localization.getString(sml.lc,"IXS_FILTER_OR") + "</i>";
						break;
					case "and" :
						s = "<i>" + $j.six.localization.getString(sml.lc,"IXS_FILTER_AND") + "</i>";
						break;
				}
				if (oFilters.filters[sml.get("facet")].inv) s = "<i>" + $j.six.localization.getString(sml.lc,"IXS_FILTER_NOT") + "</i>";

				$j("#" + sml.id("multimode")).html(s).show();
			} else {
				multiLnk.removeClass("tog_active");
				multiLnk.addClass("tog_inactive");
				$j("#" + sml.id("multimode")).hide();
			}
		}

		function decodeUrlParam(p) {
			if (!p) return p;
			
			return decodeURIComponent(p.replace(/\$/g, "%"));
		}

		function enrichLinks() {
			$j("a.facetadd",jqResult).click(function() {
				var url= $j(this).attr("href");
				// alert('['+$j.six.facetedSearch.getQueryParam(url,'facet')+']');
				if (!$j.six.facetedSearch.getQueryParam(url,'facet')) {
					res= url.match(/\/setfacet\/([^\/]*)\/([^\/]*)\/([^\/]*)\/([^\/]*)/);
					// alert(url+":"+" 1:"+decodeUrlParam(res[1])+" 2:"+decodeUrlParam(res[2])+" 3:"+decodeUrlParam(res[3])+" 4:"+decodeUrlParam(res[4]));
					if (res && res[2]) {
						sml.trigger('sml_facetedsearch_facet', {
							 "facet": decodeUrlParam(res[1]), "key": decodeUrlParam(res[2]), "name": decodeUrlParam(res[3]), "multimode": decodeUrlParam(res[4])
							 ,"togglemulti": false
						 });
						return false;
					}
				}
				else {
					sml.trigger('sml_facetedsearch_facet', {
						 "facet": $j.six.facetedSearch.getQueryParam(url,'facet')
						,"key": $j.six.facetedSearch.getQueryParam(url,'key')
						,"name": $j.six.facetedSearch.getQueryParam(url,'name')
						,"multimode": $j.six.facetedSearch.getQueryParam(url,'multi')
						,"togglemulti": false
					 });
					return false;
				}
			});
			$j("a.facetremove",jqResult).click(function() {
				var url= $j(this).attr("href");
				if (!$j.six.facetedSearch.getQueryParam(url,'facet')) {
					res= url.match(/\/removefacet\/([^\/]*)\/([^\/]*)/);
					// alert(url+":"+" 1:"+decodeUrlParam(res[1])+" 2:"+decodeUrlParam(res[2]));
					if (res && res[2]) {
						sml.trigger('sml_facetedsearch_facet', {
							 "facet": decodeUrlParam(res[1]), "key": decodeUrlParam(res[2])
							 ,"togglemulti": false
						 });
						return false;
					}
				}
				else {
					sml.trigger('sml_facetedsearch_facet', {
						 "facet": $j.six.facetedSearch.getQueryParam(url,'facet')
						,"key": $j.six.facetedSearch.getQueryParam(url,'remove')
						,"togglemulti": false
					});
					return false;
				}
			});
			$j("a.more,a.less",jqResult).click(function(){
				var url= $j(this).attr("href");
				sml.set("maxrows", $j.six.facetedSearch.getQueryParam(url,'maxrows'));
				ajax(ready);
				return false;
			});

		}

		function initToggle() {
			$j(".smlboxbtns a.toggle_and, .smlboxbtns a.toggle_or, .smlboxbtns a.toggle_andor",jqSmlBox).each(function(){
				var jq = $j(this);
				var url = jq.attr("href");

				var mode = url.match(/[\?\&]mode=([^\&]*)/i); if (mode) mode= unescape(mode[1]);
				var invLnk = $j("a.invert_false, a.invert_true", jq.parent());
				var canInvert = (invLnk.length != 0);
				invLnk.remove();

				this.dropdown=$j.six.popups.getMultiTogglePopup(sml.get("facet"), sml, mode, canInvert, function() {ajax(ready)});
				jq.after(this.dropdown);
			});

			$j(".smlboxbtns a.invert_false, .smlboxbtns a.invert_true", jqSmlBox).each(function(){
				var jq = $j(this);
				jq.text("&#160;");
				jq.addClass("toggle_current_single");

				this.dropdown=$j.six.popups.getMultiTogglePopup(sml.get("facet"), sml, "single", true, function() {ajax(ready)});
				jq.after(this.dropdown);
			});

			$j(".smlboxbtns a.toggle_and, .smlboxbtns a.toggle_or, .smlboxbtns a.toggle_andor, .smlboxbtns a.toggle_current_single",jqSmlBox).click(function() {
				var jq = $j(this);
				var url = jq.attr("href");

				var dropdown = this.dropdown;
				$j("li",dropdown).removeClass("disabled");

				var oFilters = $j.six.facetedSearch.getFilters(sml.get("filters"));

				if (oFilters.filters[sml.get("facet")] && oFilters.filters[sml.get("facet")].inv)
					$j("li.NOT",dropdown).addClass("disabled");
				else
					$j("li." + sml.get("multiselect").toUpperCase(),dropdown).addClass("disabled");

				dropdown.animate({height:'show',opacity:'show'},"fast");
				dropdown.click(function(){$j(this).slideUp();});

				$j(document).one("mousedown", function(e) {
					if($j(e.target).parents(".multimodepopup, a.tog_active").length==0)
						dropdown.slideUp("fast");
				});

				return false;
			});
		}

		function ready(){
			jqResult.html(sml.get('data'));

			if (!sml.get('data')) jqSmlBox.addClass('facet-hide'); else jqSmlBox.removeClass('facet-hide');

			// update multiselect property from filters. Others?
			var oFilters = $j.six.facetedSearch.getFilters(sml.get("filters"));
			if (oFilters.filters[sml.get("facet")] && oFilters.filters[sml.get("facet")].multi)
				sml.set("multiselect", oFilters.filters[sml.get("facet")].multi);

			enrich();
		}

		function enrich() {
			enrichLinks();
			enrichMultiSelect();
			var tbl= $j.six.facetedSearch.formatQueryInfo(sml.get('queryinfo'));
			jqInfoDisplay.html(tbl);
		}

		$j.scf.smartlet.bind('sml_facetedsearch_newSearch', function(ev) {
			$j("ul.multimodepopup").slideUp("fast");

			sml.set("collapsed", (jqSmlBox.hasClass("collapsible") && jqSmlBox.hasClass("collapsed")));

			ajax(ready, ev);
		});

		$j(document).bind('sml_box_Expand', function(e){
			var div = $j(e.args.box).find(".smartlet");
			var eSml = $j.scf.smartlet.get(div);
			if (eSml && eSml.id() == sml.id()){
				sml.set("collapsed", false);
				$j(e.args.box).removeClass("collapsed").addClass("busy").find(".smartlet").hide();
				ajax(function(){
					ready();
					$j(e.args.box).removeClass("busy");
					div.animate({height:'show',opacity:'show'},"fast");
				});
				return false;
			}
		});

		$j.scf.smartlet.bind('sml_facetedsearch_display', function(ev) {
			sml.set("verbose", parseInt(ev.args.verbose));
			if (sml.get("verbose")==0) jqInfoDisplay.slideUp(); else jqInfoDisplay.slideDown();
		});

	}
});

$j.scf.behavior.add("sml_facetedsearch_Filters_Behavior", {
	autoAttach: "div.sml_facetedsearch_filters",

	attach: function(el, settings, jq){
		var sml=  $j.scf.smartlet.get(el);
		var jqSmlBox= jq.parents(".sml_facetedsearch_filters_box");	// get the box
		var jqResult= $j("div.sml_facetedsearch_filters_result",jq);
	 	var jqInfoDisplay= $j("div.sml_facetedsearch_filters_queryinfo",jq);
		enrich();

		// busy handling - temp
		var busyHandler = null;
		var inlineBusy = jq.parents(".sml_box").hasClass('fs');
		if(inlineBusy){
			busyHandler = function(mode){
				if(mode==undefined) mode = true;
				if(mode == true)
					jqSmlBox.addClass('busy');
				else
					jqSmlBox.removeClass('busy');
			};
		};

		function ajax(ready, ev){
			sml.ajax({busy: busyHandler || true, ready: ready, event: ev, abortPrevious: true});
		}

		function ready(){
			jqResult.html(sml.get('data'));
			if (!sml.get('data')) jqSmlBox.addClass('facet-hide'); else jqSmlBox.removeClass('facet-hide');
			enrich();
		}

		function enrich() {
			enrichFilters();
			var tbl= $j.six.facetedSearch.formatQueryInfo(sml.get('queryinfo'));
			jqInfoDisplay.html(tbl);
		}

		$j.scf.smartlet.bind('sml_facetedsearch_newSearch', function(ev) {
			ajax(ready, ev);
		});

		$j.scf.smartlet.bind('sml_facetedsearch_display', function(ev) {
			sml.set("verbose", parseInt(ev.args.verbose));
			if (sml.get("verbose")==0) jqInfoDisplay.slideUp(); else jqInfoDisplay.slideDown();
		});

		function decodeUrlParam(p) {
			if (!p) return p;
			
			return unescape(p.replace(/\$/g, "%"));
		}

		function enrichFilters() {
			// enrich filter list

			$j(".sml_facetedsearch_filters_fltlist a,.sml_facetedsearch_filters_result .smlboxbtns a",jqSmlBox).click(function() {
				var url= $j(this).attr("href");
				var flt= $j.six.facetedSearch.getQueryParam(url,'filter');
				var remove=  $j.six.facetedSearch.getQueryParam(url,'remove');

				alert('hit me!');

				if (!flt) {	// urlparameters used?
					res= url.match(/\/removefilter\/([^\/]*)\/([^\/]*)/);
					// alert(url+":"+" 1:"+decodeUrlParam(res[1])+" 2:"+decodeUrlParam(res[2]));
					if (res && res[2]) {
						flt= decodeUrlParam(res[1]);
						remove= decodeUrlParam(res[2]);
					}
				}

				if (remove) {
					sml.trigger('sml_facetedsearch_filters', {
						"removeFilter": flt
					});
				}
				return false;
			});
		}
	}
});

$j.scf.behavior.add("sml_facetedsearch_Persist_Behavior", {
	autoAttach: "div.sml_facetedsearch_persist",

	attach: function(el, settings, jq){
		var sml=  $j.scf.smartlet.get(el);
		var jqSmlBox= jq.parents(".sml_facetedsearch_persist_box");	// get the box
		var jqInfoDisplay= $j("div.sml_facetedsearch_queryinfo",jq);

		enrich();

		function enableLoad(on){
			var loadButton = $j("button[name='" + sml.id("load") + "']");
			if (on) {
				loadButton.removeAttr("disabled");
			} else {
				loadButton.attr("disabled","disabled");
			}
		}

		function readySaving() {
			var result = $j(sml.get("data"));

			$j("#" + sml.id('loadname'),jq).replaceWith(result);
			$j("#" + sml.id('loadname'),jq).hide();
			$j("input[name='"+sml.id('savename')+"']",jq).val("");

			enableLoad($j("#" + sml.id('loadname') + " li a",jq).length != 0);

			var popup = $j("ul.loadsavepopup");
			switch(sml.get("action")) {
				case "save":
					$j("button[name='"+sml.id('save')+"']",jq).click();
					popup = $j("ul.loadsavepopup");	// reset

					var newKey = sml.get("persistkey");
					$j("li.sel span", popup).each(function(){
						var slot = $j(this).parent();
						if ($j(this).text() == newKey) {
							slot.addClass("highlightnew");
						}
					});

					popup.delay(500).slideUp("fast",function(){
						popup.remove();
					});
					break;
				case "load":
					popup.slideUp("fast",function(){
						popup.remove();
					});
					break;
				case "delete":
					var id = parseInt(sml.get("persistkey"));
					if (id != NaN) {
						popup.children("li.persist" + id).slideUp(function(){
							$j("button[name='"+sml.id('save')+"']",jq).click();
						});
					}
					break;
			}

			jqInfoDisplay.html($j.six.facetedSearch.formatQueryInfo(sml.get('queryinfo')));
		}

		function enrich() {
			var saveButton = $j("button[name='"+sml.id('save')+"']",jq);
			var saveBox = $j("input[name='"+sml.id('savename')+"']",jq);
			var loadBox = $j("#" + sml.id('loadname'),jq);

			$j("form", jq).submit(function(){
				if ($j.six.facetedSearch.getSmartletOption(sml.get('options'),'allowemptysearch',0) == 0
						&& (sml.get("searchterm") == "" || sml.get("searchterm") == null)) {

					alert($j.six.localization.getString(sml.lc,"IXS_SAVE_EMPTY"));
					saveBox.val("");
					var popup = $j("ul.loadsavepopup",jq);
					popup.slideUp("fast", function(){
						popup.remove();
					});
					return false;
				}

				if(saveBox.val().trim() != ""){
					sml.trigger('sml_facetedsearch_persist', {
						"action":"save",
						"persistkey":saveBox.val().trim()
					});
				} else {
					alert($j.six.localization.getString(sml.lc,"IXS_SAVE_NONAME"));
				}
				return false;
			});

			var loadButton = $j("<button/>");
			loadButton.attr("name",sml.id("load"));
			loadButton.val("load");
			loadButton.text($j.six.localization.getString(sml.lc,"IXS_LOAD"));
			saveButton.before(loadButton);

			enableLoad($j("#" + sml.id('loadname') + " li a",jq).length != 0);

			saveBox.hide();
			loadBox.hide();

			loadButton.click(function() {
				var slide = true;
				if (this.popup){
					var stop = this.popup.is(":visible");
					this.popup.remove();
					this.popup = null;
					slide = false;

					if (stop) return false;
				}
				$j("ul.loadsavepopup",jq).remove();
				var popup = $j.six.popups.preparePersistPopup(sml, $j("#" + sml.id('loadname'),jq),function(id,text,prop){

					sml.trigger('sml_facetedsearch_persist', {
						"action":"load",
						"persistkey":id,
						"persistproperty":prop
					});
				},false,readySaving);

				var li = $j("<li/>");
				li.text($j.six.localization.getString(sml.lc,"IXS_LOAD_EXPL") + ":");
				li.addClass("info");
				popup.prepend(li);

				this.popup=popup;

				$j(this).after(popup);

				if (slide) {
					popup.slideDown("fast",function(){
						popup.show();
					});
				} else {
					popup.show();
				}
				return false;
			});

			saveButton.click(function() {
				var slide = true;
				if (this.popup){
					var stop = this.popup.is(":visible");
					this.popup.remove();
					this.popup = null;
					slide = false;

					if (stop) return false;
				}
				$j("ul.loadsavepopup",jq).remove();
				var popup = $j.six.popups.preparePersistPopup(sml, $j("#" + sml.id('loadname'),jq), function(id,text){
					if(confirm($j.six.localization.getString(sml.lc,"IXS_CONFIRM_OVERWRITE",text))){
						saveBox.val(text);
						$j("form",jq).submit();
					}
				}, true, readySaving);

				var li;

				if (popup.children("li").length > 10) {
					li = $j("<li/>");
					li.text($j.six.localization.getString(sml.lc,"IXS_SAVE_FULL"));
					li.addClass("info");
					popup.prepend(li);

				} else {
					li = $j("<li/>");
					li.append(saveBox.show());
					saveBox.keypress(function(e){
						if((e.keyCode && e.keyCode == 13)||(e.which && e.which == 13)){
							$j("form",jq).submit();
							return false;
						}
					});

					var bt = $j("<button type=\"submit\" />");
					bt.text($j.six.localization.getString(sml.lc,"IXS_OK"));

					popup.children("li.buttons").prepend(bt);
					popup.prepend(li);

					li = $j("<li/>");
					li.text($j.six.localization.getString(sml.lc,"IXS_SAVE_INFO"));
					li.addClass("info");
					popup.prepend(li);
				}

				this.popup=popup;

				$j(this).after(popup);

				if (slide) {
					popup.slideDown("fast",function(){
						popup.show();
						saveBox.focus();
					});
				} else {
					popup.show();
					saveBox.focus();
				}
				return false;
			});

			$j.scf.smartlet.bind('sml_facetedsearch_persistQuery', function(ev) {
				if (ev.args.action == "save") {
					sml.set("action", ev.args.action);
					sml.set("persistkey", ev.args.persistkey);
					sml.set("data", ev.args.savedata);

					sml.ajax({ready:readySaving, busy:true});
				} else {
					var popup = $j("ul.loadsavepopup");
					popup.slideUp("fast",function(){
						popup.remove();
					});
				}
			});

			$j.scf.smartlet.bind('sml_facetedsearch_newSearch', function(ev) {
				sml.set("searchterm",ev.args.searchterm);
			});
		}
	}
});
