﻿var results = new Array();
var selected = -1;
var submitted = false;
var currentsearch = '';
var resultsvisible = false;
var noblur = false;
var pagestyle;
var processing = false;
var pending = false;
var userselected = false;

var delay = 300; //ms between keystrokes

String.prototype.trim = function(x) {
	if (x=='left')
		return this.replace(/^\s*/,'');
	if (x=='right')
		return this.replace(/\s*$/,'');
	if (x=='normalize')
		return this.replace(/\s{2,}/g,' ').trim();

	return this.trim('left').trim('right');
} 

function initPS() {
	results = new Array();
	selected = -1;
	submitted = false;
	currentsearch = '';
	resultsvisible = false;
	noblur = false;
	pagestyle;
	processing = false;
	pending = false;

	clearResults();
}

function selectItem(index) {
	noblur = false;
	if (userselected) {
		currentsearch = results[index];
	}
	results = new Array();
	submitForm();
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function disablePS() {
	noblur = false;
	clearResults();
	document.getElementById('psychicsearch').value = 'off';
	fetchResults('', '', '', true);
}

function isEnabled() {
	return (document.getElementById('psychicsearch').value == 'on');
}

function processData() {
	if (!pending) {
		if (results.length > 0) {
			var newHTML = '';
			var psroot = document.getElementById('psroot');
			var searchtext = document.getElementById('SokeOrd');
			var matchLength = stringcompare.length;
			var matchStart = 0;
			var tempMatch = '';
			stringcompare = stringcompare.toLowerCase();

			var ps = document.getElementById('ps');
			
			for (i=0;i<results.length;i++) {
//				alert('2:'+results[i]);
				tempMatch = results[i].toLowerCase();
				matchStart = tempMatch.indexOf(stringcompare);
				tempMatch = results[i].substring(0, matchStart) + '<b>' + results[i].substring(matchStart, matchStart + matchLength) + '</b>' + results[i].substring(matchStart + matchLength, results[i].length);
				newHTML += '<div id="result' + i + '" onclick="userselected=true;selectItem(' + i + ');" style="cursor:pointer;overflow:hidden;width:100%;padding:0px;color:#000000;" onmouseover="noblur=true;highlight(' + i + ');" onmouseout="noblur=false;unselect(' + i + ');">';
				newHTML += '<font size="-1"><nobr>' + tempMatch + '</nobr></font></div>';
			}

			resultsvisible = true;

			psroot.style.position = 'absolute';
			psroot.style.left = '412px';
			psroot.style.top = '33px';
			psroot.style.width = '350px';
			psroot.style.display = 'block';
			psroot.style.zIndex = 100;
			ps.innerHTML = newHTML;
		}
		else {
			clearResults();
		}
	}

	processing = false;
}
			
function validateData(e) {
	var keynum;
	var handled = false;

	if (isEnabled()) {
		if(window.event)
			keynum = e.keyCode;
		else if(e.which)
			keynum = e.which;
						
		// Escape
		if (keynum == 27) {
			noblur = false;
			userselected = false;
			hideResults();
			handled = true;
		}
		// Backspace
		else if (keynum == 8) {
			userselected = false;
			reloadData(e);
		}
		// Up Arrow
		else if (keynum == 38) {
			userselected = true;
			select(-1);
			handled = true;
		}
		// Down arrow
		else if (keynum == 40) {
			userselected = true;
			forceSearch();
			select(1);
			handled = true;
		}
		// Enter
		else if ((keynum == 13) && (selected >= 0)) {
			selectItem(selected);
			handled = true;
			submitForm();
		}
		else {
			noblur = false;
			userselected = false;
		}

		if (handled) {
			if(window.event)
				window.event.keyCode = 0;
						
			return false;
		}
	}
}

function reloadData(e) {
	var keynum;

	if (isEnabled()) {
		if(window.event)
			keynum = e.keyCode;
		else if(e.which)
			keynum = e.which;

		if ((keynum == null) || (keynum == 27)){
			if(window.event)
				window.event.keyCode = 0;

			return true;
		}
		else if ((keynum == 13) && (selected >= 0)) {
			if(window.event)
				window.event.keyCode = 0;
			
			return true;
		}
		else {
			pending = true;
			selected = -1;
			processRequest();
		}
	}
}

function highlight(index) {
	if (selected >= 0) {
		unselect(selected);
	}

	selected = index;

	var divX = document.getElementById('result' + selected);
	divX.style.backgroundColor = '#8BB6D6';
	divX.style.color = '#000000';
}

function select(direction) {
	var next = selected + direction;

	if ((next >= 0) && (next < results.length)) {
		if (selected >= 0)
			unselect(selected);

		highlight(next);
	}
}

function unselect(index) {
	if ((index >= 0) && (index < results.length)) {
		var divX = document.getElementById('result' + index);
		divX.style.backgroundColor = '#ffffff';
		divX.style.color = '#000000';
	}
}
			
function processRequest() {
	if ((!pending) && (!processing)) {
		current = document.getElementById('SokeOrd').value.trim().toLowerCase();
		if ((isEnabled()) && (!submitted) && (currentsearch != current)) {

			if (current) {
				processing = true;

				var searchtype = document.getElementById('kattypid').options[document.getElementById('kattypid').selectedIndex].value;
						
				currentsearch = current;
				if (current.length > 3) {
					fetchResults(searchtype, escape(current), !(isEnabled()));
				}
				else {
					processing = false;
					pending = false;
					userselected = false;
					clearResults();
				}
			}
			else {
				userselected = false;
				clearResults();
			}
		}
	}
	else {
		setTimeout("processRequest()", delay);
		pending = false;
	}	
}

function fetchResults(kattypid, search, disabled) {

	var url = document.location.protocol+'//' + window.location.hostname + '/servlet/autosok?kattypid=' + kattypid + '&sokeord=' + search + '&disable=' + disabled;
//	var url = 'http://10.0.0.104:8080/dvdhuset/autosok?kattypid=' + kattypid + '&sokeord=' + search + '&disable=' + disabled;
//	var url = 'http://' + window.location.hostname + '/dvdhuset/autosok?type=' + searchtype + '&producttype=' + producttype + '&search=' + search + '&disable=' + disabled;
//	var url = 'http://' + window.location.hostname + '/psychicsearch.asp?type=' + searchtype + '&producttype=' + producttype + '&search=' + search + '&disable=' + disabled;
	var head = document.getElementsByTagName('head')[0];
	var scriptTag = document.getElementById('psScript');

	if (scriptTag)
		head.removeChild(scriptTag);
								
	script = document.createElement('script');
	script.src = url;
	script.type = 'text/javascript';
	script.id = 'psScript';
	head.appendChild(script);
}
			
function hideResults() {
	if (!noblur) {
		selected = -1;
		resultsvisible = false;
		document.getElementById('psroot').style.display = 'none';
	}
}
			
function submitForm() {
	if (!submitted) {
		submitted = true;
		if (userselected) {
			document.getElementById('SokeOrd').value = currentsearch;
		}

		document.getElementById('psroot').style.display = 'none'
		document.getElementById('fSearch').submit();

		submitted = false;
		return true;
	}

	return false;
}

function clearResults() {
	hideResults();
	currentsearch = '';
	results = new Array();
}

function forceSearch() {
	if (isEnabled() && (!resultsvisible)) {
		if (results.length > 0) {
			processData();
		}
		else {
			var searchtext = document.getElementById('SokeOrd').value;

			if (searchtext) {
				currentsearch = '';
				processRequest(searchtext);
			}
		}
	}
}

function blinkHandlekurven(){
	setTimeout("document.getElementById('bghandlekurv').style.background = 'transparent'", 100);
	setTimeout("document.getElementById('bghandlekurv').style.background = '#8BB6D6'", 200);
	setTimeout("document.getElementById('bghandlekurv').style.background = 'transparent'", 300);
	setTimeout("document.getElementById('bghandlekurv').style.background = '#8BB6D6'", 400);
	setTimeout("document.getElementById('bghandlekurv').style.background = 'transparent'", 500);
	setTimeout("document.getElementById('bghandlekurv').style.background = '#8BB6D6'", 600);
	setTimeout("document.getElementById('bghandlekurv').style.background = 'transparent'", 700);
	setTimeout("document.getElementById('bghandlekurv').style.background = '#8BB6D6'", 800);
	setTimeout("document.getElementById('bghandlekurv').style.background = 'transparent", 900);
}


function startAjax(writeID, vars){
	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){
    			return false;
    		}    
  		}  
	}
  	xmlHttp.onreadystatechange=function(){
    		if(xmlHttp.readyState==4){
		      	if(xmlHttp.responseText != ""){
      				document.getElementById(writeID).innerHTML=xmlHttp.responseText;
		      	}else
      				document.getElementById(writeID).innerHTML="";
					
	      	}
	}
	vars+="&dummy=" + new Date().getTime();
	xmlHttp.open("GET", "ajax?"+vars, true);
	xmlHttp.send(vars);
}

function leggTilVare(vareID){
	startAjax('bghandlekurv', 'f=handlekurvleggtil&vareid='+vareID);
	bekreftWin("Varen er lagt i handlekurven");
	setTimeout("blinkHandlekurven()", 1500);
}

function leggTilFil(vareID,filID){
	startAjax('bghandlekurv', 'f=handlekurvleggtil&vareid='+vareID+'&filid='+filID);
	bekreftWin("Varen er lagt i handlekurven");
	setTimeout("blinkHandlekurven()", 1500);
}


function leggTilVareSpesialtilbud(vareID,SpesialtilbudID){
	startAjax('bghandlekurv', 'f=handlekurvleggtil&vareid='+vareID+'&spesialtilbudid='+SpesialtilbudID);
	bekreftWin("Varen er lagt i handlekurven");
	setTimeout("blinkHandlekurven()", 1500);
}

function leggTilFilSpesialTilbud(vareID,filID,SpesialtilbudID){
	startAjax('bghandlekurv', 'f=handlekurvleggtil&vareid='+vareID+'&filid='+filID+'&spesialtilbudid='+SpesialtilbudID);
	bekreftWin("Varen er lagt i handlekurven");
	setTimeout("blinkHandlekurven()", 1500);
}


function slettVare(vareID){
	startAjax('bghandlekurv', 'f=handlekurvslett&vareid='+vareID);
}

function slettFil(vareID,filID){
	startAjax('bghandlekurv', 'f=handlekurvslett&vareid='+vareID+'&filid='+filID);
}


function bekreftWin(msg){
	var cmD = document.getElementById("confirmMsgDiv");
	var cmDInner = document.getElementById("confirmMsgDivInner");
	var cmDInnerP = document.getElementById("confirmMsgDivInnerP");

	// VISE INFO AT VARE ER LAGT TIL
	centerElement('confirmMsgDiv');
	vis('confirmMsgDiv');
	cmDInnerP.innerHTML = msg;
	
	setTimeout('skjul(\'confirmMsgDiv\');', 1000);
}

function vis(objectID){
	document.getElementById(""+objectID+"").style.display = "block";
}

function skjul(objectID){
	document.getElementById(""+objectID+"").style.display = "none";
}

function centerElement(elementID, width, height){
	var leftIndent = topIndent = 0;
	var scrollArr = new Array();
	scrollArr = getScrollXY();
	
	/*var leftPos = scrollArr[0] + 650;
	var topPos = event.clientY + scrollArr[1];*/
	
	document.getElementById("confirmMsgDiv").style.left = 500+"px";
	document.getElementById("confirmMsgDiv").style.top = 400+"px";
	
	/*window.innerHeight/Width
    Provided by most browsers, but importantly, not Internet Explorer.
	document.body.clientHeight/Width
    Provided by many browsers, including Internet Explorer.*/
	if(document.documentElement.clientHeight){
		leftIndent = document.documentElement.clientWidth;
		topIndent = document.documentElement.clientHeight;
	}else if(window.innerHeight){
		leftIndent = window.innerWidth;
		topIndent = window.innerHeight;
	}
	
	
	leftIndent = (leftIndent/2)-120;
	leftIndent += scrollArr[0];
	
	topIndent = (topIndent/2)-70;
	topIndent += scrollArr[1];
	
	document.getElementById("confirmMsgDiv").style.left = leftIndent+"px";
	document.getElementById("confirmMsgDiv").style.top = topIndent+"px";
}

function getScrollXY() {
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return [ scrOfX, scrOfY ];
}



function Sok(KatTypID,KatNavn,SokeOrd,SokeOrdInput) {
	startAjax('sokresultat'+KatTypID, 'f=sok&katnavn='+KatNavn+'&kattypid='+KatTypID+'&sokeord='+SokeOrd+'&sokeordinput='+SokeOrdInput);
}

function SokSkuespiller(SokeOrd,SokeOrdInput) {
	startAjax('sokskuespiller', 'f=sokskuespiller&sokeord='+SokeOrd+'&sokeordinput='+SokeOrdInput);
}
function SokFiler(SokeOrd,SokeOrdInput) {
	startAjax('sokfiler', 'f=sokfiler&sokeord='+SokeOrd+'&sokeordinput='+SokeOrdInput);
}

function SokLabel(SokeOrd,SokeOrdInput) {
	startAjax('soklabel', 'f=soklabel&sokeord='+SokeOrd+'&sokeordinput='+SokeOrdInput);
}