/***
This is the javascript to run the Refbooks page/app on the DowMRC website in K-State Libraries. It was written by scratch by Kevin Champion kjc6688@gw.ksu.edu over the course of a year.
Please excuse the code messiness, cleanup is in the works. If you would like to use all or part of this, please let me know.
***/

var Refbooks = new Object();

Refbooks.headingdiv = document.getElementById('Heading');
Refbooks.navdivtop = document.getElementById('NavigationTop');
Refbooks.navdivbot = document.getElementById('NavigationBottom');
Refbooks.booksdiv = document.getElementById('Books');
Refbooks.tagsdiv = document.getElementById('Tags');
Refbooks.popbooks = document.getElementById('popbooks');
Refbooks.disptagall = new Object();
Refbooks.disptagmid = new Object();
Refbooks.disptagcur = new Object();
Refbooks.displayTagsToggle = "cloud";
Refbooks.disp = '';
Refbooks.crumbs = '';
Refbooks.covercounter = 0;
Refbooks.disparray= [];
Refbooks.tagselect=[];
Refbooks.calls=[];
Refbooks.toggletagset="loclib";
Refbooks.labelortag = 'Labels';
Refbooks.frumcrumby=0;
Refbooks.openformsonce = 0;
var faceboxCloneToggle = 0;
Refbooks.faceboxcopy = '';
Refbooks.stopcovers = 0;
Refbooks.loadcounter = 0;
Refbooks.currentSort = '';
Refbooks.wholefeedSort = '';
Refbooks.arrowright = "http://www.lib.k-state.edu/depts/dowmrc/images/arrowright_purple.gif";
Refbooks.arrowleft = "http://www.lib.k-state.edu/depts/dowmrc/images/arrowleft_purple.gif";

Refbooks.InitLoad = function(x) {
	if (x == "loading"){
		$(document).ready(function(){
			$("#loadinggif").html('<img src="http://www.lib.k-state.edu/depts/dowmrc/images/ajax-loader-big.gif" />');
			window.setInterval(function () { Refbooks.InitLoad("loaded") }, 10000);
		});
	} else if (x == "loaded"){
		$(document).ready(function(){
			$("#loadinggif").html('');
			Refbooks.loadcounter = 0;
		});
	} else {
		Refbooks.loadcounter++;
		//alert(Refbooks.loadcounter + ' - ' + Refbooks.isbn.length);
		if (Refbooks.loadcounter == Refbooks.isbn.length){
			$(document).ready(function(){
				$("#loadinggif").html('');
				Refbooks.loadcounter = 0;
			});
		}
	}
}

String.prototype.toTitleCase = function() { //helper prototype function to transform beginnings of words to upper case
	var str = this.toLowerCase(),
	newStr = '';
	for ( var i = 0, l = str.length; i < l; i++ ){
		newStr += ( i == 0 || str.charAt( i - 1 ) == ' ' || str.charAt( i - 1 ) == '/')?
		str.charAt( i ).toUpperCase():
		str.charAt( i );
	}
	return newStr;
}

// Basic DOM shortcut functions
	function getEl(x){return document.getElementById(x)}
	function ctn(x){ return document.createTextNode(x) }
	function cel(x){ return document.createElement(x) }
	function addEvent(obj,type,fn){
		if (obj.addEventListener){ obj.addEventListener(type,fn,false)}
		else if (obj.attachEvent){
			obj["e"+type+fn] = fn;
			obj.attachEvent("on"+type,function(){obj["e"+type+fn]();});
		}
	}

// JSON ScriptBuilder Function and Prototype, from Jason Levitt of Yahoo!
// code found here: http://devx.com/webdev/Article/30860/1954
	function JSONscriptRequest(fullUrl) {
	  this.fullUrl = fullUrl;
	  this.noCacheIE = '&noCacheIE=' + (new Date()).getTime();
	  this.headLoc = document.getElementsByTagName("head").item(0);
	  this.scriptId = 'azScriptId' + JSONscriptRequest.scriptCounter++;
	}
	JSONscriptRequest.scriptCounter = 1;
	JSONscriptRequest.prototype.buildScriptTag = function () {
	  this.scriptObj = document.createElement("script");
	  this.scriptObj.setAttribute("type", "text/javascript");
	  this.scriptObj.setAttribute("src", this.fullUrl);
	  this.scriptObj.setAttribute("id", this.scriptId);
	}
	JSONscriptRequest.prototype.removeScriptTag = function () {
	  this.headLoc.removeChild(this.scriptObj);
	}
	JSONscriptRequest.prototype.addScriptTag = function () {
	  this.headLoc.appendChild(this.scriptObj);
	}

Refbooks.sabt = -1;
Refbooks.sabc = -1;
Refbooks.Sort = function (by,what,what_is_what){
	function sortByRandom(){
		return (Math.round(Math.random())-0.5);
	}	
	function sortByTitle(a,b){
		var x = a.Title;
    	var y = b.Title;
		if (Refbooks.sabt == 1){
    		return ((x < y) ? -1 : ((x > y) ? 1 : 0));
		} else {
			return ((y < x) ? -1 : ((y > x) ? 1 : 0));
		}
	}
	function sortByCall(a,b){
		var one = a.Call_Number.replace(/\s/g,""); //replaces whitespace caused by inconsistent db entries
 		var two = b.Call_Number.replace(/\s/g,"");//replaces whitespace caused by inconsistent db entries
		var x = one.substring(0,one.search(/\d+/)); //extracts first letter characters
		var xrem = one.replace(one.substring(0,one.search(/\d+/)),"");
    	var y = two.substring(0,two.search(/\d+/)); //extracts first letter characters
		var yrem = two.replace(two.substring(0,two.search(/\d+/)),"");
		if (x == y){ 
			if (one.substring(one.indexOf(".")+1,(one.indexOf(".")+2)).search(/\d+/) == 0){ //tests to see if the first character after the first decimal is letter or number
				x = Number(one.substring(one.search(/\d+/),one.indexOf(".")+(one.substr(one.indexOf(".")+1).search(/\./)+1))); //extracts number including decimal point
				xrem = xrem.replace(one.substring(one.search(/\d+/),one.indexOf(".")+(one.substr(one.indexOf(".")+1).search(/\./)+1)),"").replace(/\./g,"");
			} else {
				x = Number(one.substring(one.search(/\d+/),one.indexOf("."))); //extracts just the number
				xrem = xrem.replace(one.substring(one.search(/\d+/),one.indexOf("."))+".","");
			}
			if (two.substring(two.indexOf(".")+1,(two.indexOf(".")+2)).search(/\d+/) == 0){ //tests to see if the first character after the first decimal is letter or number
				y = Number(two.substring(two.search(/\d+/),two.indexOf(".")+(two.substr(two.indexOf(".")+1).search(/\./)+1))); //extracts number including decimal point
				yrem = yrem.replace(two.substring(two.search(/\d+/),two.indexOf(".")+(two.substr(two.indexOf(".")+1).search(/\./)+1)),"").replace(/\./g,"");
			} else {
    			y = Number(two.substring(two.search(/\d+/),two.indexOf("."))); //extracts just the number
				yrem = yrem.replace(two.substring(two.search(/\d+/),two.indexOf("."))+".","");
			}
			if (x == y){
				if (xrem.search(/[a-zA-Z][0-9][0-9]/) == 0){
					x = xrem.substring(0,3);
					xrem = xrem.replace(x,"");
				} else if (xrem.search(/[a-zA-Z][0-9][0-9][0-9]/) == 0){
					x = xrem.substring(0,4);
					xrem = xrem.replace(x,"");
				} else {
					x = xrem.substring(0,2);
					xrem = xrem.replace(x,"");
				}
				if (yrem.search(/[a-zA-Z][0-9][0-9]/) == 0){
					y = yrem.substring(0,3);
					yrem = yrem.replace(y,"");
				} else if (yrem.search(/[a-zA-Z][0-9][0-9][0-9]/) == 0){
					y = yrem.substring(0,4);
					yrem = yrem.replace(y,"");
				} else {
					y = yrem.substring(0,2);
					yrem = yrem.replace(y,"");
				}
				if (x == y) {
					x = xrem;
					y = yrem;
				}
			}
		} 
		if (Refbooks.sabc == 1){
			return ((x < y) ? -1 : ((x > y) ? 1 : 0));
		} else {
			return ((y < x) ? -1 : ((y > x) ? 1 : 0));
		}		
	}
	if (by == "sortByRandom"){
		if (what_is_what == "wholefeed"){ Refbooks.wholefeedSort = 'random'; }
		if (what_is_what == "filteredfeed"){ Refbooks.currentSort = 'random'; }
		return what.sort(sortByRandom);
	}
	if (by == "sortByTitle"){
		if (Refbooks.sabt == 1){	Refbooks.sabt = -1;	} else {	Refbooks.sabt = 1;	}
		if (what_is_what == "wholefeed"){ Refbooks.wholefeedSort = 'title'; }
		if (what_is_what == "filteredfeed"){ Refbooks.currentSort = 'title'; }
		return what.sort(sortByTitle);
	}
	if (by == "sortByCall"){
		if (Refbooks.sabc == 1){	Refbooks.sabc = -1;	} else {	Refbooks.sabc = 1;	}
		if (what_is_what == "wholefeed"){ Refbooks.wholefeedSort = 'call number'; }
		if (what_is_what == "filteredfeed"){ Refbooks.currentSort = 'call number'; }
		return what.sort(sortByCall);
	}
}
Refbooks.SortLabel = function() {
	hash = hashListener.getHash();
	hash = hash.substring(1,(hash.length-1)).split('/');
	if (isNaN(hash[0])){
		if (Refbooks.currentSort == "" || Refbooks.currentSort == "undefined"){ Refbooks.currentSort = Refbooks.wholefeedSort;}
		var sortlabel = Refbooks.currentSort;
		//alert("currentSort - "+sortlabel);
	} else {
		var sortlabel = Refbooks.wholefeedSort;
		Refbooks.currentSort = '';
		//alert("wholefeedSort - "+sortlabel);
	}
	$(document).ready(function(){
		if (sortlabel == "title"){
			$("#sortByTitle").addClass("bold");
			$("#sortByCall").removeClass("bold");
			$("#sortByRandom").removeClass("bold");
		}
		if (sortlabel == "call number"){
			$("#sortByCall").addClass("bold");
			$("#sortByTitle").removeClass("bold");
			$("#sortByRandom").removeClass("bold");
		}
		if (sortlabel == "random"){
			$("#sortByRandom").addClass("bold");
			$("#sortByTitle").removeClass("bold");
			$("#sortByCall").removeClass("bold");
		}
	});
}

Refbooks.zohoData = fullfeed;

Refbooks.parseZohoData = function (){
	Refbooks.wholefeed= [];
	Refbooks.tags= [];
		Refbooks.tags.user= [];
		Refbooks.tags.loclib= [];
		Refbooks.tags.loclibuser= [];
	function encodeTag(x){
		return x.replace(/^\s+|\s+$/g,"").replace(/ and /g,"-").replace(/ /g,"-").replace(/\//g,"-"); //remove whitespace at beginning and end of tag, replace " and " with "-"
	}
	for (var j=0; j < Refbooks.zohoData.length; j++){
		var wholearray=Refbooks.zohoData[j];
		//wholearray.Tags = wholearray.Tags.toTitleCase(); //transform the beginnings of words to upper case
		if (zohoLabelsSingleLineOrMultiSelect == "single"){ //defined in html file
			wholearray.Tags = wholearray.Tags.replace(";",","); //replace ";" with "," for proper delimiting
			wholearray.Tags = wholearray.Tags.toLowerCase();
			wholearray.Tags = wholearray.Tags.split(","); //split string into array of tags
		}
		var tagholder = [];
		for (var i=0; i < wholearray.Tags.length; i++){
			if (wholearray.Tags[i] != " " && wholearray.Tags[i] != ""){
				tagholder.push(encodeTag(wholearray.Tags[i])); //remove whitespace at beginning and end of tag, replace " and " with "-"
			}
		}
		if (wholearray.LoC_Tags != ""){
			var loctags = wholearray.LoC_Tags.split(","); //split loc tags processed on server side
			for (var i=0; i < loctags.length; i++){	//test for duplicate tags before integrating loctags with tags
				var tagtester = 0;
				loctags[i] = loctags[i].replace(/ /g,"-"); // replaces whitespace with "-"
				for (var h=0; h < tagholder.length; h++){
					if (loctags[i] == tagholder[h]){
						tagtester = 1;
					}
				}
				if (tagtester == 0){
					tagholder.push(loctags[i]);
				}
			}
		}
		wholearray.Tags = tagholder;
		Refbooks.tags.push(tagholder); 
		Refbooks.wholefeed.push(Refbooks.zohoData[j]);
	}
	
	for (var j=0; j < Refbooks.wholefeed.length; j++){
		if (Refbooks.wholefeed[j].User_Tags != ""){
			var comma = Refbooks.wholefeed[j].User_Tags.lastIndexOf(",");
			if (comma != -1){
				Refbooks.wholefeed[j].User_Tags = Refbooks.wholefeed[j].User_Tags.replace(";",",").toLowerCase().split(',');
				for (var i=0; i < Refbooks.wholefeed[j].User_Tags.length; i++){
					Refbooks.wholefeed[j].User_Tags[i] = encodeTag(Refbooks.wholefeed[j].User_Tags[i]); //remove whitespace at beginning and end of tag, replace " and " with "-"
				}
				Refbooks.tags[j].user = Refbooks.wholefeed[j].User_Tags;
			} else {
				Refbooks.tags[j].user = [];
				Refbooks.tags[j].user.push(encodeTag(Refbooks.wholefeed[j].User_Tags.toLowerCase())); //remove whitespace at beginning and end of tag, replace " and " with "-"
				Refbooks.wholefeed[j].User_Tags = encodeTag(Refbooks.wholefeed[j].User_Tags.toLowerCase()); //remove whitespace at beginning and end of tag, replace " and " with "-"
			}
		} else {
			Refbooks.tags[j].user = [];	
		}
		if (Refbooks.tags[j].user == null){
			Refbooks.tags.user[j] = [];
			Refbooks.tags.loclibuser.push(Refbooks.tags[j]);
			Refbooks.wholefeed[j].All_Tags = Refbooks.wholefeed[j].Tags;
		} else {
			Refbooks.tags.user.push(Refbooks.tags[j].user);
			Refbooks.tags.loclibuser.push(Refbooks.tags[j].concat(Refbooks.tags[j].user));
			Refbooks.wholefeed[j].All_Tags = Refbooks.wholefeed[j].Tags.concat(Refbooks.wholefeed[j].User_Tags);
		}
		Refbooks.tags.loclib.push(Refbooks.tags[j]);//.concat(Refbooks.tags.loc[j]));
	}
	Refbooks.allSeries = []
	for (var i = 0; i< Refbooks.wholefeed.length; i++){
		var therealready = 0;
		for (var j = 0; j< Refbooks.allSeries.length; j++){
			if (Refbooks.wholefeed[i].Series == Refbooks.allSeries[j]){
				therealready = 1;
			}
		}
		if (therealready == 0){
			Refbooks.allSeries.push(Refbooks.wholefeed[i].Series);
		}
	}
	Refbooks.allSeries.sort();
	Refbooks.Sort("sortByCall",Refbooks.wholefeed,"wholefeed");
	$(document).ready(function(){
		Refbooks.buildAllTagCloud();
		hashListener.init();
		$.getScript("http://www.lib.k-state.edu/depts/dowmrc/jquery/jssha256.js", function(){
			$.getScript("http://www.lib.k-state.edu/depts/dowmrc/jquery/ecmanaut.base64.js", function(){
				$.getScript("http://www.lib.k-state.edu/depts/dowmrc/jquery/AWSQuerySigner.js", function(){
					hashListener.onHashLoaded();
				});
			});
		});
		//Refbooks.loadFeed();
	});
}

Refbooks.buildAllTagCloud = function (by){
	if (by == "user"){
		Refbooks.loadTagCloud(Refbooks.tags.user,"all");
	} else if (by == "loclibuser"){
		Refbooks.loadTagCloud(Refbooks.tags.loclibuser,"all");
	} else {
		Refbooks.loadTagCloud(Refbooks.tags.loclib,"all");
	}	
}

Refbooks.changeTags = function (z){
	Refbooks.toggletagset = z;
	call = Refbooks.calls[0];
	//alert(call.m + ',' +call.y + ',' +call.t + ',' + call.tsc);
	if (Refbooks.toggletagset == "user"){
		Refbooks.labelortag = 'Tags';
	} else if (Refbooks.toggletagset == "loclibuser"){
		Refbooks.labelortag = 'Labels and Tags';
		call = Refbooks.calls[(Refbooks.calls.length-1)];
	} else {
		Refbooks.labelortag = 'Labels';
	}	
	Refbooks.buildAllTagCloud(z);
	hashListener.reload();
}

Refbooks.removeDuplicates = function (x) {
	var y = [];
	<!--        Script by hscripts.com          -->
<!--        copyright of HIOX INDIA         -->
<!-- Free javascripts @ http://www.hscripts.com -->
	var array2 = x;
	for(var i = 0; i < array2.length; i++){
		var xx = true;
		var ArrayVal = array2[i];
		for(var j = i+1; j < array2.length; j++){
			if(array2[j] == ArrayVal) {
				xx = false;
			}
		}       
		if(xx == true){
			y.push(ArrayVal)
		}
	}
	   <!-- Script by hscripts.com -->
	return y;
}

Refbooks.getBlankCoverCounter = function () {
		++Refbooks.covercounter;
		if (Refbooks.covercounter > 7) {	Refbooks.covercounter = 1;	}
		return Refbooks.covercounter;
	}
	
Refbooks.CoverTriage = function(isbn,x){	
	function getAmazon(){
		if (isbn != ''){
			var amazonNoEncode = 'http://xml-us.amznxslt.com/onca/xml?AWSAccessKeyId=11GHCPB7ER90FJ31WZR2&AssociateTag=givlifmea-20&CallBack=Refbooks.amzJSONCallback&ContentType=text/javascript&IdType=ASIN&ItemId=' + isbn + '&Operation=ItemLookup&ResponseGroup=Medium,ItemAttributes,OfferFull,Reviews,Subjects&Service=AWSECommerceService&Style=http://www.lib.k-state.edu/depts/dowmrc/jquery/ajsonSingleAsin.xsl&noCacheIE=' + (new Date()).getTime();
			var strSignedQuery = AWSQS.signQuery( amazonNoEncode, 'tlUkMnaGsz8D3MgKo3e8Yvcpbq6Rd7fa65a7Ep/D' );
			var noCacheIE = strSignedQuery.substring(strSignedQuery.indexOf('&noCacheIE'), strSignedQuery.indexOf('&Timestamp'));
			strSignedQuery = strSignedQuery.replace('&Signature',noCacheIE+'&Signature');
			aObj = new JSONscriptRequest(strSignedQuery);
			aObj.buildScriptTag();
			aObj.addScriptTag();
		} else {
			getGoogle(x,isbn);
		}
	}
	function getGoogle(x, isbn){
		$.getJSON("http://books.google.com/books?jscmd=viewapi&bibkeys=ISBN:"+isbn+"&callback=?", function(json){
				var output = Refbooks.getTheCover(json,x);
				Refbooks.bookCoverOutput(output);
			});
	}
	getAmazon();
	Refbooks.amzJSONCallback = function(tmpdata){
		var athumb = '';
		var athumbpop = '';
		var adesc = '';
		var alink = '';
		var atitle = '';
		var acitation = '';
		var arating = '';
		var anumreviews = '';
		function build(thumb,thumbpop,link,desc,title,citation,reviews,averating,numreviews){
			this.thumb = thumb;
			this.thumbpop = thumbpop;
			this.link = link;
			this.desc = desc;
			this.title = title;
			this.citation = citation;
			this.reviews = reviews;
			this.averating = averating;
			this.anumreviews = numreviews;
		}
		if(!tmpdata.Item.error){
			//alert("no error");
			var tmpItem = tmpdata.Item;
			//alert(tmpItem.reviewdates[0]+' - '+tmpItem.reviewratings[0]+' - '+tmpItem.reviewscontent[0]);
			atitle = tmpItem.title;
			acitation = tmpItem.author + '. ' + tmpItem.publisher + ': ' + tmpItem.date.substring(0,4) + '. ' + tmpItem.pages + ' pages.';
			alink = tmpItem.url;
			cutstart = alink.search(/SubscriptionId/);
			cutstarttag = alink.search(/tag/);
			cutend = alink.indexOf("%26",cutstarttag);
			replacer = new RegExp (alink.substring(cutstart,cutend));
			alink = alink.replace(replacer,"");			
			athumb = tmpItem.thumburl;
			athumbpop = athumb.replace("SL75","SL175");
			var areviews = {
				dates : tmpItem.reviewdates,
				ratings : tmpItem.reviewratings,
				content : tmpItem.reviewscontent
			}
			if (tmpItem.rating == ""){ arating = "na"; } else { arating = tmpItem.rating; }
			if (tmpItem.numreviews == "" || !tmpItem.numreviews){ anumreviews = "no"; } else { anumreviews = tmpItem.numreviews; }
			if(tmpItem.desc){
			// RegEx used to strip out extraneous HTML and Entities in Description text
				tmpItem.desc = tmpItem.desc.replace(/<.*?>/gi,'');
				tmpItem.desc = tmpItem.desc.replace(/&.*?;/gi,' ');
				//if(tmpItem.desc.length>381){tmpItem.desc=tmpItem.desc.substr(0,380)+"..."}
				adesc = tmpItem.desc;
			}
			athumb = '<img src="' + athumb + '" />';
			athumbpop = '<a href="' + alink + '" target="_blank"><img src="' + athumbpop + '" title="Links to Amazon" style="width:122px; height:175px;" /></a>';
		}
		for (var i = 0; i < Refbooks.isbn.length; i++){
			if (tmpdata.Item.asin == Refbooks.isbn[i]){
				Refbooks.amazon[i] = new build(athumb,athumbpop,alink,adesc,atitle,acitation,areviews,arating,anumreviews);
				if (x=="Single"){
					getGoogle(x,Refbooks.isbn[i]);
				} else {
					getGoogle(i,Refbooks.isbn[i]);
				}
				//alert(i + ' a ' + Refbooks.amazon[i].thumb);
			}
		}
		/*
			getGoogle();
		}*/
	}
	Refbooks.getTheCover = function (booksInfo,z) {
		var gthumb = '';
		var gthumbpop = '';
		var glink = '';
		var gembed = '';
		var gprevlink = '';
		var lthumb = '';
		var lthumbpop = '';
		var x = ''
		if (z == "Single"){
			var isbn = Refbooks.isbn[0];
		} else {
			var isbn = Refbooks.isbn[z];
		}
		//alert(z + ' get');
		var gbsnameA = new Array("No information", "Book info", "Partial view", "Full view");
		var testimg = document.getElementById("testimg");
		var bthumb = '<img src="http://www.lib.k-state.edu/depts/dowmrc/images/book' + Refbooks.getBlankCoverCounter() + '.jpeg">';
		var testit = 'ISBN:'+isbn;
		if (booksInfo[testit] != undefined){
			for (i in booksInfo) {
				var book = booksInfo[i]; 
				var quality = 0;
				if(book.preview == "noview") { quality = 1; }
				if(book.preview == "partial") { quality = 2; }
				if(book.preview == "full")  { quality = 3; }
				var gisbn;
				if (book.bib_key.length == 13) {
					gisbn = book.bib_key;
				} else {
					gisbn = book.bib_key.toString().substr(5);
				}
				glink = book.info_url;
				gembed = book.embeddable;
				if (quality > 1) {
					gprevlink = book.preview_url;
				}
				/*else {
					Refbooks.gblink = 'https://catalog.lib.ksu.edu/cgi-bin/Pwebrecon.cgi?DB=local&SL=none&Search_Arg=' + isbn + '&SL=None&Search_Code=ISBL&CNT=50';
				}*/
				if (book.thumbnail_url != undefined) {
					gthumbpop = book.thumbnail_url.replace("zoom=5","zoom=1");
					gthumb = '<img src="' + book.thumbnail_url + '"/>';
					gthumbpop = '<img src="' + gthumbpop + '"/>';
				} 
			}
			
			for (var i = 0; i < Refbooks.isbn.length; i++){
				if (gisbn == Refbooks.isbn[i] || isbn == Refbooks.isbn[i]){
					x = i;
				}
			}
		} else {
			if (z == "Single"){
				x = 0;
			} else {
				x=z;
			}
			
		}
			var imgid = 'img' + x;
			if (gthumb == ''){
				lthumb = '<img id="' + imgid + '" src="http://covers.librarything.com/devkey/7446d1d690412a060ea22f8cf79c95e9/small/isbn/' + isbn + '">';
				lthumbpop = '<img id="' + imgid + '" src="http://covers.librarything.com/devkey/7446d1d690412a060ea22f8cf79c95e9/large/isbn/' + isbn + '">';
				$(document).ready(function(){
					testimg.innerHTML = lthumb;	
				});
				$(document).ready(function(){
					var imgwidth = document.getElementById(imgid).width;
					if (imgwidth <= 1){
						lthumb = '';
					}
					testimg.innerHTML = '';
				});
			}
			//alert(x + ' g ' +Refbooks.amazon[x].thumb);
			//alert(x+' - g' + gthumb+' - a' + athumb+' - l' + lthumb+' - b' + bthumb);
			//alert(Refbooks.amazon[x].thumb);
			var athumb = Refbooks.amazon[x].thumb;
			var cover = '';
			var popcover = '';
			if (gthumb != ''){
				//alert("gthumb "+x);
				cover = gthumb;
				popcover = gthumbpop;
			} else if (athumb != '' && athumb != undefined && athumb != '<img src=""/>' && athumb != '<img src="" />'){
				//alert("athumb "+x + ' ' + athumb);
				cover = athumb;
				popcover = Refbooks.amazon[x].thumbpop;
			} else if (lthumb != ''){
				//alert("lthumb "+x);
				cover = lthumb;
				popcover = lthumbpop;
			} else {
				//alert("bthumb "+x);
				cover = bthumb;
				if (Refbooks.covertitles[x] && Refbooks.covertitles[x].indexOf(":") != -1){
					var imposed = Refbooks.covertitles[x].substring(0,Refbooks.covertitles[x].indexOf(":"));
				} else {
					var imposed = Refbooks.covertitles[x];
				}
				popcover = bthumb.replace("book","bigbook") + '<div style="z-index:1; width: 110px; margin:-130px 0 90px 0; padding:0 4px 0 4px; color:#FFF; text-align:center;">' + imposed + '</div>';
			}
			
			var idholder = '#popbook' + x;
			var popdisp = popcover + '<br /><a href="'+HTMLfilename+'#/book/isbn='+isbn+'/">Permalink</a><br /><a href="' + Refbooks.link[x] + '" target="_blank" title="K-State Catalog Page">K-State Catalog</a>';
			if (Refbooks.ebook[x] != '' && Refbooks.ebook[x] != 'undefined' && Refbooks.ebook[x] != undefined){
				popdisp += '<br /><a href="' + Refbooks.ebook[x] + '" target="_blank" title="K-State subscribed eBook">eBook</a>';
			}
			if (glink != ''){
				popdisp += '<br /><a href="' + glink + '" target="_blank" title="Google books page">Google Books</a>';
			}
			if (Refbooks.amazon[x].link.length > 1){
				popdisp += '<br /><a href="' + Refbooks.amazon[x].link + '" target="_blank" title="View on Amazon">Amazon</a>';
			}
			if (gprevlink != ''){
				if (gembed == true){
					popdisp += '<br /><a class="dowmrc" href=javascript:Refbooks.gViewer('+x+',\''+gprevlink+'\')><img src="http://www.lib.k-state.edu/depts/dowmrc/images/gbs_preview_button1.gif"/></a>';
				} else {
					popdisp += '<br /><a class="dowmrc" href="' + gprevlink + '" target="_blank" title="Google books preview"><img src="http://www.lib.k-state.edu/depts/dowmrc/images/gbs_preview_button1.gif"/></a>';
				}
			}
			
			var output = [];
			output[0] = z;
			output[1] = '<a class="dowmrc" href="javascript:jQuery.facebox({div: \''+idholder+'\'});" rel="facebox" title="' + Refbooks.covertitles[x] + '">' + cover + '</a>';
			output[2] = popdisp;
			if (Refbooks.amazon[x].desc != undefined){
				if(Refbooks.amazon[x].desc.length > 0) {
					output[3] = '<br />' + Refbooks.amazon[x].desc+'<span id="faded-italic">(from Amazon)</span>';
				} else {
					if (Refbooks.annotation[x] != ""){
						output[3] = '<br />' + Refbooks.annotation[x];
					}
				}
			} else {
				if (Refbooks.annotation[x] != ""){
					output[3] = '<br />' + Refbooks.annotation[x];
				}
			}
			if (Refbooks.amazon[x].title != '' && Refbooks.amazon[x].title != undefined){
				output[4] =  Refbooks.amazon[x].title;
			}
			if (Refbooks.amazon[x].citation != '' && Refbooks.amazon[x].citation != undefined){
				output[5] =  '<span>Citation:</span>'+Refbooks.amazon[x].citation;
			}
			if (Refbooks.amazon[x].anumreviews != "no" && Refbooks.amazon[x].reviews != undefined){
				output[6] =  '<span style="color:#000">There are '+Refbooks.amazon[x].anumreviews+' reviews with an average rating of '+Refbooks.amazon[x].averating+' / 5</span><ul id="reviewTabs"><li><a href="#amazonReviews"><span>Amazon</span></a></li></ul><div id="reviews"><div id="amazonReviews">';
				output[6] += '<div id="AmazonReview"><span><span>Date:</span>'+Refbooks.amazon[x].reviews.dates[0]+'</span><span><span>Rating:</span>'+Refbooks.amazon[x].reviews.ratings[0]+' / 5</span><div>'+Refbooks.amazon[x].reviews.content[0]+'</div><span class="indexselect"><span class="indexnumselected">1</span></span> ';
				for (var i = 1; i < Refbooks.amazon[x].reviews.ratings.length; i++){
					output[6] += '<span class="indexunselect"><a class="indexnums" href=javascript:Refbooks.reviewNav('+(i+1)+')>' + (i+1) + '</a></span> ';
				}
				output[6] += '<a href="javascript:Refbooks.reviewNav(0,\'+\');"><img src="'+Refbooks.arrowright+'" width="30" height="20" border="0" alt=""></a></div></div></div>';
			} else {
				output[6] =  '<span style="color:#000">There are 0 reviews for this work</span>';
			}
			
			return output;
	}
	
	Refbooks.gViewer = function(x,gprevlink){
		function handleNotFound() {
			// Developer may want to hide the viewer div or present an error
			var viewerdiv = document.getElementById('gbs_preview' + x);
			var disp = '<div style="font-size:150%; text-align:center; padding-top:200px;">There was a problem loading this Google Books preview<br /><a href="javascript:jQuery.facebox({div: \'#popbook'+x+'\'});">back to description</a></div>';
			viewerdiv.innerHTML = disp;
		}
		function handleFound() {
			// Developer may want to hide the viewer div or present an error
			var viewerdiv = document.getElementById('gbs_preview' + x);
			//viewerdiv.innerHTML += '<div><br />test</div>';
		}
		var gviews = document.getElementById('gviews');
		var gviewdisp = '<div id="gbs_preview'+x+'" style="width: 800px; height: 500px; background-color: gray; display:none;">';
		gviews.innerHTML += gviewdisp;
		var viewerdiv = document.getElementById('gbs_preview' + x);
		$(document).ready(function(){
			var viewer = new google.books.DefaultViewer(viewerdiv);
			viewer.load(gprevlink,handleNotFound);
			faceboxCloneToggle = 1;
			jQuery.facebox({div:'#gbs_preview'+x});
			faceboxCloneToggle = 0;
		});
    }
	
	Refbooks.reviewNav = function(x,nav){
		if (!nav){ x--; }
		if (nav == "+"){ x++; }
		if (nav == "-"){ x--; }
		var output = '<span><span>Date:</span>'+Refbooks.amazon[0].reviews.dates[x]+'</span><span><span>Rating:</span>'+Refbooks.amazon[0].reviews.ratings[x]+' / 5</span><div>'+Refbooks.amazon[0].reviews.content[x]+'</div>';
		var numselect = '';
		var iterations = 0;
		for (var i = 0; i < Refbooks.amazon[0].reviews.ratings.length; i++){
			if (x == i){
				numselect += '<span class="indexselect"><span class="indexnumselected">'+(i+1)+'</span></span> ';
				iterations ++;
			} else if ((x-5)<1){
				numselect += '<span class="indexunselect"><a class="indexnums" href=javascript:Refbooks.reviewNav('+(i+1)+')>' + (i+1) + '</a></span> ';
				iterations ++;
			} else if (x > (Refbooks.amazon[0].reviews.ratings.length - 9) && i > (Refbooks.amazon[0].reviews.ratings.length - 9)){
				numselect += '<span class="indexunselect"><a class="indexnums" href=javascript:Refbooks.reviewNav('+(i+1)+')>' + (i+1) + '</a></span> ';
				iterations ++;
			} else if (i > (x-4) && i < (x+6)){
				numselect += '<span class="indexunselect"><a class="indexnums" href=javascript:Refbooks.reviewNav('+(i+1)+')>' + (i+1) + '</a></span> ';
				iterations ++;
			}
		 	if (iterations == 9){
				break;
			}
		}
		if (x > 0 && x < Refbooks.amazon[0].reviews.dates.length-1){
			output += '<a href="javascript:Refbooks.reviewNav('+x+',\'-\');"><img src="'+Refbooks.arrowleft+'" width="30" height="20" border="0" alt=""></a>'+numselect+'<a href="javascript:Refbooks.reviewNav('+x+',\'+\');"><img src="'+Refbooks.arrowright+'" width="30" height="20" border="0" alt=""></a>';
		} else if (x == Refbooks.amazon[0].reviews.dates.length-1){
			output += '<a href="javascript:Refbooks.reviewNav('+x+',\'-\');"><img src="'+Refbooks.arrowleft+'" width="30" height="20" border="0" alt=""></a>'+numselect;
		} else if (x == 0){
			output += numselect + '<a href="javascript:Refbooks.reviewNav('+x+',\'+\');"><img src="'+Refbooks.arrowright+'" width="30" height="20" border="0" alt=""></a>';
		}
		$(document).ready(function(){
			$('#AmazonReview').html(output);
		});
	}
}
	
Refbooks.displayTags = function (x,z) {
		if (x == "cloud") {
			if (Refbooks.disptagcur.cloud == undefined){
				Refbooks.disptagcur.cloud = '';	
			}
			if (Refbooks.disptagcur.list == undefined){
				Refbooks.disptagcur.list = '';	
			}
			if (z == "default"){	//makes it so that "cur" tag cloud disappears when "all" tag cloud appears
				Refbooks.disptagcur.cloud = '';
				Refbooks.disptagcur.list = '';
			}
			/*if (z == undefined){	//makes it so that "all" tag cloud disappears when "cur" tag cloud appears
				Refbooks.disptagall.cloud = '';
				Refbooks.disptagall.list = '';
			}*/
			var display = '<span style="float:right">view as: <a class="bold" href=javascript:Refbooks.displayTags("cloud")>cloud</a> <a href=javascript:Refbooks.displayTags("list")>list</a></span>';
			display += '<div>' + Refbooks.disptagcur.cloud + '</div><div>' + Refbooks.disptagall.cloud + '</div>';
			Refbooks.tagsdiv.innerHTML = display;
			Refbooks.displayTagsToggle = "cloud";
		}
		if (x == "list") {
			var display = '<span style="float:right">view as: <a href=javascript:Refbooks.displayTags("cloud")>cloud</a> <a class="bold" href=javascript:Refbooks.displayTags("list")>list</a></span><div style="clear: both;"/>';
			display += '<div style="float:left; width:49%; margin-top:18px;">' + Refbooks.disptagcur.list + '</div><div style="float:left; width:49%;">' + Refbooks.disptagall.list + '</div>';
			Refbooks.tagsdiv.innerHTML = display;
			Refbooks.displayTagsToggle = "list";
		}
	}
Refbooks.getDist = function (freq) {
	var frequency = freq;
	var smallest = 1;
	var largest = 0;
	for(var d=0;d<frequency.length;d++){
	   largest=Math.max(largest,frequency[d]); //find largest
	   smallest=Math.min(smallest,frequency[d]);//find smallest
	}
	var diff = largest-smallest; //difference
	var dist = diff/8; //distribution where 8 is the number of tag classes chosen to be used
	return dist;
}
Refbooks.getCloudClass = function (dist,thistag) {
	var tagclass = 1
	if (thistag < (1+dist)) {	tagclass = 1;	}
		else if (thistag < (1+(dist*2))) {	tagclass = 2;	}
		else if (thistag < (1+(dist*3))) {	tagclass = 3;	}
		else if (thistag < (1+(dist*4))) {	tagclass = 4;	}
		else if (thistag < (1+(dist*5))) {	tagclass = 5;	}
		else if (thistag < (1+(dist*6))) {	tagclass = 6;	}
		else if (thistag < (1+(dist*7))) {	tagclass = 7;	}
		else if (thistag <= (1+(dist*8))) {	tagclass = 8;	}
	return tagclass;//returns the class an individual tag should have given a distribution
}
Refbooks.loadTagCloud = function (t,x) {
	var tagsy = t;
	var tagcloudbuild = [];
	var tagcloud = [];
	var tagcloudnum = [];
	var tagcloudnumber = 0;
	var dynnum = tagsy.length;
	for(var i = 0; i < tagsy.length; i++) {
		for(var j = 0; j < tagsy[i].length; j++) {
			tagcloudbuild.push(tagsy[i][j]);
		}
	}
	tagcloud.push(tagcloudbuild[0]);
	for (var i = 0; i < tagcloudbuild.length; i++) {
		var jumper = 0;
		for (var j = 0; j < tagcloud.length; j++) {
			if (tagcloudbuild[i] == tagcloud[j]){
				jumper++;
			}
		}
		if (jumper < 1){
			tagcloud.push(tagcloudbuild[i]);
		}
	}
	//tagcloud = Refbooks.removeDuplicates(tagcloudbuild);
	tagcloud.sort();
	var disptagcloud = '<ul class="ultagclouds">';
	var disptaglist = '<ul class="ultaglists">';
	var tagselectcontroller;
	if (x=="monthcurrent"){ tagselectcontroller = null;} 
	if (x=="month"){ tagselectcontroller = 1;}
	if (x=="allcurrent"){ tagselectcontroller = 3;}
	if (x=="searchall"){ tagselectcontroller = 4;}
	if (x=="searchcurrent"){ tagselectcontroller = 5;}
	if (x=="all"){	tagselectcontroller = 2;	}
	for(var i = 0; i < tagcloud.length; i++) {
		for(var j = 0; j < tagcloudbuild.length; j++) {
			if (tagcloud[i] == tagcloudbuild[j]) {
				tagcloudnumber = tagcloudnumber + 1;
			}
		}
		tagcloudnum.push(tagcloudnumber);
		tagcloudnumber = 0;
	}		
	var dist = Refbooks.getDist(tagcloudnum);
	for(var i = 0; i < tagcloud.length; i++) {
		   var cloudclass = Refbooks.getCloudClass(dist,tagcloudnum[i]);
		   if (x == "searchcurrent" || x == "allcurrent"){
   			   disptagcloud += '<li class="litagclouds"><a href="javascript:hashListener.prepareHash(\'tag\',\'' + tagcloud[i] + '\',\'' + tagselectcontroller + '\');" class="tag' + cloudclass + '"><span style="font-size:95%; margin-right:2px;">+</span>' + tagcloud[i] + ' ' + tagcloudnum[i] + '</a> </li>';
			   disptaglist += '<li><a href="javascript:hashListener.prepareHash(\'tag\',\'' + tagcloud[i] + '\',\'' + tagselectcontroller + '\');">+ ' + tagcloud[i] + ' ' + tagcloudnum[i] + '</a> </li>';
		   } else {
			   disptagcloud += '<li class="litagclouds"><a href="javascript:hashListener.prepareHash(\'tag\',\'' + tagcloud[i] + '\',\'' + tagselectcontroller + '\');" class="tag' + cloudclass + '">' + tagcloud[i] + ' ' + tagcloudnum[i] + '</a> </li>';
			   disptaglist += '<li><a href="javascript:hashListener.prepareHash(\'tag\',\'' + tagcloud[i] + '\',\'' + tagselectcontroller + '\');">' + tagcloud[i] + ' ' + tagcloudnum[i] + '</a> </li>';
		   }
	   }
	   disptagcloud += '</ul>';
	   disptaglist += '</ul>';
	   if (x=="monthcurrent" || x=="allcurrent" || x=="searchcurrent"){
			var dispcurrent = '<b>' + Refbooks.labelortag + ' for the <span class="highlight">' + dynnum + '</span> ' + currentTagCloudTitle + '</b><br/>';
			//Refbooks.tagsdiv.innerHTML=dispcurrent.concat(disptagcloud);
			Refbooks.disptagcur.cloud = dispcurrent.concat(disptagcloud);
			Refbooks.disptagcur.list = dispcurrent.concat(disptaglist);
	   }
	   if (x=="month"){
			var dispmonth = '<br/><b>' + Refbooks.labelortag + ' for the <span class="highlight">' + dynnum + '</span> Books on Display</b><br/>';
			//tagsmonthdiv.innerHTML=dispmonth.concat(disptagcloud);
			Refbooks.disptagmid.cloud = dispmonth.concat(disptagcloud);
			Refbooks.disptagmid.list = dispmonth.concat(disptaglist);
	   }
	   if (x=="searchall"){
			var dispsearch = '<br/><b>' + Refbooks.labelortag + ' for the <span class="highlight">' + dynnum + '</span> Books found for search <span class="highlight">"' + Refbooks.query + '"</span></b><br/>';
			//tagsmonthdiv.innerHTML=dispsearch.concat(disptagcloud);
			Refbooks.disptagmid.cloud = dispsearch.concat(disptagcloud);
			Refbooks.disptagmid.list = dispsearch.concat(disptaglist);
	   }
	   if (x=="all"){
			var dispall = '<br/><b>' + Refbooks.labelortag + ' for all ' + dynnum + ' ' + tagCloudTitle +'</b><br/>';
			//tagsalldiv.innerHTML=dispall.concat(disptagcloud);
			Refbooks.disptagall.cloud = dispall.concat(disptagcloud);
			Refbooks.disptagall.list = dispall.concat(disptaglist);
		}
  }
Refbooks.fromPopbook = function(it,x,lort){
	if (lort == "label"){
		$(document).ready(function(){
			jQuery(document).trigger('close.facebox')
		});
		Refbooks.changeTags("loclibuser");
		hashListener.prepareHash("tag",it,x);
	}
	if (lort == "tag"){
		$(document).ready(function(){
			jQuery(document).trigger('close.facebox')
		});
		Refbooks.changeTags("loclibuser");
		hashListener.prepareHash("tag",it,x);
	}
	if (lort == "series"){
		$(document).ready(function(){
			jQuery(document).trigger('close.facebox')
		});
		hashListener.setHash("/series/"+encodeURIComponent(it)+"/");
	}
}
Refbooks.crumby = function(x){
	if (Refbooks.calls.length == x){
		//alert(x + ' ' + Refbooks.calls.toSource());
		var call = Refbooks.calls[x-1];
	} else {
		var call = Refbooks.calls[x];
	}
	//alert(call.m+','+call.y+','+call.t+','+call.tsc);
	Refbooks.frumcrumby = 1;
	if (Refbooks.calls.length > 2){		
		//alert(Refbooks.calls.length+' -- '+Refbooks.calls.toSource());
		Refbooks.calls.splice((x+1),1);
		//alert(Refbooks.calls.length+' -- '+Refbooks.calls.toSource());
		Refbooks.tagselect = [];
		//alert(Refbooks.tagselect.length+' -- '+Refbooks.tagselect.toSource());
		for (var j=1; j <= Refbooks.calls.length-1; j++){
			call = Refbooks.calls[j];
			//alert(j+ ' ' + call.tsc);
			if (j == 1){
				if (call.tsc == 3){
					call.tsc = 2;
				}
				if (call.tsc == 5){
					hashListener.setHash('/search/q='+encodeURIComponent(Refbooks.query)+'/');
				}	
			}
			//alert(j+' loop  --  '+call.m+','+call.y+','+call.t+','+call.tsc);
			hashListener.prepareHash("tag",call.t,call.tsc);
		}
		//alert(Refbooks.tagselect.length+' -- '+Refbooks.tagselect.toSource());		
	} else {
		Refbooks.calls.splice((x+1),1);
		//alert(call.m + ',' +call.y + ',' +call.t + ',' + call.tsc);
		hashListener.prepareHash("tag",call.t,call.tsc);
	}
	Refbooks.frumcrumby = 0;
//	if (x==0){	Refbooks.calls = [];	}
}

Refbooks.filterDisplay = function (filterwhat,by,filterarray,searcharray){
	var t = filterarray;
	var tagrg = [];
	for (var i=0; i < t.length; i++){
		var rg = new RegExp('^'+t[i]+'$|^'+t[i]+',|,'+t[i]+',|,'+t[i]+'$');
		tagrg.push(rg);
	}
	function filter(by){
		var returnfeed = [];
		for (var j=0; j < tofilter.length; j++){
			var v = 0;
			var z = [];
			
			if (filterwhat == "all"){
				tofilter[j].tagset = tofilter[j].Tags;
				tofilter[j].tagset.user = tofilter[j].User_Tags;
				tofilter[j].tagset.loclib = Refbooks.tags.loclib[j];
				if (by == "loclib"){
					tagfind = tofilter[j].Tags;
				}
				if (by == "user"){
					tagfind = tofilter[j].User_Tags;
				}
				if (by == "loclibuser"){
					tagfind = tofilter[j].All_Tags;
				}
			}
			if (filterwhat == "search"){
				tofilter[j].tagset = Refbooks.found[j].wfeed.All_Tags;
				tofilter[j].tagset.user = Refbooks.found[j].wfeed.User_Tags;
				tofilter[j].tagset.loclib = Refbooks.found[j].wfeed.Tags;
				if (by == "loclib"){
					tagfind = Refbooks.found[j].wfeed.Tags;
				}
				if (by == "user"){
					tagfind = Refbooks.found[j].wfeed.User_Tags;
				}
				if (by == "loclibuser"){
					tagfind = Refbooks.found[j].wfeed.All_Tags;
				}
			}
			for (var h=0; h < tagrg.length; h++){
				//z.push(tagfind[j].toString().lastIndexOf(Refbooks.tagselect[h]));
				z.push(tagfind.toString().match(tagrg[h]));
				//alert(j+ ' -- ' +z+' -- '+tagfind[j]/*.toString().match(Refbooks.tagrg[h])*/+ ' -- ' + tagrg[h]);
			}
			for (var h=0; h < z.length; h++){
				//alert(z[h]+' z[h]');
				if (z[h]==null) {
					v=0;
					break;
				} else {
					v=1;
				}
			}
			//var v = z.toString().lastIndexOf(-1);
			if (v==1){
				v=0;
				returnfeed.push(tofilter[j]);
			}
		}
		//alert (returnfeed.length);
		return returnfeed;
	}
	if (filterwhat == "all"){
		var tofilter = Refbooks.wholefeed;
		return filter(by);
	}
	if (filterwhat == "search"){
		var tofilter = searcharray;
		return filter(by);
	}	
}

Refbooks.loadFeed = function (t,tsc){
	//alert("loadfeed");
	Refbooks.InitLoad("loading");
	Refbooks.loadcounter = 0;
	Refbooks.disparray=[];
	Refbooks.disphundred=[];
	var variabletags=[];
	function crumbyCall (t,tsc) {
		this.t = t;
		this.tsc = tsc;
	}	
	if(Refbooks.frumcrumby == 0){
		if(t==null){	Refbooks.calls = [];	}
		if(t==null&&tsc==null){
			Refbooks.calls[Refbooks.calls.length] = new crumbyCall(null,1);
		} else if (t==null&&tsc==4) {
			Refbooks.calls[Refbooks.calls.length] = new crumbyCall(null,4);
		} else if ((t!=null&&tsc==1)&&(Refbooks.calls.length>1)) {
			for (var j=0; j < Refbooks.calls.length; j++){
				Refbooks.calls.pop();
			}
			Refbooks.calls[Refbooks.calls.length] = new crumbyCall(t,1);		
		} else if ((t!=null&&tsc==2)&&(Refbooks.calls.length>1)) {
			for (var j=0; j < Refbooks.calls.length; j++){
				Refbooks.calls.pop();
			}
			Refbooks.calls[Refbooks.calls.length] = new crumbyCall(t,2);
		} else if ((t!=null&&tsc==4)&&(Refbooks.calls.length>1)) {
			for (var j=0; j < Refbooks.calls.length; j++){
				Refbooks.calls.pop();
			}
			Refbooks.calls[Refbooks.calls.length] = new crumbyCall(t,4);
		} else {
			Refbooks.calls[Refbooks.calls.length] = new crumbyCall(t,tsc);
		}
	//alert(Refbooks.calls[xyz].m+','+Refbooks.calls[xyz].y+','+Refbooks.calls[xyz].t+','+Refbooks.calls[xyz].tsc + ' - ' + Refbooks.calls.length);
	}
	//this if set toggles the tagset used to browse books by label
	if (Refbooks.toggletagset == "user"){
		var tagset = Refbooks.tags.user;
		var tagfind = Refbooks.tags.user;
		var labelortag = 'tagged';
		Refbooks.labelortag = 'Tags';
	} else if (Refbooks.toggletagset == "loclibuser"){
		var tagset = Refbooks.tags.loclibuser;
		var tagfind = Refbooks.tags.loclibuser;
		var labelortag = 'labelled or tagged';
		Refbooks.labelortag = 'Labels and Tags';
	} else {
		var tagset = Refbooks.tags.loclib;
		var tagfind = Refbooks.tags.loclib;
		var labelortag = 'labelled';
		Refbooks.labelortag = 'Labels';
	}	
	if (tsc==1 || tsc ==2 || tsc==4){	Refbooks.tagselect = [];	}	//resets variables if the tag selection is not a faceted browse
	if (t!=null){		//builds a regular expression to search for tag matches in each book entry
		x = Refbooks.tagselect.toString().lastIndexOf(t);
		if (x==-1){	
			Refbooks.tagselect.push(t);	
			//rg = new RegExp('^'+t+'$|^'+t+',|,'+t+',|,'+t+'$');
			//Refbooks.tagrg.push(rg);
		}
	}
	//alert (Refbooks.tagselect+' --- '+Refbooks.tagrg);
	var tagz = [];
	function readyDisplay (f){
		var smarray=[];
		Refbooks.index=0;
		var i = 0;
		var dispnum=10;
		var dispnumnum=10;
		for (var j=0; j < f.length; j++){
			variabletags.push(f[j].tagset);
			if(i<dispnum){
				smarray.push(f[j]);
				i++;
				if(i==dispnum){
					Refbooks.disparray.push(smarray);
					dispnum += 10;
					smarray=[];
					if(Refbooks.disparray.length == dispnumnum){
						Refbooks.disphundred.push(Refbooks.disparray);
						dispnumnum += 10;
					}
				}
			}
		}
		Refbooks.disparray.push(smarray);
		Refbooks.disphundred.push(Refbooks.disparray);
	}
	
	if (tsc == 2 || tsc == 3) {			
		var filteredfeed = Refbooks.filterDisplay("all",Refbooks.toggletagset,Refbooks.tagselect); //send filterDisplay (what to filter, by what to filter, and an array filters), returns a filtered whole object
		var numbooks = filteredfeed.length; //get number of books after filter for labelling purposes
		readyDisplay(filteredfeed); //prepare the object for display via Refbooks.moreBooks
		Refbooks.context = "not home";
		Refbooks.moreBooks(0,2); //send object to display function
	} else if (tsc == 4 || tsc == 5) {
		var searchtagsuser = [];
		var searchtagsloclibuser = [];
		var searchtagsloclib = [];		
		for (var j=0; j < Refbooks.found.length; j++){
			searchtagsuser.push(Refbooks.found[j].wfeed.User_Tags);
			searchtagsloclibuser.push(Refbooks.found[j].wfeed.All_Tags);
			searchtagsloclib.push(Refbooks.found[j].wfeed.Tags);
		}
		if (Refbooks.toggletagset == "user"){
			var tagset = searchtagsuser;
			var tagfind = searchtagsuser;
			var labelortag = 'tagged';
			Refbooks.labelortag = 'Tags';
		} else if (Refbooks.toggletagset == "loclibuser"){
			var tagset = searchtagsloclibuser;
			var tagfind = searchtagsloclibuser;
			var labelortag = 'labelled or tagged';
			Refbooks.labelortag = 'Labels and Tags';
		} else {
			var tagset = searchtagsloclib;
			var tagfind = searchtagsloclib;
			var labelortag = 'labelled';
			Refbooks.labelortag = 'Labels';
		}
		var searcharray = [];
		for (var j=0; j < Refbooks.found.length; j++){
			var newarray=Refbooks.found[j].wfeed;
			newarray.tagset = tagset[j];
			newarray.tagset.loclib = Refbooks.found[j].tagsloclib;
			newarray.tagset.user = Refbooks.found[j].tagsuser;
			searcharray.push(newarray);
		}
		Refbooks.context = "not home";
		if (tsc == 4) {
			if (Refbooks.tagselect != ""){
				var filteredfeed = Refbooks.filterDisplay("search",Refbooks.toggletagset,Refbooks.tagselect,searcharray);
			} else {
				var filteredfeed = searcharray;
			}
			var numbooks = filteredfeed.length;
			readyDisplay(filteredfeed);
			Refbooks.moreBooks(0,4);
		}
		if (tsc == 5){
			var filteredfeed = Refbooks.filterDisplay("search",Refbooks.toggletagset,Refbooks.tagselect,searcharray); 
			var numbooks = filteredfeed.length;
			readyDisplay(filteredfeed);
			Refbooks.moreBooks(0,4);
		}		
	} else if (tsc==6){
		var filteredfeed = Refbooks.series;
		var numbooks = Refbooks.series.length;
		readyDisplay(Refbooks.series);
		Refbooks.moreBooks(0,2);
	} else {
		for (var j=0; j < Refbooks.wholefeed.length; j++){
			var newarray=Refbooks.wholefeed[j];
			newarray.tagset = tagset[j];
			newarray.tagset.loclib = Refbooks.tags.loclib[j];
			newarray.tagset.user = Refbooks.tags.user[j];
		}
		var filteredfeed = Refbooks.wholefeed;
		var numbooks = filteredfeed.length;
		/*function sortbyrandom (){
			return (Math.round(Math.random())-0.5);
		}
		Refbooks.wholefeed.sort(sortbyrandom);*/
		readyDisplay(Refbooks.wholefeed);
		Refbooks.context = "home";
		Refbooks.moreBooks(0,2);
	}
	Refbooks.quickSort = function (by){
		Refbooks.disparray=[];
		Refbooks.disphundred=[];
		var variabletags=[];
		if (tsc != 2 && tsc != 3 && tsc != 4 && tsc != 5 && tsc != 6){
			filteredfeed = Refbooks.Sort(by,filteredfeed,"wholefeed");
		} else {
			filteredfeed = Refbooks.Sort(by,filteredfeed,"filteredfeed");
		}
		readyDisplay(filteredfeed);
		Refbooks.context = "not home";
		if (tsc == 2 || tsc == 3){
			Refbooks.moreBooks(0,2);
		} else if (tsc == 4){
			Refbooks.moreBooks(0,4);
		} else if (tsc == 5){
			Refbooks.moreBooks(0,4);
		} else {
			Refbooks.moreBooks(0,2);
			Refbooks.context = "home";
		}
		var hash = hashListener.getHash();
		if (hash.lastIndexOf('/') == (hash.length-1)){
			hash = hash.substring(1,hash.length-1).split('/');
		} else {
			hash = hash.substr(1).split('/');
		}
		if (hash[hash.length-1] && !isNaN(hash[hash.length-1])){
			hash.pop();
			var newhash = '/'+hashListener.getDir()+'/';
			for (var i=0; i < hash.length; i++){
				newhash += hash[i]+'/';
			}
			hashListener.setHash(newhash,'no');
		} else {
			hashListener.setHash('/'+hashListener.getDir()+hashListener.getHash(),'no');
		}
		Refbooks.SortLabel();
	}
	var disp='';
	if (Refbooks.toggletagset == "user"){
		var tagtogglehtml = '<span style="float:right;">choose display: <a class="norm" href=javascript:Refbooks.changeTags("loclib")>library labels</a>, <a class="bold" href=javascript:Refbooks.changeTags("user")>user-generated tags</a>, or <a class="norm" href=javascript:Refbooks.changeTags("loclibuser")>both</a></span>';
	} else if (Refbooks.toggletagset == "loclibuser"){
		var tagtogglehtml = '<span style="float:right;">choose display: <a class="norm" href=javascript:Refbooks.changeTags("loclib")>library labels</a>, <a class="norm" href=javascript:Refbooks.changeTags("user")>user-generated tags</a>, or <a class="bold" href=javascript:Refbooks.changeTags("loclibuser")>both</a></span>';
	} else {
		var tagtogglehtml = '<span style="float:right;">choose display: <a class="bold" href=javascript:Refbooks.changeTags("loclib")>library labels</a>, <a class="norm" href=javascript:Refbooks.changeTags("user")>user-generated tags</a>, or <a class="norm" href=javascript:Refbooks.changeTags("loclibuser")>both</a></span>';
	}
	var sorter = '<b>sort:</b> <span id="sortByTitle"><a href=javascript:Refbooks.quickSort("sortByTitle")>title</a></span> <span id="sortByCall" class="bold"><a href=javascript:Refbooks.quickSort("sortByCall")>call number</a></span> <span id="sortByRandom"><a href=javascript:Refbooks.quickSort("sortByRandom")>random</a></span>';
	if (t!=null){
		if (tsc == 4 || tsc == 5) {
			var disp='<b><span class="highlight">' + numbooks + '</span> books ' + labelortag + ' ';
			Refbooks.crumbs = tagtogglehtml + '<b>Crumbs... </b>"' + Refbooks.query + '" (<a href=javascript:Refbooks.loadFeed(null,null);>x</a>)<br /><ul style="margin:0; padding-left:15px; list-style-type:none;">';
			for (var h=0; h < Refbooks.tagselect.length; h++){
				Refbooks.crumbs += '<li>' + Refbooks.tagselect[h] + ' (<a href=javascript:Refbooks.crumby('+h+');>x</a>)</li>';
			}
			Refbooks.crumbs += '</ul><div style="clear:both"></div>';
		} else {
			var disp='<b><span class="highlight">' + numbooks + '</span> books ' + labelortag + ' ';						
			if (tsc != 2 && tsc != 3){
				Refbooks.crumbs = tagtogglehtml + '<span><b>Crumbs... </b> > </span><br /><ul style="margin:0; padding-left:15px; list-style-type:none;">';
				for (var h=0; h < Refbooks.tagselect.length; h++){
					Refbooks.crumbs += '<li>' + Refbooks.tagselect[h] + ' (<a href=javascript:Refbooks.crumby('+h+');>x</a>)</li>';
				}
				Refbooks.crumbs += '</ul><div style="clear:both"></div>';
			}
			if (tsc == 2 || tsc == 3){
				Refbooks.crumbs = tagtogglehtml + '<b>Crumbs... </b><br /><ul style="margin:0; padding-left:15px; list-style-type:none;">';
				for (var h=0; h < Refbooks.tagselect.length; h++){
					Refbooks.crumbs += '<li>' + Refbooks.tagselect[h] + ' (<a href=javascript:Refbooks.crumby('+h+');>x</a>)</li>';
				}
				Refbooks.crumbs += '</ul><div style="clear:both"></div>';
			}
		}		
		if (Refbooks.tagselect.length == 1){	disp = disp + '<span class="highlight">' + Refbooks.tagselect[0] + '</span>';	}
		if (Refbooks.tagselect.length == 2){	disp = disp + '<span class="highlight">' + Refbooks.tagselect[0] + '</span> and <span class="highlight">' + Refbooks.tagselect[1] + '</span>';	}
		if (Refbooks.tagselect.length > 2){
			for (var h=0; h < Refbooks.tagselect.length-1; h++){
				disp = disp + '<span class="highlight">' + Refbooks.tagselect[h] + '</span>, ';
			}
			disp = disp + 'and <span class="highlight">' + Refbooks.tagselect[(Refbooks.tagselect.length-1)] + '</span>';
		}
		if (tsc == 2 || tsc == 3) {	
			disp = disp + '</b><br />' + sorter;
		} else if (tsc == 4 || tsc == 5){
			disp = disp + ' in search <span class="highlight">"' + Refbooks.query + '"</span></b><br />';
			disp = disp + Refbooks.mfresults;
			disp = disp + sorter;
		} else {	
			disp = disp + '<br />' + sorter;
		}
	} else if (tsc == 4) {
		var disp='<b>All <span class="highlight">' + numbooks + '</span> books found for search <span class="highlight">"' + Refbooks.query + '"</span></b><br />';
		disp = disp + Refbooks.mfresults;
		disp = disp + sorter;
		Refbooks.crumbs = tagtogglehtml + '<span><b>Crumbs... </b>"' + Refbooks.query + '" (<a href=javascript:hashListener.setHash("/home/");>x</a>)</span><div style="clear:both"></div>';
	} else if (tsc == 6){
		var disp='<b>All <span class="highlight">' + numbooks + '</span> '+mainTitle+' in the <span class="highlight">'+Refbooks.seriesName+'</span> series</b><br />' + sorter; 
		Refbooks.crumbs = tagtogglehtml + '<a href="javascript:hashListener.setHash(\'/home/\');">View all books</a><div style="clear:both"></div>';
	} else {
		var disp='<b>All <span class="highlight">' + numbooks + '</span> '+mainTitle+'</b><br />' + sorter; 
		Refbooks.crumbs = tagtogglehtml + '<div style="clear:both"></div>';
	}
	if (tsc == 2 || tsc == 3) {	
		Refbooks.loadTagCloud (variabletags,'allcurrent');
	} else if (tsc == 4 || tsc == 5) {
		Refbooks.loadTagCloud (variabletags,'searchcurrent');
	} /*else {	
		Refbooks.loadTagCloud (variabletags,'monthcurrent');
	}
	if (tsc == 4 || tsc == 5) {
		Refbooks.loadTagCloud(tagz,'searchall');
	} else {
		Refbooks.loadTagCloud(tagz,'month');
	}*/
	Refbooks.headingdiv.innerHTML='';
	Refbooks.headingdiv.innerHTML=disp;
	Refbooks.SortLabel();
	document.getElementById('Crumbs').innerHTML = Refbooks.crumbs;
	document.getElementById("SingleBook").innerHTML = '';
	if (tsc == null || tsc == 1 || tsc == 6){
		Refbooks.displayTags(Refbooks.displayTagsToggle,"default");
	} else {
		Refbooks.displayTags(Refbooks.displayTagsToggle);
	}
}

Refbooks.moreBooks = function (k,z){
	//alert("morebooks");
	Refbooks.stopcovers = 1;
	var tsc = z;
	var dispbooks='';
	disppopbooks=[];
	var dispnav='';
	var range=k;
	var iterations = 0;
	Refbooks.covertitles = [];
	Refbooks.isbn = [];
	Refbooks.amazon = ['','','','','','','','','',''];
	Refbooks.link = ['','','','','','','','','',''];
	Refbooks.ebook = ['','','','','','','','','',''];
	Refbooks.annotation = ['','','','','','','','','',''];
	if (Refbooks.disparray.length > 1){
		if (range>=1){
			dispnav += '<a class="dowmrc" href=javascript:hashListener.prepareHash("page",' + (range-1) + ')><img src="'+Refbooks.arrowleft+'" width="30" height="20" border="0" alt=""></a> ';
			if (range>=6 && Refbooks.disparray.length > 10){
				dispnav += '<span class="indexunselect"><a class="indexnums" href=javascript:hashListener.prepareHash("page",0)>1</a></span> ';
				dispnav += '<span class="navEllipses">...</span> ';
			}
		}
		for (var j=1; j <= Refbooks.disparray.length; j++){
			if ((range+1) == j) {
				dispnav += '<span class="indexselect"><span class="indexnumselected">' + j + '</span></span> ';
				iterations++;
			} else if ((range-5)<1){
				dispnav += '<span class="indexunselect"><a class="indexnums" href=javascript:hashListener.prepareHash("page",' + (j-1) + ',' + tsc + ')>' + j + '</a></span> ';
				iterations++;
			} else if (range > (Refbooks.disparray.length - 9) && j > (Refbooks.disparray.length - 9)){
				dispnav += '<span class="indexunselect"><a class="indexnums" href=javascript:hashListener.prepareHash("page",' + (j-1) + ',' + tsc + ')>' + j + '</a></span> ';
				iterations++;
				//alert("2"+ ' ' + j + ' ' + iterations + ' - range: ' + range +' - length-9: '+(Refbooks.disparray.length - 9));
			} else if (j > (range-4) && j < (range+6)){
				dispnav += '<span class="indexunselect"><a class="indexnums" href=javascript:hashListener.prepareHash("page",' + (j-1) + ',' + tsc + ')>' + j + '</a></span> ';
				iterations++;
				//alert("3" + ' ' + j + ' ' + iterations);
			} 
			if (iterations == 9){
				break;
			}
		}
		if ((range+1)<Refbooks.disparray.length){
			if (Refbooks.disparray.length > 10 && range <= (Refbooks.disparray.length - 7)){
				dispnav += '<span class="navEllipses">...</span> ';
				dispnav += '<span class="indexunselect"><a class="indexnums" href=javascript:hashListener.prepareHash("page",' + (Refbooks.disparray.length-1) + ')>' + (Refbooks.disparray.length) + '</a></span> ';
			}
			dispnav += '<a class="dowmrc" href=javascript:hashListener.prepareHash("page",' + (range+1) + ')><img src="'+Refbooks.arrowright+'" width="30" height="20" border="0" alt=""></a> ';
		}
	}
	Refbooks.navdivtop.innerHTML='';
	Refbooks.navdivtop.innerHTML=dispnav;
	Refbooks.navdivbot.innerHTML='';
	Refbooks.navdivbot.innerHTML=dispnav;
	Refbooks.stopcovers = 0;
	for (var j=0; j< Refbooks.disparray[k].length; j++){
		var displabels='';
		var displabelspop='';
		var dispuser='';
		var dispuserpop='';
		var newarray=Refbooks.disparray[k][j];
		var title=newarray.Title;
		var citation=newarray.Citation;
		var link=newarray.Catalog_Link;
		var ebook=newarray.eBook_Link;
		var user=newarray.User_Tags;
		var loclib=newarray.Tags;
		var isbn=newarray.ISBN;
		var annotation=newarray.Annotation;
		var callnumber = newarray.Call_Number;
		var series=newarray.Series;
		Refbooks.covertitles[j] = title;
		Refbooks.link[j] = link;
		Refbooks.ebook[j] = ebook;
		Refbooks.annotation[j] = annotation;
		Refbooks.isbn[j] = isbn;
		Refbooks.CoverTriage(isbn,j);
		var idholder = '#popbook'+j;
		if (loclib.length==0){displabels = "None";	displabelspop = "None";} else {
			for (var h=0; h< loclib.length-1; h++){
				displabels += '<a href="javascript:hashListener.prepareHash(\'tag\',\'' + loclib[h] + '\',\'' + tsc + '\');">' + loclib[h] + '</a>, ';
				displabelspop += '<a href="javascript:Refbooks.fromPopbook(\'' + loclib[h] + '\',\'' + tsc + '\',\'label\');">' + loclib[h] + '</a>, ';
			}
			displabels += '<a href="javascript:hashListener.prepareHash(\'tag\',\'' + loclib[loclib.length-1] + '\',\'' + tsc + '\');">' + loclib[loclib.length-1] + '</a>';
			displabelspop += '<a href="javascript:Refbooks.fromPopbook(\'' + loclib[loclib.length-1] + '\',\'' + tsc + '\',\'label\');">' + loclib[loclib.length-1] + '</a>';
		}
		if (user.length==0){
			dispuser = 'None (<a href="javascript:Refbooks.editLabels(\'' + idholder + '\',\'' + user + '\',\'' + isbn + '\');">add</a>)';
			dispuserpop = 'None';
		} else if (user.toString().lastIndexOf(",") == -1){
			dispuser += '<a href="javascript:hashListener.prepareHash(\'tag\',\'' + user + '\',\'' + tsc + '\');">' + user + '</a> (<a href="javascript:Refbooks.editLabels(\'' + idholder + '\',\'' + user + '\',\'' + isbn + '\');">edit</a>)';
			dispuserpop += '<a href="javascript:Refbooks.fromPopbook(\'' + user + '\',\'' + tsc + '\',\'tag\');">' + user + '</a>';
		} else {
			for (var h=0; h< user.length-1; h++){
				dispuser += '<a href="javascript:hashListener.prepareHash(\'tag\',\'' + user[h] + '\',\'' + tsc + '\');">' + user[h] + '</a>, ';
				dispuserpop += '<a href="javascript:Refbooks.fromPopbook(\'' + user[h] + '\',\'' + tsc + '\',\'tag\');">' + user[h] + '</a>, ';
			}
			dispuser += '<a href="javascript:hashListener.prepareHash(\'tag\',\'' + user[user.length-1] + '\',\'' + tsc + '\');">' + user[user.length-1] + '</a> (<a href="javascript:Refbooks.editLabels(\'' + idholder + '\',\'' + user + '\',\'' + isbn + '\');">edit</a>)';
			dispuserpop += '<a href="javascript:Refbooks.fromPopbook(\'' + user[user.length-1] + '\',\'' + tsc + '\',\'tag\');">' + user[user.length-1] + '</a>';
		}
		//if (Refbooks.toggletagset == 1 || Refbooks.toggletagset == 2 || Refbooks.toggletagset == 5){
			var edit =  '<span style="float:right; font-size:small;"><a id="edittags" href="javascript:Refbooks.editLabels(\'' + idholder + '\',\'' + user + '\',\'' + isbn + '\');">Edit Tags</a></span><div style="clear:both;"></div>';
		/*} else {
			var edit = "";
		}*/
		var seriesHTML = '';
		if (series!=''&&series!="undefined"){
			seriesHTML = '<div class="labels"><b>Series:</b> <a href="javascript:Refbooks.fromPopbook(\''+series+'\',0,\'series\');">' + series + '</a></div>';
		}
		disppopbooks += '<div id="popbook'+j+'" style="width:800px; font-size:96%; line-height:150%; display:none;" ><table><tr><td id="popcover' + j + '" valign="top" style="vertical-align:top; background-color:#FFF; padding:5px;"></td><td valign="top" style="background-color:#FFF; padding:5px; padding-left:20px;"><div id="info'+j+'" class="tooggleme'+j+'"><a class="booktitle" title="K-State Catalog Page" href=' + link + ' target=dynamic>' + title + '</a></b><br /><div class="labels"><b>Labels:</b> ' + displabelspop + '</div><div class="labels"><b>Tags:</b> ' + dispuserpop + '</div>'+seriesHTML+'<span id="desc'+j+'"></span>'/*<br /><b>Annotation:</b> ' + annotation*/ + edit + '</div><div id="preview'+j+'" class="tooggleme'+j+'" style="width: 600px; height: 500px; background-color: gray; display:none;"></div></td></tr></table></div>';
		dispbooks=dispbooks + '<div id="cover' + j + '" style="float:left; width:60px; height:85px; margin:5px 0px 0px 0px; padding-top:2px;"></div><div class="bookinfo"><a class="booktitle" href="javascript:jQuery.facebox({div: \''+idholder+'\'});" rel="facebox">' + title + '</a></b><br /><div class="labels"><b>Labels:</b> ' + displabels + '</div><div class="labels"><b>Tags:</b> ' + dispuser + '</div></div><div style="clear: both;"></div>';
	}
	Refbooks.popbooks.innerHTML = '';
	Refbooks.popbooks.innerHTML = disppopbooks;
	Refbooks.booksdiv.innerHTML = '';
	Refbooks.booksdiv.innerHTML = dispbooks;
	//alert(!document.getElementById('cover0').width);
	for (var j=0; j< Refbooks.disparray[k].length; j++){
		if (!document.getElementById('cover' + j).innerHTML){
			document.getElementById('cover' + j).innerHTML = '<img class="loadingcover" src="http://www.lib.k-state.edu/depts/dowmrc/images/ajax-loader.gif" />';
		}
	}
	//alert(document.getElementById('cover0').innerHTML);
	//alert('/'+hashListener.getDir()+hashListener.getHash());
}
Refbooks.filterSeries = function (series) {
	Refbooks.series = [];
	series = decodeURIComponent(series);
	for (var i = 0; i < Refbooks.wholefeed.length; i++ ){
		if (Refbooks.wholefeed[i].Series == series){
			Refbooks.series.push(Refbooks.wholefeed[i]);
		}
	}
	Refbooks.loadFeed(null,6);
}
Refbooks.dosearch = function (form) {
	//hashListener.setHash('/search/');
	if (document.getElementById("searchTest").value != ""){
		Refbooks.query = document.getElementById("searchTest").value;
		hashListener.setHash('/search/q='+encodeURIComponent(Refbooks.query)+'/');
	}
}
Refbooks.buildSearchQueries = function (q) {
	Refbooks.query = q;
	var query = Refbooks.query;
	query = query.toLowerCase();
	var common=[]; //array of common terms to remove from search queries
	common[0]="the";
	common[1]="in";
	common[2]="a";
	common[3]="and";
	common[4]="on";
	common[5]="of";
	common[6]="to";
	common[7]="from";
	common[8]="for";
	common[9]="my";
	common[10]="our";
	common[11]="i";
	common[12]="or";
	common[13]="as";
	query = query.replace(/^\s+|\s+$/g,''); //removes leading and trailing spaces in query string
	rg = new RegExp(/"/g);
	var qm =[];
	if (query.match(rg) != null){	qm = query.match(rg);	} //checks to see if search query has quotation marks in it
	var qmquery = [];
	if (qm.length == 2){ 
		start = query.indexOf('"');	
		end = query.lastIndexOf('"');
		qmquery[0] = query.substring(start+1,end); //creates array if query has quotation marks, to give delimiting behavior to quotes
		query = query.replace('"'+qmquery[0]+'"',""); //removes portion of query within quotes from query string
	}
	if (qm.length == 4){
		end = query.lastIndexOf('"');
		secend = query.lastIndexOf('"',end-1);
		thiend = query.lastIndexOf('"',secend-1);
		fouend = query.lastIndexOf('"',thiend-1);
		qmquery[0] = query.slice(fouend+1,thiend);
		qmquery[1] = query.slice(secend+1,end);
		alert(qmquery + ' - ' + query);
	}
	if (query != ""){
		//alert(query.length + ' - ' + query);
		query = query.replace(/[\,\.\?\!\"\+\;\:\&\(\)\,]/g, ''); //replaces various punctuation that may cause problems in string matching
		for (var i = 0; i < common.length; i++){ //cycles thru array of common words and removes them ex. "the" "it"
			rg = new RegExp(' ' + common[i] + ' ' ,"g");
			query = query.replace(rg,' ');
			rg = new RegExp('^'+common[i]+' ',"g");
			query = query.replace(rg,'');
			rg = new RegExp(' '+common[i]+'$',"g");
			query = query.replace(rg,'');
		}
		query = query.replace(/^\s+|\s+$/,''); //removes leading and trailing spaces in what's left of query string
		query = query.replace(/\s+/g,','); //replaces spaces with commas so that remaining query string can be more easily split into array (not necessary?)
		//alert (query);
		queries = query.split(",");
		queries = queries.concat(qmquery); //concatenates query array with array of queries put within quotation marks in the search box
	} else {
		queries = qmquery;
		//alert(queries.length + ' - ' + queries);
	}
	function xy (x,y){
		this.x = x;
		this.y = y;	
	}
	var queriesglobal = [];
	if (queries.length == 2){
		queriesglobal.push(queries[0]+" "+queries[1]);	
	}
	if (queries.length == 3){
		queriesglobal.push(queries[0]+" "+queries[2]);
		queriesglobal.push(queries[0]+" "+queries[1]);
		queriesglobal.push(queries[1]+" "+queries[2]);
		queriesglobal.push(queries[0]+" "+queries[1]+" "+queries[2]);
	}
	if (queries.length > 3){
		for (var i = 0; i < queries.length; i++){
			var pxy = [];
			for (var j = 0; j < queries.length; j++){
				pxy[j] = new xy(i,j);
			}
			for (var g = 0; g < pxy.length; g++){
				if(pxy[g].x != pxy[g].y){
					queriesglobal.push(queries[pxy[g].x]+" "+queries[pxy[g].y]);
				}
			}
		}		
	}
	for (var i = 0; i < queries.length; i++) {
		queriesglobal.push(queries[i]);	
	}
	if (query != ""){
		queriesglobal.push(query.toLowerCase());
	}
	//alert (queriesglobal.length + ' ' + queriesglobal);
	Refbooks.matchqueries = queriesglobal;
	Refbooks.getSearchResults("strict",queriesglobal);
}
Refbooks.getSearchResults = function (x,q){
	var qre = [];
	if (!q) {	q = Refbooks.matchqueries;	}
	if (x == "loose") {
		for (var i = 0; i < q.length; i++) {
			qre[i] = new RegExp(q[i],"g");
		}
		Refbooks.mfresults = '<a href=javascript:Refbooks.getSearchResults("strict")>fewer results...</a><br />';
	}
	if (x == "strict") {
		//alert(q.length);
		for (var i = 0; i < q.length; i++) {
			qre[i] = new RegExp('\\W'+q[i]+'\\W|^'+q[i]+'\\W|\\W'+q[i]+'$|^'+q[i]+'$',"g");
			//alert(qre[i]);
		}
		Refbooks.mfresults = '<a href=javascript:Refbooks.getSearchResults("loose")>more results...</a><br />';
	}
	var counter = 0;
	Refbooks.found=[];
	function searchResult (wfeed,occ,ttl,index) {
		this.wfeed = wfeed;
		this.occ = occ;
		this.ttl = ttl;
		this.tagsuser = Refbooks.tags.user[index];
		this.tagsloclib = Refbooks.tags.loclib[index];
		this.tagsloclibuser = Refbooks.tags.loclibuser[index];
	}
	
	for (var j=0; j < Refbooks.wholefeed.length; j++){
		var numocc = 0;		
		var tz = '';		
		t = Refbooks.wholefeed[j].Title.replace(/<\/?[^>]+(>|$)/g, "");
		t += ' ' + Refbooks.wholefeed[j].Annotation.replace(/<\/?[^>]+(>|$)/g, "");
		t += ' ' + Refbooks.tags[j].toString().replace(/<\/?[^>]+(>|$)/g, "");
		t += ' ' + Refbooks.wholefeed[j].User_Tags.toString().replace(/<\/?[^>]+(>|$)/g, "");
		t += ' ' + Refbooks.wholefeed[j].ISBN;
		t += ' ' + Refbooks.wholefeed[j].Call_Number;
		t = t.toLowerCase();
//alert (t + " - what it's searching - entry" + j);
		for (var i = 0; i < qre.length; i++) {
			temptz = t.match(qre[i]);
			//alert (temptz + " - what t.match is returning - entry " + j + " - query " + i);
			if (temptz!=null) {	tz = tz + temptz + ',';	}
		}
		if (tz.length>0) {
			var tzarr = tz.split(",");
			//alert (tz + " tz - entry" + j);
			if (tz!=null) {	numocc = tzarr.length - 1;	}
			//alert (numocc + " numocc - entry" + j);
			Refbooks.found[counter] = new searchResult (Refbooks.wholefeed[j],numocc,Refbooks.wholefeed[j].Title,j);
			//alert (found[counter].toSource() + " found object - entry " + j);
			counter++;
		}
	}
	function sortbynumocc(a, b) { //function to sort an object and it's variables and properties by one set property
    		var x = a.occ;
    		var y = b.occ;
    		return ((y < x) ? -1 : ((y > x) ? 1 : 0));
		}
	Refbooks.found.sort(sortbynumocc);//sorts Refbooks.found by number of occurances
//	alert (Refbooks.found[0].tagsloclib + " - " + Refbooks.found.length);
		Refbooks.loadFeed(null,4);
		
}
Refbooks.ssbdt = 1; //sort search by date toggle
Refbooks.ssbtt = 1; //sort search by title toggle
Refbooks.sortSearch = function(by) {
		if (by=="date") {
			function sortbydte(a, b) {
				var x = a.dte;
				var y = b.dte;
				if (Refbooks.ssbdt==1) {
					return ((y < x) ? -1 : ((y > x) ? 1 : 0));
				}
				if (Refbooks.ssbdt==-1) {
					return ((x < y) ? -1 : ((x > y) ? 1 : 0));
				}
			}
			Refbooks.found.sort(sortbydte);
			Refbooks.loadFeed(null,4);
			if (Refbooks.ssbdt == 1){	Refbooks.ssbdt = -1;	} else {	Refbooks.ssbdt = 1;	}
		}
		if (by=="title") {
			function sortbyttl(a, b) {
				var x = a.ttl;
				var y = b.ttl;
				if (Refbooks.ssbtt == 1) {
					return ((x < y) ? -1 : ((x > y) ? 1 : 0));
				}
				if (Refbooks.ssbtt == -1) {
					return ((y < x) ? -1 : ((y > x) ? 1 : 0));
				}
			}
			Refbooks.found.sort(sortbyttl);
			Refbooks.loadFeed(null,4);
			if (Refbooks.ssbtt == 1){	Refbooks.ssbtt = -1;	} else {	Refbooks.ssbtt = 1;	}
		}
		if (by=="random") {
			function sortbyrandom(){
				return (Math.round(Math.random())-0.5);
			}
			Refbooks.found.sort(sortbyrandom);
			Refbooks.loadFeed(null,4);
		}
	}

/*Refbooks.directEdit = function (id,x,isbn) {
	$(document).ready(function(){
		//jQuery.facebox({div:id});
	});
	$(document).ready(function(){
		Refbooks.editLabels(id,x,isbn);	
	});
}*/

Refbooks.editLabels = function (id,x,isbn) {
	if (id == "remove"){
		$("#tabsEx1").remove();
	} else {
		$("#tabsEx1").remove();
		if ($("#tabsEx1").html() == null){
			var toadd = [];
			var possible = [];
			if (x.length > 0){	x = x.split(",");	}
			for (var i=0; i < Refbooks.wholefeed.length; i++){
				if (Refbooks.wholefeed[i].User_Tags != []){
					if (Refbooks.wholefeed[i].User_Tags[0].length == 1){
						possible.push(Refbooks.wholefeed[i].User_Tags);
					} else {
						for (var j = 0; j < Refbooks.wholefeed[i].User_Tags.length; j++){
							possible.push(Refbooks.wholefeed[i].User_Tags[j]);
						}
					}
				}
			}
			possible = Refbooks.removeDuplicates(possible);
			if (x.length > 0){
				for (var i = 0; i < possible.length; i++){
					for (var j = 0; j < x.length; j++){
						if (possible[i] == x[j]){
							possible.splice(i,1);	
						}
					}
				}
			}
			possible.sort();
			var disp = '<div class="edittoggle" id="tabsEx1" style="width:800px;"><ul style="height: 30px;"><li><a class="dowmrc" href="#fragment-1"><span>Add</span></a></li><li><a class="dowmrc" href="#fragment-2"><span>Create</span></a></li><li><a class="dowmrc" href="#fragment-3"><span>Remove</span></a></li><a class="dowmrc" href=javascript:Refbooks.editLabels("remove"); class="closeedit" style="float:right;"><span>Close Edit</span></a>'; 
			disp += '</ul><div id="fragments"><div id="fragment-1"><div style="float:right; width:60%;"><ul>';
			for(var i = 0; i < possible.length; i++) {
				disp += '<li class="block">' + possible[i] + '</li> ';
			}
			disp += '</ul></div><script src="http://creator.zoho.com/'+zohoUserName+'/form/json/'+zohoAddTagsId+'/" type="text/javascript"></script><script>setFormId('+zohoAddTagsId+');</script><div style="float:left; width:40%;"><form user="'+zohoUserName+'" linkid="'+zohoAddTagsId+'" nexturl="" onsubmit="setZohoId('+zohoAddTagsId+');Zoho.submit(this); return false;"><div class="drop"><span id="dragtoadd" style="margin:2px;"<b>Drag Tags Here to Add</b><br /><br /></span></div>';
			disp += '<input id="addin" type="hidden" name="Tags" value=""><input id="addin" type="hidden" name="ISBN" value="'+isbn+'"><input style="margin-top:5px; float:right;" type = "submit" value="Submit" class="submit-button"/></form></div><div style="clear: both;"/></div>';
			disp += '<div id="fragment-2"><script src="http://creator.zoho.com/'+zohoUserName+'/form/json/'+zohoCreateTagsId+'/" type="text/javascript"></script><script>setFormId('+zohoCreateTagsId+');</script><form user="'+zohoUserName+'" linkid="'+zohoCreateTagsId+'" nexturl="" onsubmit="setZohoId('+zohoCreateTagsId+');Zoho.submit(this); return false;"><label>ISBN:</label><input  type="text" size="8" name="ISBN" value="'+isbn+'"><br /><label>Tag/s:</label><input type="text" size="8" name="Tags" value=""><br /><br /><input type = "submit" value="Submit" class="submit-button" style="margin-right:50px;"/></form><div style="clear: both;"/></div>';
			disp += '<div id="fragment-3"><script src="http://creator.zoho.com/'+zohoUserName+'/form/json/'+zohoRemoveTagsId+'/" type="text/javascript"></script><script>setFormId('+zohoRemoveTagsId+');</script><form user="'+zohoUserName+'" linkid="'+zohoRemoveTagsId+'" nexturl="" onsubmit="setZohoId('+zohoRemoveTagsId+');Zoho.submit(this); return false;"><input  type="hidden" name="ISBN" value="'+isbn+'"><label>Tags:</label>';
			if (x.length==0){
				var directions = 'There are no tags yet for this book';
			} else {
				for(var i = 0; i < x.length; i++) {
					disp += '<li class="block2">' + x[i] + '</li> ';
				}
				var directions = 'Drag tag here';
			}
			disp += '<br /><br /><label>Remove:</label><div class="drop2" style="height:20px;"><span id="removetag">'+directions+'</span></div><input id="removein" type="hidden" name="Tags" value=""><input type = "submit" value="Submit" class="submit-button" style="margin-right:50px;"/></form><div style="clear: both;"/></div>';
			disp += '</div></div>';
			Refbooks.faceboxcopy = '<div id="'+id.replace("#","")+'" style="width:800px; font-size:96%; line-height:150%; display:none;" >' + $(id).html() + '</div>';
			$(document).ready(function(){
				$(id).append(disp);
			});	
			$(document).ready(function(){
				$("#tabsEx1 > ul").tabs({ 
					selected: 0,
					fx: { 
						height: "toggle", 
						opacity: "toggle" 
					} 
				});	   
			});
			$(document).ready(function(){
				var browser = Refbooks.getBrowser();
				//if (browser != "ff3-"){	
					faceboxCloneToggle = 1;
					jQuery.facebox({div:id});
					faceboxCloneToggle = 0;
					$("#popbooks").append(Refbooks.faceboxcopy)
				//}
				$(".block").draggable();
				$(".block2").draggable({ 
					helper: "clone" ,
					cursor: "move"
				});
				$(".drop").droppable({
					accept: ".block",
					activeClass: 'droppable-active',
					hoverClass: 'droppable-hover',
					drop: function(ev, ui) {
						ui.draggable.fadeOut("fast");
						$("#dragtoadd").remove();
						$(this).append('<li class="licloud">'+ui.draggable.html()+' </li>');
						toadd.push(ui.draggable.html());
						$("#addin").replaceWith('<input id="addin" type="hidden" size="8" name="Tags" value="' + toadd.toString() + '">');
						}
					});
				$(".drop2").droppable({
					accept: ".block2",
					activeClass: 'droppable-active',
					hoverClass: 'droppable-hover',
					drop: function(ev, ui) {
						$("#removetag").replaceWith('<span id="removetag">'+ui.draggable.html()+'</span>');
						$("#removein").replaceWith('<input id="removein" type="hidden" name="Tags" value="' + ui.draggable.html() + '">');
					}
				});
			});
		}
	}
}

Refbooks.getBrowser = function () {
	var browser = "";
	var x=navigator.userAgent;
	x = x.split(" ");
	if(x[0] == "Mozilla/5.0"){
		var version = x[x.length-1].toString().split("/");
		if (version[0] == "Firefox"){
			if (version[1] == "3.0"){
				browser = "ff3+";	
			} else {
				browser = "ff3-";
			}
		} else if (version[0] == "Safari"){
			browser = "safari";
		}	
	} else {
		browser = "other";	
	}
	return browser;
}

$(document).ready(function(){
	Refbooks.parseZohoData();
});

var hashListener = {
	ie:		/MSIE/.test(navigator.userAgent),
	ieSupportBack:	true,
	hash:	document.location.hash,
	hashfrom: 0,
	check:	function () {
		var h = document.location.hash;
		if (h != this.hash) {
			this.hash = h;
			if (this.hashfrom==0){
				this.onHashChanged();
			}
			//this.hashfrom=0;
		} 
	},
	init:	function () {
		// for IE we need the iframe state trick
		if (this.ie && this.ieSupportBack) {
			var frame = document.createElement("iframe");
			frame.id = "state-frame";
			frame.style.display = "none";
			document.body.appendChild(frame);
			//this.writeFrame("");
		}

		var self = this;

		// IE
		if ("onpropertychange" in document && "attachEvent" in document) {
			document.attachEvent("onpropertychange", function () {
				if (event.propertyName == "location") {
					self.check();
				}
			});
		}
		// poll for changes of the hash
		window.setInterval(function () { self.check() }, 50);
	},
	setHash: function (s,trigger) {
		if (!trigger){
			this.hashfrom = 0;
		} else {
			this.hashfrom = 1;
		}
		// Mozilla always adds an entry to the history
		if (this.ie && this.ieSupportBack) {
			this.writeFrame(s);
		}
		document.location.hash = s;
	},
	prepareHash: function (t,x,tsc) { //send prepareHash: t=type of hash, x=hash value, tsc=tag select controller to manage whether tag is replacement or additional
		if (t=="page"){
			if (isNaN(hashListener.getLastHash())){
				this.setHash('/'+this.getDir()+this.getHash() + (x+1) + '/');
			} else {
				this.setHash('/'+this.getDir()+this.getHash().replace(this.getLastHash(),(x+1)));
			}
		}
		if (t=="tag"){
			x=encodeURIComponent(x);
			if (tsc == 1 || tsc == null){	this.setHash('/home/');	}
			if (tsc == 2){	this.setHash('/home/'+x+'/');	}
			if (tsc == 3){
				if (isNaN(this.getLastHash())){
					this.setHash('/home'+hashListener.getHash()+x+'/');
				} else {
					this.setHash('/'+this.getDir()+this.getHash().replace(this.getLastHash(),(x)));
				}
			}
			if (tsc == 4){	this.setHash('/search/q='+Refbooks.query+'/');	}
			if (tsc == 5){
				if (isNaN(this.getLastHash())){
					this.setHash('/search'+hashListener.getHash()+x+'/');	
				} else {
					this.setHash('/'+this.getDir()+this.getHash().replace(this.getLastHash(),(x)));
				}
			}
		}
	},
	getHash: function () {
		var curhash = this.hash.substr(1);
		//alert(curhash +' curhash');
		if (curhash!=""&&curhash!="undefined") {
			var dirstart = 1+curhash.indexOf("/");
			var dirend = curhash.indexOf("/",dirstart);
			return curhash.substr(dirend);
		} else {
			return "home";
		}
	},
	getLastHash: function () {
		var curhash = this.hash.substr(1);
		if (curhash!=""&&curhash!="undefined") {
			var end = curhash.lastIndexOf("/");
			var start = 1+curhash.lastIndexOf("/",(end-1));
			return curhash.substring(start,end);
		} else {
			return "home";
		}
	},
	getDir: function () {
		var dirhash = this.hash.substr(1);
		if (dirhash!="" && dirhash!="undefined") {
			dirhash = dirhash.split('/');
			return dirhash[1];
		} else {
			//alert("2");
			return "home";
		}
	},
	writeFrame:	function (s) {
		var f = document.getElementById("state-frame");
		var d = f.contentDocument || f.contentWindow.document;
		d.open();
		d.write("<script>window._hash = '" + s + "'; window.onload = parent.hashListener.syncHash;<\/script>");
		d.close();
	},
	syncHash:	function () {
		var s = this.hash;
		if (s != document.location.hash) {
			document.location.hash = s;
		}
	},
	onHashLoaded:	function (x) {
		//alert('ohHashLoaded - '+x);
		var dir = this.getDir();
		//alert(dir + ' dir');
		if (dir=="home"){
			p = this.getHash();
			//alert(p + ' p');
			var calls = [];
			if (p.length > 1){
				if (p != "home"){
					if (p.lastIndexOf("/") != p.length-1){
						calls = p.substr(1).split("/");
					} else {
						calls = p.substr(1).split("/");
						calls.pop();
					}
				}
			} else if(x) {
				//alert(1);
				Refbooks.loadFeed();
			}
				
			var nan = NaN;
			if (calls.length-1 == 0){ Refbooks.contextShouldBe = "tags"; }
			if (!isNaN(calls[calls.length-1])){
				if (calls.length-1 == 0){ Refbooks.contextShouldBe = "home"; }
				nan = calls[calls.length-1];
				calls.pop();
			}
			if(!x){
				//alert(2);
				Refbooks.loadFeed();
				if (p == "home") {
					this.setHash("/home/","no");
				} else {
					//alert('sethash - 1');
					this.setHash(this.hash);
				}
			}
			if (isNaN(nan) || !x){
				if (calls.length != 0){
					for (var i = 0; i < calls.length; i++) {
						calls[i]=decodeURIComponent(calls[i]);
						//alert(calls[i]);
						Refbooks.sabt = -1;
						Refbooks.sabc = -1;
						if (i==0){
							//alert(3);
							Refbooks.loadFeed(calls[i],2);
						} else {
							//alert(4);
							Refbooks.loadFeed(calls[i],3);
						}
						Refbooks.SortLabel();
					}
				}
			}
			if (!isNaN(nan)){
				if (Refbooks.contextShouldBe == "home" && x){
					//alert(5);
					Refbooks.loadFeed();
					Refbooks.SortLabel();
				}
				Refbooks.moreBooks(nan-1,2);
			}
		}
		if (dir=="search"){
			p = this.getHash();
			var calls = [];
			p = p.substr(p.indexOf("="));
			q = decodeURIComponent(p.substring(1,p.indexOf("/")));
			Refbooks.buildSearchQueries(q);
			p = p.substr(p.indexOf("/")+1);
			if (p.length > 0){
				if (p.lastIndexOf("/") != p.length-1){
					calls = p.split("/");
				} else {
					calls = p.split("/");
					calls.pop();
				}
			}
			var nan = NaN;
			if (!isNaN(calls[calls.length-1])){
				nan = calls[calls.length-1];
				calls.pop();
			}	
			if (calls.length != 0){
				for (var i = 0; i < calls.length; i++) {
					Refbooks.loadFeed(calls[i],5);
				}
			}
			if (!isNaN(nan)){
				Refbooks.moreBooks(nan-1,2);
			}
		}
		if (dir=="book"){
			p = this.getHash();
			p = p.substr(p.indexOf("=")+1);
			if (p.indexOf("/") != -1){
				p = p.substring(0, p.indexOf("/"));
			}
			Refbooks.displaySingleBook(p);
		}
		if (dir=="series"){
			Refbooks.seriesName = '';
			p = this.getHash();
			//alert(p);
			var calls = [];
			if (p.length > 1){
				if (p.lastIndexOf("/") != p.length-1){
					calls = p.substr(1).split("/");
				} else {
					calls = p.substr(1).split("/");
					calls.pop();
				}
				Refbooks.seriesName = calls[0];
				Refbooks.filterSeries(calls[0]);
				var nan = NaN;
				nan = calls[calls.length-1];
				if (!isNaN(nan)){
					Refbooks.moreBooks(nan-1,2);
				}
			} else {
				var disp = '<ul>';
				for (var j = 0; j< Refbooks.allSeries.length; j++){
					disp += '<li><a href="javascript:hashListener.setHash(\'/series/'+encodeURIComponent(Refbooks.allSeries[j])+'/\');">'+Refbooks.allSeries[j]+'</a></li>';
				}
				disp += '</ul>';
				//alert(disp);
				$(document).ready(function(){
					$("#Crumbs").html('<a href="javascript:hashListener.setHash(\'/home/\');">View all books</a><div style="clear:both"></div>');
					$("#Heading").html('<b>All Series</b>');
					$("#NavigationTop").html('');
					$("#Books").html(disp);
					$("#NavigationBottom").html('');
					$("#SingleBook").html('');
					Refbooks.displayTags(Refbooks.displayTagsToggle,"default");
					Refbooks.InitLoad("loaded");
				});
			}
			
		}
	},
	onHashChanged:	function () {
		var dir = this.getDir();
		//alert(dir);
		if (dir=="home"){
			this.onHashLoaded("y");
		}
		if (dir=="search"){
			this.onHashLoaded("y");
		}
		if (dir=="series"){
			this.onHashLoaded("y");
		}
		if (dir=="book"){
			$(document).ready(function(){
				$("#Crumbs").html("");
				$("#Crumbs").next().children().html("");
				$("#Crumbs").next().next().children().html("");
				jQuery(document).trigger('close.facebox');
			});
			p = this.getHash();
			p = p.substr(p.indexOf("=")+1);
			if (p.indexOf("/") != -1){
				p = p.substring(0, p.indexOf("/"));
			}
			Refbooks.displaySingleBook(p);
		}
	},
	reload: function () {
		this.onHashChanged();
	}
};

Refbooks.displaySingleBook = function(p){
	var indb = 0;
	Refbooks.amazon = [];
	for(var i = 0; i < Refbooks.wholefeed.length; i++) {
		if (Refbooks.wholefeed[i].ISBN == p){
			it = Refbooks.wholefeed[i];
			var tags = '';
			if (it.Tags.length == 0){
				tags = "None";
			} else {
				for (var h=0; h< it.Tags.length-1; h++){
					tags += '<a href="javascript:hashListener.prepareHash(\'tag\',\'' + it.Tags[h] + '\',2);">' + it.Tags[h] + '</a>, ';
				}
				tags += '<a href="javascript:hashListener.prepareHash(\'tag\',\'' + it.Tags[h] + '\',2);">' + it.Tags[h] + '</a>';
			}
			document.getElementById("Crumbs").innerHTML = '<a href="javascript:hashListener.setHash(\'/home/\');">View all books</a>';
			document.getElementById("SingleBook").innerHTML = '<div id="coverSingle" style="display:none"></div><div class="singleInfo"><span id="singleTitle">' + it.Title + '</span><div id="descSingle"></div><span><span>Tags:</span>' + tags + '</span><span><span>Call Number:</span>' + it.Call_Number + '</span><span><span>ISBN:</span>' + it.ISBN + '</span><span id="singleCitation"><span>Citation:</span>' + it.Citation + '</span><div id="singleReviews"></div></div><div id="popcoverSingle" style="float:left; margin: 0 25px;"></div>';
			Refbooks.isbn = [p];
			Refbooks.covertitles = [it.Title];
			Refbooks.link = [it.Catalog_Link];
			Refbooks.ebook = [it.eBook_Link];
			Refbooks.annotation = [it.Annotation];
			Refbooks.CoverTriage(p,"Single");
			indb = 1;
			break;
		}
	}
	if (indb == 0){
		document.getElementById("Crumbs").innerHTML = '<a href="javascript:hashListener.setHash(\'/home/\');">View all books</a>';
		document.getElementById("SingleBook").innerHTML = '<div id="coverSingle" style="display:none"></div><div class="singleInfo"><span id="singleTitle"></span><div id="descSingle"></div><span id="singleCitation"></span><div id="singleReviews"></div></div><div id="popcoverSingle" style="float:left; margin: 0 25px;"></div>';
		Refbooks.isbn = [p];
		Refbooks.covertitles = [];
		Refbooks.link = [];
		Refbooks.ebook = [];
		Refbooks.annotation = [];
		Refbooks.CoverTriage(p,"Single");
	}
	//alert(document.getElementById('popcoverSingle').innerHTML == '');
		if (!document.getElementById('popcoverSingle').innerHTML || document.getElementById('popcoverSingle').innerHTML == ''){
			document.getElementById('popcoverSingle').innerHTML = '<img style="margin:30px 40px" src="http://www.lib.k-state.edu/depts/dowmrc/images/ajax-loader.gif" />';
		}
}

Refbooks.bookCoverOutput = function(output){
	//alert (output.toSource());	
	$(document).ready(function(){
		document.getElementById('cover' + output[0]).innerHTML = output[1];
		document.getElementById('popcover' + output[0]).innerHTML = output[2];
		document.getElementById('desc' + output[0]).innerHTML = output[3];
		if($('#singleTitle').html() == '' && output[4] != undefined){
			$('#singleTitle').html(output[4]);
		}
		if(($('#singleCitation').html() == ''|| $('#singleCitation').html() == 'undefined' || $('#singleCitation').html() == '<span>Citation:</span>undefined') && output[5] != undefined){
			$('#singleCitation').html(output[5]);
		}
		if($('#singleReviews').html() == '' && output[6] != undefined){
			$('#singleReviews').html(output[6]);
		}
		$("#reviewTabs").tabs({		});
		Refbooks.InitLoad();
	});
}

