/**
 * author: Timothy Groves - http://www.brandspankingnew.net version: 1.1 -
 * 2006-09-20
 * 
 * requires: bsn.DOM.js bsn.Ajax.js
 * 
 */

var verticalFixed = false;
var theThing;
var useBSNns;
var query;
var myBooks = new Array();
var sortUp = false;
var listType = 1;
var currentSortColumn = 1;
var hidden = false;
var changeSort = true;
if (useBSNns) {
	if (typeof (bsn) == "undefined")
		bsn = {}
	_bsn = bsn;
} else {
	_bsn = this;
}

if (typeof (_bsn.DOM) == "undefined")
	_bsn.DOM = {}

_bsn.AutoSuggest = function(fldID, param) {	
	$("#comming").hide();
	if (hidden) {
		$('#rounded_holder_main').hide();
		// $('#mainleft').animate({
		// height: '100px'
		// }, 500, function() {
		//
		// });
	}
	$("#ajax-loader_img").hide();
	setListImg();
	// alert(document.getElementById('sokresult_top_bg').style);
	document.getElementById('searchFieldTop').style.color = "#606060";

	document.getElementById('searchFieldTop').value = "Sök bland alla ljudböcker";

	// document.getElementById('searchFieldTop').style.color = "#606060";
	// document.getElementById('searchFieldTop').value = "Sök bland alla
	// ljudböcker";

	if (GetCookie('listType') != null) {
		listType = GetCookie('listType');
	}
	if (!document.getElementById)
		return false;

	this.fld = _bsn.DOM.getElement(fldID);

	if (!this.fld)
		return false;

	this.nInputChars = 0;
	this.aSuggestions = [];
	this.iHighlighted = 0;

	// parameters object
	this.oP = (param) ? param : {};
	// defaults
	if (!this.oP.minchars)
		this.oP.minchars = 1;
	if (!this.oP.method)
		this.oP.meth = "post";
	if (!this.oP.varname)
		this.oP.varname = "input";
	if (!this.oP.className)
		this.oP.className = "autosuggest";
	if (!this.oP.timeout)
		this.oP.timeout = 5000;
	if (!this.oP.delay)
		this.oP.delay = 500;
	if (!this.oP.maxheight && this.oP.maxheight !== 0)
		this.oP.maxheight = 250;
	if (!this.oP.cache)
		this.oP.cache = true;

	var pointer = this;
	theThing = this;

	this.fld.onkeyup = function() {
		pointer.getSuggestions(this.value)
	};

	this.fld.setAttribute("autocomplete", "off");
	// var query = GetCookie('query');
	// this.fld.value = query;

	if (query != null && "" != query) {
		this.fld.value = query;
		$('#searcharea').show('fast');

	}

	pointer.doAjaxRequest();
}

function hideBook() {
	$("#rounded_holder_book_main").hide();
}

function shoeBook() {
	$("#rounded_holder_book_main").show();
}

_bsn.AutoSuggest.prototype.getSuggestions = function(val) {

	if (val.length == this.nInputChars)
		return false;

	if (val.length < this.oP.minchars) {
		this.nInputChars = val.length;
		this.aSuggestions = [];
		this.clearSuggestions();
		return false;
	}

	if (false && val.length > this.nInputChars && this.aSuggestions.length
			&& this.oP.cache) {
		// get from cache
		var arr = [];
		for ( var i = 0; i < this.aSuggestions.length; i++) {
			if (this.aSuggestions[i].substr(0, val.length).toLowerCase() == val
					.toLowerCase())
				arr.push(this.aSuggestions[i]);
		}

		this.nInputChars = val.length;
		this.aSuggestions = arr;

		this.createList(this.aSuggestions);

		return false;
	}

	this.nInputChars = val.length;

	var pointer = this;
	clearTimeout(this.ajID);
	this.ajID = setTimeout(function() {
		pointer.doAjaxRequest()
	}, this.oP.delay);

	return false;
}

function SetCookie(cookieName, cookieValue, nDays) {	
	var today = new Date();
	var expire = new Date();
	if (nDays == null || nDays == 0)
		nDays = 1;
	expire.setTime(today.getTime() + 3600000 * 24 * nDays);
	document.cookie = cookieName + "=" + escape(cookieValue) + ";expires="
			+ expire.toGMTString();	
}

function GetCookie(cookieName) {
	var theCookie = "" + document.cookie;
	var ind = theCookie.indexOf(cookieName);
	if (ind == -1 || cookieName == "")
		return "";
	var ind1 = theCookie.indexOf(';', ind);
	if (ind1 == -1)
		ind1 = theCookie.length;
	return (theCookie.substring(ind + cookieName.length + 1, ind1));
}

_bsn.AutoSuggest.prototype.doAjaxRequest = function() {

	if (this.fld.value == "") {
		$("#ajax-loader_img").hide();
		return;
	}

	if ("Sök bland alla ljudböcker" == document
			.getElementById('searchFieldTop').value) {
		return;
	}

	$("#ajax-loader_img").show();
	var pointer = this;
	var lang = '&lang=';

	if (document.searchForm.language1.checked) {
		lang += "sv";
	}
	if (document.searchForm.language2.checked) {
		if (lang.length > 4) {
			lang += '+';
		}
		lang += "en";
	}
	// alert(lang);
	// create ajax request
	var url = this.oP.script + this.oP.varname + "=" + escape(this.fld.value)
			+ lang + "&hits=400&start=0";

	query = this.fld.value;
	
	SetCookie("query", this.fld.value);

	var meth = this.oP.meth;

	var onSuccessFunc = function(req) {
		pointer.setSuggestions(req)
	};
	var onErrorFunc = function(status) { /* alert("AJAX error: "+status); */
	};

	var myAjax = new _bsn.Ajax;
	myAjax.makeRequest(url, meth, onSuccessFunc, onErrorFunc);

}

_bsn.AutoSuggest.prototype.setSuggestions = function(req) {
	var xml = req.responseXML;
	//alert(xml);
	if (xml.getElementsByTagName('results') == null
			|| xml.getElementsByTagName('results')[0] == null) {
		return;
	}
	// traverse xml
	//
	this.aSuggestions = [];
	var results = xml.getElementsByTagName('results')[0].childNodes;

	for ( var i = 0; i < results.length; i++) {
		if (results[i].hasChildNodes())
			this.aSuggestions.push(results[i].childNodes[0].nodeValue);
	}

	this.idAs = "as_" + this.fld.id;

	this.createList(this.aSuggestions);
	
	copyQueryToTop();

}

function drawGrid(rows, cols) {
	var oTbl = document.createElement("Table");
	for (i = 0; i < rows; i++) {
		var oTR = oTbl.insertRow(i);
		for (j = 0; j < cols; j++) {
			var oTD = oTR.insertCell(j);
			oTD.InnerHTML = " ";
		}
	}
	document.body.appendChild(oTbl);
}

function getPopularityString(popularity) {
	var pop = "";
	for (i = 0; i < popularity; i++) {
		pop += "|";
	}
	return pop;
}

function doSort(value) {
			
	if(value < 1 || value > 9){
		value = 1;
	}

	//stop();

	if (changeSort) {
		sortUp = !sortUp;
	}

	if (currentSortColumn != value) {
		sortUp = true;
	}
	currentSortColumn = value;

	/*
	 * if(!sortUp){ document.getElementById('sortimg').src =
	 * "gfx/sortascending.png"; }else{ document.getElementById('sortimg').src =
	 * "gfx/sortdecending.png"; }
	 */
	

	
	if(document.getElementById('sort1') != null){
		document.getElementById('sort1').style.color = "#ffffff";
		document.getElementById('sort2').style.color = "#ffffff";
		document.getElementById('sort3').style.color = "#ffffff";
		document.getElementById('sort4').style.color = "#ffffff";	
	}
		
	if (value == 1) {
		sortTitle();
	} else if (value == 2) {
		sortAuthor();
	} else if (value == 3) {
		sortNarrator();
	} else if (value == 4) {
		if(query == 'commingbooks'){
			sortReleaseDate();
		}else{
			sortCategory();
		}
	} else if (value == 5 ) {
		document.getElementById('sort4').style.color = "black";
		sortLength();
	} else if (value == 6 ) {
		document.getElementById('sort3').style.color = "black";
		sortPopularity();
	} else if (value == 7 ) {
		document.getElementById('sort2').style.color = "black";
		sortReleaseDate();
	} else if (value == 8 ) {
		document.getElementById('sort1').style.color = "black";
		sortGrade();
	} else if (value == 9) {
		sortSeries();
	}

	SetCookie('scolumn', currentSortColumn);
	SetCookie('sup', sortUp);
	
}

function sortSeries() {
	myBooks = myBooks.sort(seriesCompare);
	removeRows();
	buildTable();
}

function seriesCompare(a, b) {
	var x = a.series.toLowerCase() + a.seriesOrder;
	var y = b.series.toLowerCase() + b.seriesOrder;

	if (x == "" && sortUp) {
		x = "ä";
	}

	if (x == "" && !sortUp) {
		// y = "ä";
	}

	var ret = ((x < y) ? -1 : ((x > y) ? 1 : 0));
	if (!sortUp) {
		ret = -ret;
	}
	return ret;
}

/* SORT AUTHOR */
function sortAuthor() {
	myBooks = myBooks.sort(authorCompare);
	removeRows();
	buildTable();
}

function authorCompare(a, b) {
	var x = a.author.toLowerCase();
	var y = b.author.toLowerCase();
	var ret = ((x < y) ? -1 : ((x > y) ? 1 : 0));
	if (!sortUp) {
		ret = -ret;
	}
	return ret;
}

/* SORT NARRATOR */
function sortNarrator() {
	myBooks = myBooks.sort(narratorCompare);
	removeRows();
	buildTable();
}

function narratorCompare(a, b) {
	var x = a.narrator.toLowerCase();
	var y = b.narrator.toLowerCase();
	var ret = ((x < y) ? -1 : ((x > y) ? 1 : 0));
	if (!sortUp) {
		ret = -ret;
	}
	return ret;
}

/* SORT TITLE */
function sortTitle() {
	setOpacity('sorttitle');
	myBooks = myBooks.sort(titleCompare);
	removeRows();
	buildTable();
}

function titleCompare(a, b) {
	var x = a.title.toLowerCase();
	var y = b.title.toLowerCase();
	var ret = ((x < y) ? -1 : ((x > y) ? 1 : 0));
	if (!sortUp) {
		ret = -ret;
	}
	return ret;
}

/* SORT CATEGORY */
function sortCategory() {
	myBooks = myBooks.sort(categoryCompare);
	removeRows();
	buildTable();
}

function categoryCompare(a, b) {
	var x = a.category.toLowerCase();
	var y = b.category.toLowerCase();
		
	var ret = ((x < y) ? -1 : ((x > y) ? 1 : 0));
	if (!sortUp) {
		ret = -ret;
	}
	return ret;
}

/* SORT LENGTH */
function sortLength() {
	setOpacity('sortlength');
	myBooks = myBooks.sort(lengthCompare);
	removeRows();
	buildTable();
}

function setOpacity(button) {

	$('#sorttitle').fadeTo('fast', 1.0, function() {
		// Animation complete.
		});
	$('#sortgrade').fadeTo('fast', 1.0, function() {
		// Animation complete.
		});
	$('#sortlength').fadeTo('fast', 1.0, function() {
		// Animation complete.
		});
	$('#sortpopular').fadeTo('fast', 1.0, function() {
		// Animation complete.
		});

	$('#sortlatest').fadeTo('fast', 1.0, function() {
		// Animation complete.
		});
	$('#' + button + '').fadeTo('fast', 0.7, function() {
		// Animation complete.
		});

}

function lengthCompare(a, b) {
	var ret = b.length2.toLowerCase() - a.length2.toLowerCase();
	if (!sortUp) {
		ret = -ret;
	}
	return ret;
}

/* SORT POPULARITY */
function sortPopularity() {
	setOpacity('sortpopular');
	myBooks = myBooks.sort(popularityCompare);
	removeRows();
	buildTable();
}

function popularityCompare(a, b) {
	var ret = b.popularity.toLowerCase() - a.popularity.toLowerCase();
	if (!sortUp) {
		ret = -ret;
	}
	return ret;
}

/* SORT RELEASE DATE */
function sortReleaseDate() {
	setOpacity('sortlatest');
	myBooks = myBooks.sort(releaseDateCompare);
	removeRows();
	buildTable();
}

function releaseDateCompare(a, b) {
	
	a = a.releaseDate.replace(/\-/g, "");
	b = b.releaseDate.replace(/\-/g, "");
	

	
	var ret = a - b;
	if (!sortUp) {
		ret = -ret;
	}
	return ret;
}

/* SORT RELEASE DATE */
function sortGrade() {
	setOpacity('sortgrade');
	myBooks = myBooks.sort(gradeCompare);
	removeRows();
	buildTable();
}

function gradeCompare(a, b) {
	var ret = b.grade.toLowerCase() - a.grade.toLowerCase();
	if (!sortUp) {
		ret = -ret;
	}
	return ret;
}

function buildTable() {		
	
	if (listType == 2) {
		if(query == 'commingbooks'){			
			buildTextCommingTable();
			document.getElementById('searchFieldTop').value = "";				
			$("#sortarea").hide();
			$("#comming").show();
		}else{			
			
			var mydiv = document.getElementById('sortarea');
			$("#sortarea").show();
			$("#comming").hide();
			buildTextTable();
		}				
	} else {		
		if(query == 'commingbooks'){
			setOpacity('sortlatest');
			myBooks = myBooks.sort(releaseDateCompare);
			removeRows();
			buildIconCommingBooksTable();			
			document.getElementById('searchFieldTop').value = "";			
			$("#sortarea").hide();
			$("#comming").show();
		}else{
			$("#sortarea").show();
			$("#comming").hide();
			buildIconTable();
		}			
	}
}

function buildNoHitsTable() {

	// var html = '<tr ><td style="background:#fff;">&nbsp;</td></tr><tr>' +
	// '<td style="background:#fff;" align="left" width="10">' + '&nbsp;Inga
	// Träffar</tr></tr>';
	// $('#sokresult_list tr:last').after(html);
}


function buildTextCommingTable(){
	var sortImg = '';
	if (!sortUp) {
		sortImg = '<img src="gfx/sortascending.png" style="padding:3px 3px 3px 0px;">';
	} else {
		sortImg = '<img src="gfx/sortdecending.png" style="padding:3px 3px 3px 0px;">';
	}
	var titleSortImg = '';
	var authorSortImg = '';
	var narratorSortImg = '';
	var categorySortImg = '';
	var popularitySortImg = '';
	var lengthSortImg = '';
	var gradeSortImg = '';
	var releaseSortImg = '';
	var seriesSortImg = '';

	if (currentSortColumn == 1) {
		titleSortImg = sortImg;
	} else if (currentSortColumn == 2) {
		authorSortImg = sortImg;
	} else if (currentSortColumn == 3) {
		narratorSortImg = sortImg;
	} else if (currentSortColumn == 4) {
		categorySortImg = sortImg;
	} else if (currentSortColumn == 5) {
		lengthSortImg = sortImg;
	} else if (currentSortColumn == 6) {
		popularitySortImg = sortImg;
	} else if (currentSortColumn == 7) {
		releaseSortImg = sortImg;
	} else if (currentSortColumn == 8) {
		gradeSortImg = sortImg;
	} else if (currentSortColumn == 9) {
		seriesSortImg = sortImg;
	}

	
	var ni = document.getElementById('sokresult_list');
	var html = '<table width="720px"><tr class="first">'			
			+ '<td width="110">'
			+ '<table><tr class="heading"><td>&nbsp;<a href="JavaScript:doSort(1);">'
			+ titleSortImg
			+ '</a></td><td><a  style="color:#000;" href="JavaScript:doSort(1);">Titel</a></td></tr></table></p>'
			+ '</td>'
			+ '<td width="80">'
			+ '<p><table><tr class="heading"><td><a href="JavaScript:doSort(2);document.scrollToTop(0,0);">'
			+ authorSortImg
			+ '</a></td><td><a style="color:#000;" href="JavaScript:doSort(2);document.scrollToTop(0,0);">Författare</a></td></tr></table></p>'
			+ '</td>'
			+ '<td width="60">'
			+ '<p><table><tr class="heading"><td><a style="color:#fff;" href="JavaScript:doSort(3)">'
			+ narratorSortImg
			+ '</a></td><td><a style="color:#000;" href="JavaScript:doSort(3)">Förlag</a></td></tr></table></p>'
			+ '</td>'
			+ '<td width="100">'
			+ '<p><table><tr class="heading"><td><a style="color:#fff;" href="JavaScript:doSort(4)">'
			+ categorySortImg
			+ '</a></td><td><a style="color:#000;" href="JavaScript:doSort(4)">Utgivningsdatum</a></td></tr></table></p>'
			+ '</td>'
			+ '<td width="120">'
			+ '<p><table><tr class="heading"><td><a style="color:#fff;" href="JavaScript:doSort(9)">'
			+ seriesSortImg
			+ '</a></td><td><a style="color:#000;" href="JavaScript:doSort(9)">Serie</a></td></tr></table></p>'
			+ '</td>';
	// $('#sokresult_list tr:last').after(html);
	for (j = 0; j < myBooks.length; j++) {

		var styleName = "even";
		if (j % 2 == 0) {
			styleName = "odd";
		}

		var aBook = myBooks[j];
		html += '<div class="audiodiv" id="audiodiv'+aBook.id+'" ></div> ';
		html += '<tr class="' + styleName + '">';
		// html += '<td><img src="/images/buttons/smallplay.png" border="0"
		// onclick="javascript:play('+aBook.id+', \'splayer'+j+'\')/></td>';
		//html += '<td><div class="bookplaysmallknapp" id="smallplayer' + j
		//		+ '" onclick="javascript:playSmall(' + aBook.id
		//		+ ', \'smallplayer' + j + '\')"></div></td>';
		html += '<td style="padding:0px 0px 0px 3px;">';
		html += '<p>'+aBook.title+'</p>';
		html += "</td>";
		html += "<td>";
		html += aBook.author;
		html += "</td>";
		html += "<td>";
		html += aBook.category;
		html += "</td>";
		html += "<td>";
		html += aBook.releaseDate;
		html += "</td>";
		html += "<td>";
		html += aBook.series + ' '
				+ aBook.seriesOrder ;
		html += "</td>";

	}
	// $('#sokresult_list tr:last').after(html);
	html += "</table>";
	var newdiv = document.createElement('div');
	newdiv.innerHTML = html;
	ni.appendChild(newdiv);

}

function buildTextTable() {

	var sortImg = '';
	if (!sortUp) {
		sortImg = '<img src="gfx/sortascending.png" style="padding:3px 3px 3px 0px;">';
	} else {
		sortImg = '<img src="gfx/sortdecending.png" style="padding:3px 3px 3px 0px;">';
	}
	var titleSortImg = '';
	var authorSortImg = '';
	var narratorSortImg = '';
	var categorySortImg = '';
	var popularitySortImg = '';
	var lengthSortImg = '';
	var gradeSortImg = '';
	var releaseSortImg = '';
	var seriesSortImg = '';

	if (currentSortColumn == 1) {
		titleSortImg = sortImg;
	} else if (currentSortColumn == 2) {
		authorSortImg = sortImg;
	} else if (currentSortColumn == 3) {
		narratorSortImg = sortImg;
	} else if (currentSortColumn == 4) {
		categorySortImg = sortImg;
	} else if (currentSortColumn == 5) {
		lengthSortImg = sortImg;
	} else if (currentSortColumn == 6) {
		popularitySortImg = sortImg;
	} else if (currentSortColumn == 7) {
		releaseSortImg = sortImg;
	} else if (currentSortColumn == 8) {
		gradeSortImg = sortImg;
	} else if (currentSortColumn == 9) {
		seriesSortImg = sortImg;
	}

	var ni = document.getElementById('sokresult_list');
	var html = '<table width="720px"><tr class="first">'
			+ '<td width="10">'
			+ ''
			+ '</td>'
			+ '<td width="170">'
			+ '<table><tr class="heading"><td>&nbsp;<a href="JavaScript:doSort(1);">'
			+ titleSortImg
			+ '</a></td><td><a  style="color:#000;" href="JavaScript:doSort(1);">Titel</a></td></tr></table></p>'
			+ '</td>'
			+ '<td width="60">'
			+ '<p><table><tr class="heading"><td><a href="JavaScript:doSort(2);document.scrollToTop(0,0);">'
			+ authorSortImg
			+ '</a></td><td><a style="color:#000;" href="JavaScript:doSort(2);document.scrollToTop(0,0);">Författare</a></td></tr></table></p>'
			+ '</td>'
			+ '<td width="60">'
			+ '<p><table><tr class="heading"><td><a style="color:#fff;" href="JavaScript:doSort(3)">'
			+ narratorSortImg
			+ '</a></td><td><a style="color:#000;" href="JavaScript:doSort(3)">Uppläsare</a></td></tr></table></p>'
			+ '</td>'
			+ '<td width="100">'
			+ '<p><table><tr class="heading"><td><a style="color:#fff;" href="JavaScript:doSort(4)">'
			+ categorySortImg
			+ '</a></td><td><a style="color:#000;" href="JavaScript:doSort(4)">Kategori</a></td></tr></table></p>'
			+ '</td>'
			+ '<td width="120">'
			+ '<p><table><tr class="heading"><td><a style="color:#fff;" href="JavaScript:doSort(9)">'
			+ seriesSortImg
			+ '</a></td><td><a style="color:#000;" href="JavaScript:doSort(9)">Serie</a></td></tr></table></p>'
			+ '</td>';

	// $('#sokresult_list tr:last').after(html);
	for (j = 0; j < myBooks.length; j++) {

		var styleName = "even";
		if (j % 2 == 0) {
			styleName = "odd";
		}

		var aBook = myBooks[j];
		html += '<div class="audiodiv" id="audiodiv'+aBook.id+'" ></div> ';
		html += '<tr class="' + styleName + '">';
		// html += '<td><img src="/images/buttons/smallplay.png" border="0"
		// onclick="javascript:play('+aBook.id+', \'splayer'+j+'\')/></td>';
		html += '<td><div class="bookplaysmallknapp" id="smallplayer' + j
				+ '" onclick="javascript:playSmall(' + aBook.id
				+ ', \'smallplayer' + j + '\')"></div></td>';
		html += '<td style="padding:0px 0px 0px 3px;">';
		html += '<p><a href="/viewBook.action?scolumn=' + currentSortColumn
				+ '&sup=' + sortUp + '&hide=true&query=' + encodeURI(query)
				+ '&programId=' + aBook.id + '">' + aBook.title + '</a></p>';
		html += "</td>";
		html += "<td>";
		html += '<a href="JavaScript:doSearch(\''
				+ aBook.author.replace(/\'/g, " ")
				+ '\');window.scrollBy(0,-5000);">' + aBook.author + '</a>';
		html += "</td>";
		html += "<td>";
		html += '<a href="JavaScript:doSearch(\''
				+ aBook.narrator.replace(/\'/g, " ")
				+ '\');window.scrollBy(0,-5000);">' + aBook.narrator + '</a>';
		html += "</td>";
		html += "<td>";
		html += '<a href="JavaScript:doSearch(\'' + aBook.category
				+ '\');window.scrollBy(0,-5000);">' + aBook.category + '</a>';
		html += "</td>";
		html += "<td>";
		html += '<a href="JavaScript:doSearch(\'' + aBook.series
				+ '\');window.scrollBy(0,-5000);">' + aBook.series + ' '
				+ aBook.seriesOrder + '</a>';
		html += "</td>";

	}
	// $('#sokresult_list tr:last').after(html);
	html += "</table>";
	var newdiv = document.createElement('div');
	newdiv.innerHTML = html;
	ni.appendChild(newdiv);

	// var ni2 = document.getElementById('vitboxtoppen');
	// ni2.innerHTML = 'Din sökning på "' + unescape(query) + '" resulterade i
	// '+ myBooks.length +' träffar';

}

function buildIconTable() {
	var isTouch = false;
	if(navigator.userAgent.indexOf("iPad") != -1 || navigator.userAgent.indexOf("iPod") != -1 || navigator.userAgent.indexOf("iPhone") != -1 || navigator.userAgent.indexOf("Android") != -1){
		isTouch = true;
	}
		
	var html = '';
	var index = 1;

	var ni = document.getElementById('sokresult_picholder');
	for (j = 0; j < myBooks.length; j++) {
		var aBook = myBooks[j];

		var betyg = "Betyg " + aBook.grade + " av 5";
		if (aBook.grade == 0) {
			betyg = "Ej betygsatt";
		}
		
		html += '<div class="audiodiv" id="audiodiv'+aBook.id+'" ></div> ';		
		html += '<div class="booksearch floatleft">';
		html += '<div class="bookplayknapp" id="splayer' + j
				+ '" onclick="javascript:play(' + aBook.id + ', \'splayer' + j
				+ '\')"></div>';
	
		html += '<a href="viewBook.action?query=' + encodeURI(query)
				+ '&hide=true&programId=' + aBook.id + '">';
		// html += '<span title="cssbody=[hoverbody] cssheader=[hoverheader]
		// header=[&nbsp;&nbsp;'+aBook.title+'] body=[av Kalle <br> med Balle
		// <hr>'+aBook.description+']"
		// style="vertical-align:middle;font-family:arial;font-size:20px;font-weight:bold;color:#ffffff;cursor:pointer">';

		if(!isTouch){
		html += '<span title="cssbody=[hoverbody] cssheader=[hoverheader] header=[&nbsp;&nbsp;'
				+ aBook.title
				+ '] body=[av <b>'
				+ aBook.author.replace(/\"/g,"'")
				+ '</b><br>med <b>'
				+ aBook.narrator.replace(/\"/g,"'")
				+ '</b><div class=\'clear\'></div><hr style=\'border: 1px solid #1b83af\' /><span id=\'descr\'>'
				+ aBook.description.replace(/\"/g,"'")
				+ '</span><hr style=\'border: 1px solid #1b83af\' />'
				+ aBook.length
				+ '<span style=\'float:right\'>'
				+ betyg
				+ '</span>] style="vertical-align:middle;font-family:arial;font-size:20px;font-weight:bold;color:#ffffff;cursor:pointer">';
		}
		html += '<img src="images/110x110/' + getCoverName(aBook.id) + '"></a>';
		html += '</span><div class="hitliststars">';
		html += getStars(aBook.grade);
		html += '</div>';
		html += '<div class="hitlisttitle">';
		html += '<p><a href="viewBook.action?query=' + query
				+ '&hide=true&programId=' + aBook.id + '">' + aBook.title
				+ '</a></p>';
		html += '</div>';

		html += '</div>';

		if (index++ % 6 == 0) {

			html += '<div class="clear"></div>';
		}
		
	

		// html += '<td><img
		// src="/images/110x110/'+getCoverName(aBook.id)+'"></td>"';

	}

	
	var newdiv = document.createElement('div');
	newdiv.innerHTML = html;
	ni.appendChild(newdiv);

	// var ni2 = document.getElementById('vitboxtoppen');
	// ni2.innerHTML = 'Din sökning på "' + unescape(query) + '" resulterade i
	// '+ myBooks.length +' träffar';

}

function buildIconCommingBooksTable() {

	var isTouch = false;
	if(navigator.userAgent.indexOf("iPad") != -1 || navigator.userAgent.indexOf("iPod") != -1 || navigator.userAgent.indexOf("iPhone") != -1 || navigator.userAgent.indexOf("Android") != -1){
		isTouch = true;
	}
		
	var html = '';
	var index = 1;

	var ni = document.getElementById('sokresult_picholder');
	for (j = 0; j < myBooks.length; j++) {
		var aBook = myBooks[j];

							
		html += '<div class="booksearch floatleft">';					
		
		html += '<span title="cssbody=[hoverbody] cssheader=[hoverheader] header=[&nbsp;&nbsp;'
			+ aBook.title
			+ '] body=[av <b>'
			+ aBook.author.replace(/\"/g,"'")
			+ '</b><br>med <b>'
			+ aBook.narrator.replace(/\"/g,"'")
			+ '</b><div class=\'clear\'></div><hr style=\'border: 1px solid #1b83af\' /><span id=\'descr\'>'
			+ aBook.popularity.replace(/\"/g,"'")
			+ '<div class=\'clear\'></div><span class=\'copyr\' style=\'float:right;padding-right:10px\'>&copy;' + aBook.category + '</span>'
			+ '</span>] style="vertical-align:middle;font-family:arial;font-size:20px;font-weight:bold;color:#ffffff;cursor:pointer">';
		html += '<img width="110" height="110" onerror="ImgError(this);" src="http://images.bokinfo.se/medium/' + aBook.length + '.jpg">';
		html += '<div class="hitliststars">';
		html += aBook.releaseDate;
		html += '</div>';
		html += '<div class="hitliststars">'
		html += '<p>' + aBook.title
				+ '</p>';
		html += '</div>';

		html += '</div>';

		if (index++ % 6 == 0) {

			html += '<div class="clear"></div>';
		}
	}


	var newdiv = document.createElement('div');
	newdiv.innerHTML = html;
	ni.appendChild(newdiv);	
}

function getCoverName(bookId) {
	var name = '' + bookId;
	for (i = name.length; i < 5; i++) {
		name = '0' + name;
	}
	return name + ".jpg";
}

function addRowToTablexxx(aBook) {

	var tbl = document.getElementById('sokresult_list');
	var row = document.createElement('tr');
	tbl.appendChild(row);
	// title, author, narrator, category, length, popularity, releaseDate, grade
	// cell 1
	var td = document.createElement('td');
	// var cell8 = row.insertCell(7);
	// var textNode8 = document.createTextNode(aBook.grade);
	// cell8.appendChild(textNode8);
	td.innerHTML = '<p><a href="/viewBook.action?programId=' + aBook.id + '">'
			+ aBook.title + '</a></p>';
	row.appendChild(td);

	// cell 2
	var cell2 = row.insertCell(1);
	var textNode2 = document.createTextNode(aBook.author);
	cell2.appendChild(textNode2);

	// cell 3
	var cell3 = row.insertCell(2);
	var textNode3 = document.createTextNode(aBook.narrator);
	cell3.appendChild(textNode3);

	// cell 4
	var cell4 = row.insertCell(3);
	var textNode4 = document.createTextNode(aBook.category);
	cell4.appendChild(textNode4);

	// cell 5
	var cell5 = row.insertCell(4);
	var textNode5 = document.createTextNode(aBook.length);
	cell5.appendChild(textNode5);

	// cell 6
	var cell6 = row.insertCell(5);
	var textNode6 = document
			.createTextNode(getPopularityString(aBook.popularity));
	cell6.appendChild(textNode6);

	// cell 7
	var cell7 = row.insertCell(6);
	var textNode7 = document.createTextNode(aBook.releaseDate);
	cell7.appendChild(textNode7);

	// cell 8
	var td = document.createElement('td');
	// var cell8 = row.insertCell(7);
	// var textNode8 = document.createTextNode(aBook.grade);
	// cell8.appendChild(textNode8);
	td.innerHTML = '<a href="http://www.axis.se">axis</a>';
	row.appendChild(td);

}

// *******

function drawGrid(rows, cols) {
	var oTbl = document.createElement("Table");
	for (i = 0; i < rows; i++) {
		var oTR = oTbl.insertRow(i);
		for (j = 0; j < cols; j++) {
			var oTD = oTR.insertCell(j);
			oTD.InnerHTML = " ";
		}
	}
	document.body.appendChild(oTbl);
}

// **

function removeRows() {

	var mydiv = document.getElementById('sokresult_picholder');
	while (mydiv.hasChildNodes()) {
		mydiv.removeChild(mydiv.lastChild);
	}
	mydiv = document.getElementById('sokresult_list');
	while (mydiv.hasChildNodes()) {
		mydiv.removeChild(mydiv.lastChild);
	}
}

function assembleBook(bookRow) {

	var bar = bookRow.split("|");

	// var str="Visit Microsoft!";
	// document.write(str.replace(/microsoft/i, "W3Schools"));
	for ( var i = 0; i < bar.length; i++) {
		return new book(bar[0], bar[1], bar[2], bar[3], bar[4], bar[5], bar[6],
				bar[7], bar[8], bar[10], bar[11], bar[12], bar[13]);
	}
}

function book(id, title, author, narrator, category, length, popularity,
		releaseDate, grade, length2, series, seriesOrder, description) {

	this.id = id;
	this.title = title;
	this.author = author;
	this.narrator = narrator;
	this.category = category;
	this.length = length;
	this.popularity = popularity;
	this.releaseDate = releaseDate;
	this.grade = grade;
	this.length2 = length2;
	this.series = series;
	this.seriesOrder = seriesOrder;
	this.description = description;
}

var stopInsert = false;
_bsn.AutoSuggest.prototype.createList = function(arr) {

	myBooks = [];
	stopInsert = false;

	removeRows();

	var pointer = this;
			
	if (arr.length == 0) {
		// show now hits
		buildNoHitsTable();

		$("#ajax-loader_img").hide();
		return;
	}
	/*
	 * if(!sortUp){ document.getElementById('sortimg').src =
	 * "images/buttons/listsiconactive.png"; }else{
	 * document.getElementById('sortimg').src =
	 * "images/buttons/listsiconactive.png"; }
	 */
	for ( var i = 0; i < arr.length && !stopInsert; i++) {
		arr[i] = arr[i].replace(/\+/g, " ");
		myBooks[i] = assembleBook(unescape(arr[i]));

	}

	// buildTextTable();
	var scolumn = GetCookie('scolumn');
	var sup = GetCookie('sup');

	if (!isNaN(parseInt(scolumn))) {
		currentStopColumn = parseInt(scolumn);
		stopUp = sup;
	} else {
		currentStopColumn = 1;
	}

	doSort(currentStopColumn);
	changeSort = true;
	stopInsert = false;
	$("#ajax-loader_img").hide();
	var pos = _bsn.DOM.getPos(this.fld);

	var TAB = 9;
	var ESC = 27;
	var KEYUP = 38;
	var KEYDN = 40;
	var RETURN = 13;

	this.fld.onkeydown = function(ev) {
		var key = (window.event) ? window.event.keyCode : ev.keyCode;

		switch (key) {
		case TAB:
			pointer.setHighlightedValue();
			break;

		case RETURN:
			pointer.setHighlightedValue();
			break;

		case ESC:
			pointer.clearSuggestions();
			break;

		case KEYUP:
			pointer.changeHighlight(key);
			return false;
			break;

		case KEYDN:
			pointer.changeHighlight(key);
			return false;
			break;
		}

	};

	this.iHighlighted = 0;

	// remove autosuggest after an interval
	//
	clearTimeout(this.toID);
	var pointer = this;
	this.toID = setTimeout(function() {
	}, this.oP.timeout);
}

_bsn.AutoSuggest.prototype.createListOrig = function(arr) {
	// clear previous list
	//
	this.clearSuggestions();

	// create and populate ul
	//
	var ul = _bsn.DOM.createElement("ul", {
		id : this.idAs,
		className : this.oP.className
	});

	var pointer = this;
	for ( var i = 0; i < arr.length; i++) {
		var a = _bsn.DOM.createElement("a", {
			href : "#"
		}, unescape(arr[i]));
		a.onclick = function() {
			pointer.setValue(this.childNodes[0].nodeValue);
			return false;
		}
		var li = _bsn.DOM.createElement("li", {}, a);
		ul.appendChild(li);
	}

	var pos = _bsn.DOM.getPos(this.fld);
	ul.style.left = pos.x + "px";
	ul.style.top = (pos.y + this.fld.offsetHeight) + "px";
	ul.style.width = this.fld.offsetWidth + "px";
	ul.onmouseover = function() {
		pointer.killTimeout()
	}
	ul.onmouseout = function() {
		pointer.resetTimeout()
	}

	document.getElementsByTagName("body")[0].appendChild(ul);

	if (ul.offsetHeight > this.oP.maxheight && this.oP.maxheight != 0) {
		ul.style['height'] = this.oP.maxheight;
	}

	var TAB = 9;
	var ESC = 27;
	var KEYUP = 38;
	var KEYDN = 40;
	var RETURN = 13;

	this.fld.onkeydown = function(ev) {
		var key = (window.event) ? window.event.keyCode : ev.keyCode;

		switch (key) {
		case TAB:
			pointer.setHighlightedValue();
			break;

		case RETURN:
			pointer.setHighlightedValue();
			break;

		case ESC:
			pointer.clearSuggestions();
			break;

		case KEYUP:
			pointer.changeHighlight(key);
			return false;
			break;

		case KEYDN:
			pointer.changeHighlight(key);
			return false;
			break;
		}

	};

	this.iHighlighted = 0;

	// remove autosuggest after an interval
	//
	clearTimeout(this.toID);
	var pointer = this;
	this.toID = setTimeout(function() {
		pointer.clearSuggestions()
	}, this.oP.timeout);
}

_bsn.AutoSuggest.prototype.changeHighlight = function(key) {
	var list = _bsn.DOM.getElement(this.idAs);
	if (!list)
		return false;

	if (this.iHighlighted > 0)
		list.childNodes[this.iHighlighted - 1].className = "";

	if (key == 40)
		this.iHighlighted++;
	else if (key = 38)
		this.iHighlighted--;

	if (this.iHighlighted > list.childNodes.length)
		this.iHighlighted = list.childNodes.length;
	if (this.iHighlighted < 1)
		this.iHighlighted = 1;

	list.childNodes[this.iHighlighted - 1].className = "highlight";

	// alert(
	// list.childNodes[this.iHighlighted-1].firstChild.firstChild.nodeValue );

	this.killTimeout();
}

_bsn.AutoSuggest.prototype.killTimeout = function() {
	clearTimeout(this.toID);
}

_bsn.AutoSuggest.prototype.resetTimeout = function() {
	clearTimeout(this.toID);
	var pointer = this;
	this.toID = setTimeout(function() {
		pointer.clearSuggestions()
	}, 1000);
}

_bsn.AutoSuggest.prototype.clearSuggestions = function() {
	if (document.getElementById(this.idAs))
		_bsn.DOM.removeElement(this.idAs);
	this.fld.onkeydown = null;
}

_bsn.AutoSuggest.prototype.setHighlightedValue = function() {
	if (this.iHighlighted) {
		this.fld.value = document.getElementById(this.idAs).childNodes[this.iHighlighted - 1].firstChild.firstChild.nodeValue;
		this.killTimeout();
		this.clearSuggestions();
	}
}

_bsn.AutoSuggest.prototype.setValue = function(val) {
	this.fld.value = val;
	this.resetTimeout();
}

/** ******** JON ********** */

function fireEvent(element, eventName) {
	evt = document.getElementById(element)[eventName];

	if (typeof (evt) == "function") {
		document.getElementById(element)[eventName]();
	} else {
	}
}

function scrollToTop() {
	scroll_clipper.scrollTop = 0;
}

function onClick() {

	$('#searcharea').show('fast');
	$('#rounded_holder_main').show('fast');
	if ("Sök bland alla ljudböcker" == document
			.getElementById('searchFieldTop').value) {
		document.getElementById('searchFieldTop').value = "";
		document.getElementById('searchFieldTop').style.color = "#000";
	}
}

function copyQuery() {
	// var q = document.getElementById('searchFieldTop').value;
	// document.getElementById('searchFieldTop').value = q;
	// fireEvent("searchFieldTop", "onkeyup");
}

function copyQueryToTop() {
	// var q = document.getElementById('searchFieldTop').value;
	// document.getElementById('searchFieldTop').value = q;
}

function onClickTop() {

	// $('#searcharea').show('fast');

	// if ("Sök bland alla ljudböcker" ==
	// document.getElementById('searchFieldTop').value) {
	// document.getElementById('searchFieldTop').value = "";
	// document.getElementById('searchFieldTop').style.color = "#000";
	// }
}

// _bsn.AutoSuggest.prototype.doSearch = function(val){
function doSearch(val) {
	changeSort = false;
	theThing.fld.value = val;
	theThing.doAjaxRequest();
}

function doHideShow() {	
	if (hidden) {
		hidden = false;
		$('#searcharea').show('slow');
		$('#rounded_holder_main').show('fast');
	} else {
		// hidden = true;
		// $('#searcharea').hide('slow');
	}
}

function setListType(value) {
	
	listType = value;
	SetCookie('listType', listType);
	setListImg();
	removeRows();
	buildTable();
}

function setListImg() {
	if(document.getElementById('rowimg') != null){
		var value = GetCookie('listType');
		if (value == 1) {
			document.getElementById('rowimg').src = "images/buttons/listsiconactive.png";
			document.getElementById('iconimg').src = "images/buttons/boxesicon.png";
		} else {
			document.getElementById('rowimg').src = "images/buttons/listsicon.png";
			document.getElementById('iconimg').src = "images/buttons/boxesiconactive.png";
		}
	}
}

function setQuery(value) {
	query = value;
}

function setHide() {
	hidden = true;
}

function doLanguage() {
	/*
	 * if(document.getElementById('lang_se').checked){
	 * $("#svchoose").css("background-image", "url(/images/buttons/se.png)");
	 * }else{ $("#svchoose").css("background-image",
	 * "url(/images/buttons/segrey.png)"); };
	 * 
	 * if(document.getElementById('lang_uk').checked){
	 * $("#enchoose").css("background-image", "url(/images/buttons/uk.png)");
	 * }else{ $("#enchoose").css("background-image",
	 * "url(/images/buttons/ukgrey.png)"); };
	 */
	changeSort = false;
	theThing.doAjaxRequest();
}

function noenter() {
	return !(window.event && window.event.keyCode == 13);
}

decode = function(utftext) {

	var string = "";
	var i = 0;
	var c = c1 = c2 = 0;

	while (i < utftext.length) {

		c = utftext.charCodeAt(i);

		if (c < 128) {
			string += String.fromCharCode(c);
			i++;
		} else if ((c > 191) && (c < 224)) {
			c2 = utftext.charCodeAt(i + 1);
			string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
			i += 2;
		} else {
			c2 = utftext.charCodeAt(i + 1);
			c3 = utftext.charCodeAt(i + 2);
			string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6)
					| (c3 & 63));
			i += 3;
		}

	}

	return string;
}

function ImgError(source){
    source.src = "/images/nocover.png";
    source.onerror = "";
    return true;
}

function getStars(grade) {
	var on = '<img src="/gfx/star.png" border="0"></img>';
	var off = '<img src="/gfx/star_bright.png" border="0"></img>';
	var html = '';
	if (grade == 5) {
		html += on;
		html += on;
		html += on;
		html += on;
		html += on;
	} else if (grade == 4) {
		html += on;
		html += on;
		html += on;
		html += on;
		html += off;
	} else if (grade == 3) {
		html += on;
		html += on;
		html += on;
		html += off;
		html += off;
	} else if (grade == 2) {
		html += on;
		html += on;
		html += off;
		html += off;
		html += off;
	} else if (grade == 1) {
		html += on;
		html += off;
		html += off;
		html += off;
		html += off;
	} else if (grade == 0) {
		html += off;
		html += off;
		html += off;
		html += off;
		html += off;
	}

	return html;

}
