var sbHost = "http://www.stylebooker.com/";
//var sbHost = "http://192.168.66.4:3003/";
var sbCache = {};
var sbIndex = -1;
var sbResultElements;
var sbOriginalValue;
var querySuffix = (typeof(window.SBSuggestDefault) != 'undefined') ? ' ' + window.SBSuggestDefault : '';
function $sb(element) {
  if (typeof(element) == 'string')
    return document.getElementById(element);
  else
    return element;
}
function sbElement(tag, options, content) {
  var element = document.createElement(tag);
  for (option in options) {
    element.setAttribute(option, options[option]);
  }
  if (content) {
    var text = document.createTextNode(content);
    element.appendChild(text);
  }
  return element;
}
function sbTrim(text) {
  text = text.replace( /^\s+/g, "" );
  return text.replace( /\s+$/g, "" );
}
function sbEvent(evnt, elem, func) {
  elem = $sb(elem);
  if (elem.addEventListener)
    elem.addEventListener(evnt,func,false);
  else if (elem.attachEvent) {
    var r = elem.attachEvent("on"+evnt, func);
	  return r;
  }
}
function sbStop(e) {
  if (e && e.stopPropogation) e.stopPropogation();
  else if (window.event && window.event.cancelBubble)
    window.event.cancelBubble = true;
  if (e &&e.preventDefault) e.preventDefault();
  else if (window.event && window.event.returnValue)
    window.event.returnValue = false;
}
function sbEventElement(e) {
  var targ;
  if (!e) var e = window.event;
  if (e.target) targ = e.target;
  else if (e.srcElement) targ = e.srcElement;
  if (targ.nodeType == 3)
    targ = targ.parentNode;
    
  return targ;
}
function sbShow() {
  $sb('sb_autocomplete').style.display = 'block';
}
function sbHide() {
  $sb('sb_autocomplete').style.display = 'none';
}
function sbSearch() {
  var value = sbTrim($sb('sb_search_field').value);
  if (sbCache[value]) { sbResults(value, sbCache[value]); return false; }
  if (value.length == 0) return false;
  var script = document.createElement('script');
	document.getElementsByTagName('head')[0].appendChild(sbElement('script', { src: sbHost + 'widget_search?s=' + value }));
};
function sbResults(term, results) {
  if (!sbCache[term]) sbCache[term] = results;
	$sb('sb_autocomplete').innerHTML = '';
  if (results.length > 0) {
  	$sb('sb_autocomplete').appendChild(sbElement('ul', { id: 'sb_autocomplete_results'}));
  	for (var i=0; i < results.length; i++) {
  	  $sb('sb_autocomplete_results').appendChild(sbElement('li', { onmouseout: 'sbDeselect(this)', onmouseover: 'sbSelect(this)' }, results[i]));
  	};
  	sbShow();
  	sbResultElements = $sb('sb_autocomplete').firstChild.childNodes;
	}
	else sbHide();
};
function sbSelect(element) {
	$sb(element).className = 'selected';
};
function sbDeselect(element) {
	$sb(element).className = '';
};
function sbDeselectElements(elements) {
  for (var i = elements.length - 1; i >= 0; i--){
    elements[i].className = '';
  };
}
function sbSubmit(value) {
  var value = value ? value : $sb('sb_search_field').value;
	sbHide();
  window.open(sbHost + 'Suche?fulltext=' + value + querySuffix);
}
function sbMarkNext() {
	sbIndex = (sbIndex == sbResultElements.length -1) ? -1 : sbIndex+1;
	sbDeselectElements(sbResultElements);
	if (sbIndex > -1) {
		sbSelect(sbResultElements[sbIndex]);
		sbShow();
		$sb('sb_search_field').value = sbResultElements[sbIndex].innerHTML
	}
	else {
	  $sb('sb_search_field').value = sbOriginalValue;
		sbHide();
	}
};
function sbMarkPrevious() {
	sbIndex = (sbIndex == -1) ? sbResultElements.length -1  : sbIndex-1;
	sbDeselectElements(sbResultElements);
	if (sbIndex > -1) {
		sbSelect(sbResultElements[sbIndex]);
		sbShow();
		$sb('sb_search_field').value = sbResultElements[sbIndex].innerHTML
	}
	else {
	  $sb('sb_search_field').value = sbOriginalValue;
		sbHide();
	}
	return false;
};
sbEvent('click', window, function(event) {
  if ($sb('sb_autocomplete').style.display == 'block') {
    sbHide();
    var element = sbEventElement(event);
    if (element.tagName.toLowerCase() == 'li' && element.className == 'selected') {
      var value = element.innerHTML;
      sbSubmit(value);
    }
  }
});
function onkeydown(event) {
  if ($sb('sb_search_field').hasFocus) {
    switch(event.keyCode) {
      case 38:
        sbStop(event);
        break;
      case 40:
        sbStop(event);
        break;
    }
  }
}
function sbOnkeyup(event) {
  if ($sb('sb_search_field').hasFocus) {
    switch(event.keyCode) {
      case 27:
        sbHide();
        sbStop(event);
        sbIndex = -1;
        break;
      case 39:
        sbHide();
        sbStop(event);
        break;
      case 38:
        sbStop(event);
        sbMarkPrevious();
        break;
      case 40:
        sbStop(event);
        sbMarkNext();
        break;
      case 13:
        sbSubmit();
        break;
      default:
        sbOriginalValue = $sb('sb_search_field').value;
        sbSearch();
        break;
    }
  }
  else {
    sbSearch();
    if ($sb('sb_search_field').hasFocus && !$sb('sb_autocomplete').innerHTML.length == 0) {
      sbShow();
      sbStop(event);
    }
  }
}
document.onkeyup = function keyPress(event) {
  if (typeof(event) == "undefined") event = window.event;
  sbOnkeyup(event);
}
document.onkeydown = function keyPressDown(event) {
  if (typeof(event) == "undefined") event = window.event;
  onkeydown(event);
}