var currentLoadedRecordId = 0;
var currentQueryHolder = "";
var currentSelection = "";

function getIdFromCoolUrl(url) {    
    var hrefparts = url.split("/");
    var id = hrefparts[hrefparts.length-1];
    if (parseInt(id, 10) > 0) {
        return id;
    } else {
        return 0;
    }
}

function expandsearch(selection) {
    $("#loaderimage").css("display", "block");

    var query = $("#currentquery").text();
    var sort = $("#currentsort").text();
    
    if (query !== '') {
        $.get("/catalog/search", {
            q: query,
            sort: sort,
            selection: selection,
            view: "hitlistContent"
        }, function(data) {
            $("#searchmetadata").remove();
            $("#navigation").remove();
            // var searchmetadata = $(data).filter("#searchmetadata").html();
            $("#mainSearchResults").append(data);
            $("li.orderByList:last").remove(); // Remove sortlinks in the
												// middle of the list
            $("#navigation").hide();
            $("#loaderimage").fadeOut("slow");
            ajaxifyHitlistLinks();
        });
    }
}

function unique_requestid() {
    var timestamp = Number(new Date()).toString();
    var random = Math.random() * (Math.random() * 100000 * Math.random() );
    var unique = new String();
    unique = timestamp + random;
    return unique;
}

function loadRecord(id) {
    if (id !== currentLoadedRecordId) {
        $("#mainArticleContent").html("<br/><p class=\"loading\">Var god v&auml;nta... Laddar post.</p><img class=\"loading\" src=\"/img/ajax-loader.gif\" alt=\"Loading...\"/><br/>");
        // This is a IE-hack. Without the random part ie will use cached record.
        $("#mainArticleContent").load("/catalog/content/id/"+id + "?random=" + unique_requestid(), function() {
            initrecordpage();
            currentLoadedRecordId = id;
            $("link[rel='alternate']").attr("href", "/catalog/id/"+id+".rdf");
        });
    }
}

function clearRecord() {
    $("#mainArticleContent").html("");
}

function checkScroll() {
	
    var divFrame = document.getElementById('mainSearchResults');    
    if((divFrame.scrollTop + divFrame.clientHeight) == divFrame.scrollHeight)
    {    	
        var selection = $("#next_sel").text();            
        if(selection!=="" && selection && selection!==currentSelection){
        	currentSelection=selection;
            expandsearch(selection);
        }
    }    
}

function getNextDocumentId(currId) {
    
    if (currId == 0) {        
        $(".recordLink:first").parent().addClass("active");
    }
    else{
        if ($(".listItem.active").next().attr("class")==undefined) {                        
            
            $(".listItem.active").parent().next().find(".listItem:first").addClass("active");
            $(".listItem.active:first").removeClass("active");          
        }
        else{            
            $(".listItem.active").next().addClass("active");
            $(".listItem.active:first").removeClass("active");
        }
    }
    $("div#mainSearchResults").scrollTo($(".listItem.active"),100);
}

function getPrevDocumentId(currId) {
    var itemid =0;
    if (currId == 0) {
        itemid = getIdFromCoolUrl($(".recordLink:last").attr("href"));
        $(".listItem:last").addClass("active");
    } else {
        if ($(".listItem.active").prev().attr("class")==undefined) {
            itemid = getIdFromCoolUrl($(".listItem.active").parent().prev().find("a").attr("href"));
            $(".listItem.active").parent().prev().find(".listItem:last").addClass("active");
            $(".listItem.active:last").removeClass("active");
        }
        else{
            itemid = getIdFromCoolUrl($(".listItem.active").prev().find("a").attr("href"));
            if (itemid != 0) {
                $(".listItem.active").prev(".listItem:not(.bibspell)").addClass("active");
                $(".listItem.active:last").removeClass("active");
            }
        }
    }
    $("div#mainSearchResults").scrollTo($(".listItem.active"),100);
}

function loadPostByShortCut(){
    var currentPost = $(".listItem.active");
    if(currentPost.attr("class")!=undefined){
        var id = getIdFromCoolUrl(currentPost.find("a").attr("href"));
        if(id!=0){
            loadRecord(id);
        }
    }
}

function clearTypesFromQuery(query) {
        
    var querywords = query.split(" ");
    var newquery = "";
    for (var i = 0; i < querywords.length; i++) {
        if (!querywords[i].match("^(typ|type):")) {
            newquery += querywords[i] + " ";
        }
    }
    newquery = newquery.replace(/^\s+|\s+$/g, '') ;
    return newquery;
}

function performTimelineQuery(year) {	
    var querywords = $("#txtSearchQuery").attr("value").split(" ");
    var newquery = "";
    for (var i = 0; i < querywords.length; i++) {
        if (!querywords[i].match("^(år|year):")) {
            newquery += querywords[i] + " ";
        }
    }
    newquery += year;
    newquery = newquery.replace(/^\s+|\s+$/g, '') ;
    $("#txtSearchQuery").attr("value", newquery);
    $("form").submit();
}

function checkSpelling(query) {
	$.getJSON("http://api.libris.kb.se/bibspell/spell?query="+encodeURI(query)+"&key=E65F6711410E99F83E5F92DBE5702645&format=json&callback=?",
			function(data) {				
				if (data.suggestion) {
					var newterms = "";
					var newquery = "";
					//alert("Got suggestion: " + data.suggestion.terms.length + " words.");
					for (var i = 0; i < data.suggestion.terms.length; i++) {
						if (i > 0) {
							newterms += " ";
							newquery += " ";
						}
						if (data.suggestion.terms[i].changed) {
							newterms += "<i>"+data.suggestion.terms[i].value+"</i>";							
						} else {
							newterms += data.suggestion.terms[i].value;							
						}
						newquery += data.suggestion.terms[i].value;
					}
					
		            var ul = $(".listItem:first").parent();
		            ul.prepend("<li class=\"bibspell first listItem\"><a href=\"/catalog/search?q="+encodeURI(newquery)+"\">Menade du <span class=\"headline\">"+newterms+"</span></a></li>");
		            $(".bibspell").slideDown(500);
				}
			});
	
}

function checkLibris(query) {
	$.post("/smdb/ajax/translateToLibrisQuery", { 
			query: query
	}, function(searchwords) {
		if (searchwords != '') {
			encquery = encodeURI(searchwords);
			// $.getJSON("/smdb/ajax/librisSearch?query="+encquery,
			$.getJSON("http://libris.kb.se/xsearch?query="+encquery+"&format=json&callback=?",
				function(data) {					
					if (data.xsearch.records > 0) {
						$("#librisHits").show();
						var content = "<h3>Tr&auml;ffar i Libris</h3>";
						content += "<p>Visste du att din s&ouml;kning ocks&aring; gav <a target=\"_blank\" href=\"http://libris.kb.se/formatQuery.jsp?SEARCH_ALL="+encquery+"\">"+data.xsearch.records+" tr&auml;ffar</a> i Libris?</p><br/>";
						$("#librisHits").html(content);
					}
				});
		}
	});
}

function checkTimeline(query) {
	if (!query.match("year:") && !query.match("år:") && !query.match("date:") && !query.match("datum:")) {
		$("#timelineDiv").show();
		$.post("/smdb/ajax/loadStatistics", {
			query: query
		}, function(url) {
			$("#timelineLoadingImg").fadeOut();
			$("#timelineImg").attr("src", url);
		});	
	} else {
		$("#timelineDiv").hide();
	}
}

function checkTypeChart(query) {
	$.getJSON("/smdb/ajax/getHitCount?query=" + encodeURI(query), 
		function(data) {
			$("#pieChartDiv").prepend("<img alt=\"Träffördelning\" id=\"pieChart\" />");			
			$("#pieChart").attr("src", data.googleChartUrl);
			$("#pieChart").fadeIn();				
			if (data.tv > 0) {
				$("#hitcounts").append(document.createTextNode("Tv: " + data.tv));
				$("#hitcounts").append("<br/>");
			}
			if (data.radio > 0) {
				$("#hitcounts").append(document.createTextNode("Radio: " + data.radio));
				$("#hitcounts").append("<br/>");
			}
			if (data.fonogram > 0) {
				$("#hitcounts").append(document.createTextNode("Fonogram/skivor: " + data.fonogram));
				$("#hitcounts").append("<br/>");
			}
			if (data.filmvideo > 0) {
				$("#hitcounts").append(document.createTextNode("Film/Video: " + data.filmvideo));
				$("#hitcounts").append("<br/>");
			}
			if (data.multimedier > 0) {
				$("#hitcounts").append(document.createTextNode("Multimedier: " + data.multimedier));
				$("#hitcounts").append("<br/>");
			}
			if (data.text > 0) {
				$("#hitcounts").append(document.createTextNode("Text: " + data.text));
				$("#hitcounts").append("<br/>");
			}
			$("#hitCountLoadingImg").fadeOut();				
		});
}

function navSetTab(t) {	
    if(t=='') t='search';
    var tab=$('#t_' + t);
    if(tab.hasClass('dropdownImg')) {
        tab.removeClass('dropdownImg');
        tab.addClass('active_dropdownImg');
    } else {
        tab.addClass('active');
    }
}

function trackGooglePageView(uri) {
	try {
		if (isSmdbKbSe()) {
			var pageTracker = _gat._getTracker("UA-10620047-1");
			// alert("Tracking URI " + uri + " for account " +
			// pageTracker._getAccount());
			pageTracker._trackPageview(uri);
		} 
	} catch(err) {}
}

function ajaxifyHitlistLinks() {
    $("a.recordLink").each(function() {
        if(!$(this).hasClass('ajaxifiedClick')) {
            $(this).addClass('ajaxifiedClick')
            $(this).click(function(event){
                event.preventDefault();
                var id = getIdFromCoolUrl($(this).attr("href"))
                $(".listItem").removeClass("active");
                $(this).parent().addClass("active");
                trackGooglePageView($(this).attr("href"));
                loadRecord(id);
            });
        }
    });
}

function initsearchpage() {
    $("#navigation").hide();
    $("#txtSearchQuery").removeClass("disabledTextBox");
    $("#txtSearchQuery").removeAttr("readonly");
    
    $("#mainSearchResults").scroll(function() {
        checkScroll();
    });
    
    $("#typeSelect").change(function(){
        clearRecord();
        $("#loaderimage").css("display", "block");
        var q = $("#txtSearchQuery").attr("value");
        $("#txtSearchQuery").attr("value", clearTypesFromQuery(q) + " " +$(this).val());
        $("form").submit();
    });    

    $("span.searchexample").each(function() {
        $(this).addClass("searchexample");
        $(this).click(function() {
            $("#btnSearch").click()
        });
        $(this).hover(function() {
            $("#txtSearchQuery").removeClass("grayText");
            $("#txtSearchQuery").val($(this).text())
        },
        function() {
            $("#txtSearchQuery").val('')
        });
    });

    ajaxifyHitlistLinks();

   var numhits = parseInt($("#numberofhits").text(), 10);
    var shownhits = $(".listItem").size();

    
    $(document).shortkeys({
        'J': function() {
            getNextDocumentId(currentLoadedRecordId);
        },
        'K': function() {
            getPrevDocumentId(currentLoadedRecordId);
        },
        'O': function() {
            loadPostByShortCut();
        }
         
    });

    if (numhits > shownhits) {
        checkScroll();
    }
    var query = $("#txtSearchQuery").attr("value");
    if (query !== '' && numhits < 10) {
        checkSpelling(query);        
    }
    if (query != '') {
    	checkLibris(query);
    	if (numhits > 0) {
    		checkTimeline(query);
    		checkTypeChart(query);
    	} else {
    		$("#timelineDiv").hide();
    	}
    }
    

    
    $.post("/smdb/ajax/cacheQuery", function(response) {

        if (response !== "") {
            $("#txtSearchQuery").attr("value", response);
        }
    });
    


    $("a.termsLink").each(function() {
        $(this).removeAttr('target');
        $(this).attr("href","#");

        $(this).click(function(){
            var termsContents = $("#termsDiv");
            if (termsContents.hasClass('hidden')) {
                termsContents.removeClass('hidden');                
                termsContents.show();                
                ("#mainSplashContent").scrollTo(("#mainSplashContent").scrollHeight,1000);
            }
            else if (!termsContents.hasClass('visible')) {                
                termsContents.addClass('hidden');
                termsContents.hide();
            }
        });
    });
}

function cacheQuery() {	
    var queryString = $("#txtSearchQuery").attr("value");
    $.post("/smdb/ajax/cacheQuery", {
        queryString: queryString
    });
}

function logout() {
	$.post("/smdb/ajax/cartContentCount",
					function(count) {
						if (count == '0'
								|| confirm("Vill du logga ut trots att du har beställning i din kundkorg som inte har skickats till forskarservice?")) {
							window.location = "/smdb/j_spring_security_logout";
						}
					});
}

function initurls() {
	$("a[id='logout']").attr('href', 'javascript:logout()');	
}

$(document).ready(function() {	
    // Reason that if the #mainSearchResults isnt available, but
	// #mainArticleContent
    // is, init for standalone record.
    // Otherwise init for search.
    if ($("#mainSearchResults").length ==  0 && $("#mainArticleContent").length > 0) {
        initrecordpage();        
    } else if ($("#frmAdvSearch").length > 0) {
        initadvsearchpage();
    } else {
        initsearchpage();
    }
    
    // Cache query for all menu selections
    $(".dropdown").find("a").click(function(){
        cacheQuery();
    });  
    // Update url. Call javascript method if javascript is turned on.
    initurls();	
});




