function setProdListImgPos() {
	/* BILDFIX FÖR VERTIKAL POSITIONERING AV PRODUKTLISTBILDER */	
	var divs = document.getElementsByTagName("div");
	var topPos = 0;
	
	for (var i=0; i<divs.length; i++) {
		if (divs[i].className == "productListImage") {
			if (divs[i].getElementsByTagName("a").length>0 && divs[i].getElementsByTagName("img").length>0) {
				topPos = 60 - Math.ceil(divs[i].getElementsByTagName("img")[0].height/2);
				topPos = (topPos > 0) ? topPos : 0;
				divs[i].getElementsByTagName("a")[0].style.position = "relative";
				divs[i].getElementsByTagName("a")[0].style.top = topPos + "px";
			}
		}
	}
}

function addScrolltop(lnk) {
	var lnkparts = lnk.href.split("/t/");
	var topscroll;

	if (document.documentElement && document.documentElement.scrollTop) {
		topscroll = parseInt(document.documentElement.scrollTop);
	} else if (document.body) {
		topscroll = parseInt(document.body.scrollTop);
	} else {
		topscroll = 0;
	}

  lnk.href = lnkparts[0] + "/o," + topscroll + "/t/" + lnkparts[1];
}

function postCheckoutForm() {
	var f = document.forms["checkoutForm"];
	if (!document.getElementById('confirmSubmit').checked) {
		alert('Du måste godkänna köpvillkoren för att handla.');
		return false;
	} else if (f.cellphone && !/^(\+)?[\d]{10,11}$/.test(f.cellphone.value)) {
		$(document).bind('beforeReveal.facebox', function() {
			$('#facebox .close_image').attr('src', '/images/btn_continue.png').css('marginTop', '5px');
		}).bind('close.facebox', function() {
			f.cellphone.value = $('#facebox input[name=cellphone]').val();
			f.action = '/p/action,2/t/checkout.html';
			f.submit();
		});
		jQuery.facebox({div: '#deliveryNoticeDiv'});
		return false;
	} else {
		f.action = '/p/action,2/t/checkout.html';
		f.submit();
	}
}

/* Ajax class for making requests */
var Ajax = new function() {
	/* private method */
	var getRequestObject = function() {
		var xmlHttp;
		try { // Firefox, Opera 8.0+, Safari
			xmlHttp = new XMLHttpRequest();
		} catch (e) { // Internet Explorer
			try {
				xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {
					alert("Your browser does not support AJAX!");
					return false;
				}
			}
		}
		return xmlHttp;
	}
	
	/* privileged function */
	this.makeTextRequest = function(url, handler) {
		var reqObj = getRequestObject();
		reqObj.onreadystatechange = function() {
			if (reqObj.readyState == 4 && typeof(handler) == "function") {
				handler(reqObj.responseText);
			}
		}
		
		reqObj.open("GET", url, true);
		reqObj.send(null);
	}

	/* privileged function */
	this.makeXMLRequest = function(url, handler) {
		var reqObj = getRequestObject();
		reqObj.onreadystatechange = function() {
			if ((reqObj.readyState == 4) && (typeof(handler) == "function")) {
				handler(reqObj.responseXML);
			}
		}
		reqObj.open("GET", url, true);
		reqObj.send(null);
	}
}

/* Add trim-methods to String-objects */
String.prototype.ltrim = function(chars) {
	chars = chars || "\\s";
	return this.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

String.prototype.rtrim = function(chars) {
	chars = chars || "\\s";
	return this.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

String.prototype.trim = function(chars) {
	return this.ltrim(chars).rtrim(chars);
}


/* Functions for reading and writing cookies */
function getCookie(c_name) {
	if (document.cookie.length >0 ) {
		c_start = document.cookie.indexOf(c_name + "=");
		if (c_start != -1) { 
			c_start = c_start + c_name.length + 1; 
			c_end = document.cookie.indexOf(";", c_start);
			if (c_end == -1) c_end = document.cookie.length;
			return unescape(document.cookie.substring(c_start, c_end));
		}
	}
	return "";
}

function setCookie(c_name,value,expiredays) {
	var exdate = new Date();
	exdate.setDate(exdate.getDate() + expiredays);
	
	document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString()) + "; path=/";
}

var Search = new function() {
	this.suggestionsHighlighted = false;
	this.latestSearchPhrase = "";
	
	this.checkKeyDown = function(e) {
		var keynum;
		if(window.event) {
			keynum = e.keyCode;
		} else if (e.which) {
			keynum = e.which;
		}
		
		var i, suggestionsDiv = document.getElementById("searchSuggestionsDiv");

		if (keynum == 32) { // space key
			return true;
		} else if (keynum == 40) { // key down
			if (suggestionsDiv.style.display == "block") {
				var found = false;
				var suggestions = suggestionsDiv.getElementsByTagName("div");
				for (i=0; i<suggestions.length; i++) {
					if (suggestions[i].className == "selected") {
						found = true;
						if (i+1 < suggestions.length) {
							suggestions[i].className = "";
							suggestions[i+1].className = "selected";
						}
						break;
					}
				}
				if (!found) {
					suggestions[0].className = "selected";
				}
			}
			return false;
		} else if (keynum == 38) { // key up
			if (suggestionsDiv.style.display == "block") {
				var found = false;
				var suggestions = suggestionsDiv.getElementsByTagName("div");
				for (i=0; i<suggestions.length; i++) {
					if (suggestions[i].className == "selected") {
						found = true;
						if (i > 0) {
							suggestions[i].className = "";
							suggestions[i-1].className = "selected";
						}
						break;
					}
				}
				if (!found) {
					suggestions[suggestions.length-1].className = "selected";
				}
			}
			return false;
		} else if (keynum == 27) { // Esc key
			if (suggestionsDiv.style.display == "block") {
				this.hideSuggestions();
				return false;		
			} else {
				return true;
			}
		} else if (keynum == 13) { // Enter key
			if (suggestionsDiv.style.display == "block") {
				var suggestions = suggestionsDiv.getElementsByTagName("div");
				for (i=0; i<suggestions.length; i++) {
					if (suggestions[i].className == "selected") {
						this.setSuggestion(suggestions[i].innerHTML);
						this.hideSuggestions();
						return false;
					}
				}
				this.hideSuggestions();
			}
			return true;
		}
	}

	this.checkKeyUp = function(e) {
		var keynum;
		if(window.event) {
			keynum = e.keyCode;
		} else if (e.which) {
			keynum = e.which;
		}
	
		var i, suggestionsDiv = document.getElementById("searchSuggestionsDiv");

		var sField = document.getElementById("searchField");
		if ((sField.value.trim().length > 2) && (sField.value.trim() != this.latestSearchPhrase)) {
			this.showSuggestions(sField.value.trim());
		}		
	}

	this.showSuggestions = function(phrase) {
		Ajax.makeXMLRequest("/p/phrase," + encodeURIComponent(phrase) + "/t/ajaxsearch.tpl", function(xmlObj) {
			var suggestions = xmlObj.documentElement.getElementsByTagName("Suggestion");
			var suggestionsDiv = document.getElementById("searchSuggestionsDiv");
			suggestionsDiv.innerHTML = "";
			for (i=0; i<suggestions.length; i++) {
				suggestionsDiv.innerHTML += '<div onmouseover=\'Search.highlightSuggestion(this);\' onclick="Search.setSuggestion(this.innerHTML); Search.hideSuggestions();">' + suggestions[i].childNodes[0].nodeValue + '</div>';
			}
			if (i > 0) {
				document.getElementById("searchSuggestionsDiv").style.display = "block";
			} else {
				Search.hideSuggestions();
			}
			Search.latestSearchPhrase = xmlObj.documentElement.getElementsByTagName("SearchPhrase")[0].childNodes[0].nodeValue; 
		});
	}

	this.setSuggestion = function(suggestion) {
		document.getElementById("searchField").value = suggestion;
		document.getElementById("searchField").focus();
	}

	this.highlightSuggestion = function(elem) {
		var suggestionsDiv = document.getElementById("searchSuggestionsDiv");
		var suggestions = suggestionsDiv.getElementsByTagName("div"); 
		if (elem.parentNode == suggestionsDiv) {
			for (i=0; i<suggestions.length; i++) {
				suggestions[i].className = (elem == suggestions[i]) ? "selected" : "";
			}
		}
	}

	this.hideSuggestions = function(checkHighlight) {
		if (checkHighlight && this.suggestionsHighlighted) {
			return;
		} else {
			document.getElementById("searchSuggestionsDiv").innerHTML = "";
			document.getElementById("searchSuggestionsDiv").style.display = "none";
		}
	}
}

$(document).ready(function() {
	$("#searchField").bind("focus", function() {
		$(this).addClass("active");
	}).bind("blur", function() {
		if ($(this).val() == "") {
			$(this).removeClass("active");
		}
	});
});