path = location.pathname.split("/");
pathname = "/" + path[1] + "/";

$(document).ready(function() {
	
	 enableBrowseOpen();
	 enableBrowseAjaxLinks();
	 autoComplete();
     smartSearch();
});

///////////////////////////////////////////////////////////////////
// BROWSE STUFF

// OPENING AND CLOSING THE BROWSE BOX:

function enableBrowseOpen()
{
	$("#browse a").unbind('click', closeBrowseBox);
	$("#browse a").live ('click' , openBrowseBox);
	$("#browse").removeClass("active");
}

function enableBrowseClose()
{
	$("#browse a").unbind('click', openBrowseBox);
	$("#browse a").live('click' , closeBrowseBox);
	$("#browse").addClass("active");
}

function openBrowseBox(e)
{
	
	if($("#browser").length == 0)
	{
		$("div#header").append(
			"<div id='browser' class='browser'><span class='loading'>Loading</span></div>");
		loadBrowseBoxFromLink(clickedThing(e, "a"));
	}
	else
	{
		$("#browser").show();
	}
	
	enableBrowseClose();
	resetCatListScrollTop();
	return false;
}

function closeBrowseBox()
{
    $("#browser").hide();
	enableBrowseOpen();
	return false;
}

// WITHIN THE BROWSE BOX:

// position of category list scroll box:
var catListScrollTop = 0;

function resetCatListScrollTop()
{
	$("#browser #categories ul").scrollTop(catListScrollTop);
}

function enableBrowseAjaxLinks()
{
	$("#browser .ajax").live('click' , browseLinkClicked );
	$("#browser #close a").live('click', closeBrowseBox );
}

function loadBrowseBoxFromLink(target)
{
	$("#browser").load(	encodeURI($(target).attr("href")) + '?ajax=true' , function() {
			//enableBrowseAjaxLinks();
			resetCatListScrollTop();
		});	

	return false;
}

function browseLinkClicked(e)
{
	var target = clickedThing(e, "a");
	//alert("Browse link clicked");
	catListScrollTop = $("#browser #categories ul").scrollTop();
	loadBrowseBoxFromLink(target);
	return false;
}

var welcomeBrowse = function(e)
{
    openBrowseBox(e);
    browseLinkClicked(e);
    return false;
};



///////////////////////////////////////////////////////////////////
// GENERAL-PURPOSE STUFF

function clickedThing(e, type) {
	var el = $(e.target);
	if (!el.is(type)) {
		el = el.parents(type).slice(0, 1);
	}

	return el;
}

function getQueryParameter( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

///////////////////////////////////////////////////////////////////
//AUTO COMPLETE
function autoComplete(){


var url = pathname + "rest/modules/search/atoz/0?ajax=true";
$("input#searchTerms").autocomplete(url, {
	    dataType: "jsonp",
	 	width: 320,
       scroll: true,
       scrollHeight: 300,
       ajax:true,
       parse: function(data) {
               var array = new Array();
               $(data).each(function(index) {
               	array[array.length] = { data:  data[index].id + '_' + data[index].moduleTitle + '_' + data[index].moduleSeoTitle  , value: data[index].moduleTitle, result: data[index].moduleTitle};
               });
               
               return array;
       },

       formatItem: function(row) {                     
               var modTitle = row.split('_')[1];
               if(modTitle.length > 100){
	               if(modTitle.indexOf('-') > 0){
	            	   modTitle = modTitle.split('-')[0]+ '...';
	               }
               }
               return modTitle;
       },
       extraParams: {
	       q: '',
	       limit: '',      	            
	       maxRows: 50,
	       name_startsWith: function () { return $("input#searchTerms").val();}
       }
   }).result(function(event, item) {
	   var splitItem = item.split('_');
	   var moduleId = item.split('_')[0];
	   var seoTitle = item.split('_')[2];
	   	location.href = pathname + 'module-intro/' + seoTitle + '.html?moduleId=' + moduleId;
   });
}

function smartSearch(){
	$('input#searchTerms').live('focus',function(){
		$(this).val(''); 
	});
	$('input#searchTerms').live('blur',function(){
		if( jQuery.trim($(this).val()) == ''){	
			$(this).val('Search BMJ Learning'); 
		}
	});
	
}

function clearSearch(myForm) {if (myForm.defaultValue==myForm.value) myForm.value = "";}

function showSearch(myForm) {if (myForm.value=="") myForm.value = myForm.defaultValue;}


