// dmSearch v1.0
// Double Metaphone Search - Suggest addon
// © 2010 VisiLogic

// This code may not be used in any other package than SCARAB
// Unauthorized reproduction or utilizing parts of this framework is strictly forbidden
// For questions, please contact tech@visilogic.eu

// DMSEARCH VARIABLES - DO NOT MODIFY UNLESS FAMILIAR WITH DMSEARCH OR YOU'RE CHUCK NORRIS.
var dmS_target;
var dmS_container;

// Visibility
var dmS_visible = false;
var dmS_init = false;
var dmS_hideTimer;

function dmS_doInit(target) {

	target.parentNode.parentNode.setAttribute("autocomplete", "off");

	target.setAttribute('onblur', 'dmS_hideCountdown()');
	target.setAttribute('onfocus', 'dmS_stopHideCountdown()');
	
	dmS_container = document.createElement('div');
	dmS_container.setAttribute('class', 'dmS_container');
	document.body.appendChild(dmS_container);
	dmS_init = true;
	
}


function dmS_suggest(target) {

	if(target) {
		if(!dmS_init) dmS_doInit(target);
		dmS_target = target;
		if(dmS_target.value) {
			$.get(('/dmSuggest/' + target.value + '&c=15'), function(data) { dmS_showSuggest(data); });
		} else dmS_hideSuggest();
	}
}


function dmS_showSuggest(data) {
	
	if(!dmS_visible) {
		dmS_visible = true;
		pos = dmS_findPos(dmS_target);	
		dmS_container.style.left = pos.left + "px";
		dmS_container.style.top = pos.top + "px";
		dmS_container.style.display = "block";
	}
	
	data = dmS_decodeData(eval('(' + data + ')'));
	
	if(data) {
	
		while(dmS_container.hasChildNodes()) dmS_container.removeChild(dmS_container.lastChild);
		
		for(var i = 0; i < data.length; i++) {
			var dmS_suggestRow = document.createElement('div');
			dmS_suggestRow.setAttribute('class', 'dmS_suggestRow');
			
			var dmS_suggestRowAnchor = document.createElement('a');
			dmS_suggestRowAnchor.setAttribute('class', 'dmS_suggestRowAnchor');
			dmS_suggestRowAnchor.setAttribute('href', '/artikel/' + data[i].product_id);
			
			dmS_suggestRowAnchor.innerHTML = ('<img src="/data/icons/' + data[i].category_tag+ '.png"/> ' + data[i].product_name);
			
			dmS_suggestRow.appendChild(dmS_suggestRowAnchor);
			dmS_container.appendChild(dmS_suggestRow);
		}
		
	} else dmS_hideSuggest();
	
}

function dmS_hideCountdown() {
	if(dmS_visible) dmS_hideTimer = setTimeout("dmS_hideSuggest()", 1000);
}

function dmS_stopHideCountdown() {
	clearTimeout(dmS_hideTimer);
}

function dmS_hideSuggest() {
	if(dmS_init&&dmS_visible) {
		dmS_container.style.display = "none";
		dmS_visible = false;
	}
}

function dmS_findPos(obj) {
  var pos = new Object;
  pos.left = 0;
  pos.top = 0;
	if (obj.offsetParent)	{
		while (obj.offsetParent) {
		  pos.left += obj.offsetLeft;
			pos.top  += obj.offsetTop;
			obj = obj.offsetParent;
		};
	}	else if (obj.x) {
	  pos.left = obj.x;
	  pos.top = obj.y;
	};
	return pos;
}

function dmS_decodeData(data) {
	for(var item in data) {
		var type = typeof data[item];
		if(type === 'object') dmS_decodeData(data[item]); else if(type === 'string') data[item] = decodeURIComponent(data[item]);
	}
	return data;
}
