﻿if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement)
{
  HTMLElement.prototype.insertAdjacentElement = function (where,parsedNode)
  { 
    switch (where)
    {
      case 'beforeBegin': 
      this.parentNode.insertBefore(parsedNode,this) 
      break; 
      case 'afterBegin': 
      this.insertBefore(parsedNode,this.firstChild);
      break; 
      case 'beforeEnd': 
      this.appendChild(parsedNode); 
      break; 
      case 'afterEnd': 
      if (this.nextSibling) 
      this.parentNode.insertBefore(parsedNode,this.nextSibling); 
      else this.parentNode.appendChild(parsedNode); 
      break; 
    } 
  } 

  HTMLElement.prototype.insertAdjacentHTML = function (where,htmlStr)
  { 
    var span= document.createElement('span');
    span.innerHTML= htmlStr;
    this.insertAdjacentElement(where,span) 
  } 

  HTMLElement.prototype.insertAdjacentText = function (where,txtStr) 
  { 
    var parsedText = document.createTextNode(txtStr);
    this.insertAdjacentElement(where,parsedText);
  } 
}

/*Comma Selector*/
function _CommaSelector_GetCurrentWordList(wordsElement) {
	var result = new Array();
	var words = wordsElement.value.split('$');
	for (var i = 0; i < words.length; i++)
		if (words[i] != '')
		result.push(words[i]);

	return result;
}

function CommaSelector_RefreshWords(idPrefix) {
	var wordsElement = document.getElementById(idPrefix + 'ItemsHiddenField');
	var wordsHolderElement = document.getElementById(idPrefix + 'MonitorPanel');
	var html = '';
	var wordList = _CommaSelector_GetCurrentWordList(wordsElement);
	for (var i = 0; i < wordList.length; i++)
		if (wordList[i] && wordList[i] != '') {
		html += '<a href="javascript:CommaSelector_RemoveWord( \'' + idPrefix + '\', \'' + wordList[i] + '\')">' + wordList[i] + '</a>';
	}

	wordsHolderElement.innerHTML = html;
}

function _CommaSelector_Normalize(word) {
	word = word.replace(/'/gi, " ");
	word = word.replace(/"/gi, " ");
	return word;
}

function CommaSelector_AddWord(idPrefix, maxWords, acceptDuplicateWord) {
	var inputElement = document.getElementById(idPrefix + 'InputTextBox');
	var wordsElement = document.getElementById(idPrefix + 'ItemsHiddenField');
	var word = _CommaSelector_Normalize(inputElement.value);
	var wordList = _CommaSelector_GetCurrentWordList(wordsElement);
	if (maxWords != 0 && wordList.length >= maxWords)
		return;
	if (!acceptDuplicateWord)
		for (var i = 0; i < wordList.length; i++)
			if (word == wordList[i])
				return;
	if (wordsElement.value.length > 0 && wordsElement.value[wordsElement.value.length - 1] != '$')
		wordsElement.value += '$';
	wordsElement.value += word + '$';
	CommaSelector_RefreshWords(idPrefix);
	inputElement.value = '';
}

function CommaSelector_RemoveWord(idPrefix, word) {
	var wordsElement = document.getElementById(idPrefix + 'ItemsHiddenField');
	var wordList = _CommaSelector_GetCurrentWordList(wordsElement);
	wordsElement.value = '';
	for (var i = 0; i < wordList.length; i++)
			if (word != wordList[i])
				wordsElement.value += wordList[i] + '$';
	CommaSelector_RefreshWords(idPrefix);
}
/*End Comma Selector*/
/*Hierarchy Selector*/
function HierarchySelector_ToggleSelect(idPrefix, element, title, value, maxItems) {
	var valuesElement = document.getElementById(idPrefix + 'SelectedValuesHiddenField');
	var titlesElement = document.getElementById(idPrefix + 'SelectedTitlesHiddenField');
	var values = valuesElement.value.split('$');
	var titles = titlesElement.value.split('$');

	if (element.className == 'lcb-off') {
		if (maxItems > 0 && values.length > maxItems)
			return;
		element.className = 'lcb-on';
		valuesElement.value += '$' + value;
		titlesElement.value += '$' + title;
	}
	else {
		element.className = 'lcb-off';
		valuesElement.value = '';
		titlesElement.value = '';
		for (var index = 0; index < values.length; index++) {
			if (values[index] != value) {
				valuesElement.value += '$' + values[index];
				titlesElement.value += '$' + titles[index];
			}
		}
		valuesElement.value = valuesElement.value.substring(1, valuesElement.value.length);
		titlesElement.value = titlesElement.value.substring(1, titlesElement.value.length);
	}
}

/*End Hierarchy Selector*/
/* Begin Combobox */
function ComboBox_Change(event, inputElement) {
	if (event.keyCode == 37 || event.keyCode == 39)
		return;
	if (event.keyCode == 27) {
		ComboBox_CloseContainer(inputElement.id);
		return;
	}
	if (event.keyCode == 38) {
		ComboBox_SelectNextResult(inputElement, -1);
		return;
	}
	if (event.keyCode == 40) {
		ComboBox_SelectNextResult(inputElement, 1);
		return;
	}
	if (event.keyCode == 13) {
		var selectedIndex = inputElement.getAttribute('selectedIndex') * 1;
		if (isNaN(selectedIndex))
			selectedIndex = -1;

		var currentResult = document.getElementById(inputElement.id + "Result" + selectedIndex);
		if (currentResult) {
			ComboBox_Select(inputElement.id);

			return false;
		}

		return true;
	}

	if (inputElement.getAttribute('searchEnabled') == 'false')
		return;

	inputElement.setAttribute('searchEnabled', 'false');
	window.setTimeout("document.getElementById('" + inputElement.id + "').setAttribute('searchEnabled', 'true');", inputElement.getAttribute('searchLag') * 1);


	var containerDiv = document.getElementById(inputElement.id + 'ContainerDiv');
	var loadingDiv = document.getElementById(inputElement.id + 'LoadingDiv');
	var resultDiv = document.getElementById(inputElement.id + 'ResultDiv');

	if (inputElement.value == '') {
		containerDiv.className = 'container hide';
	}
	else {
		containerDiv.className = 'container show';
		loadingDiv.className = 'loading show';
		resultDiv.className = 'result hide';
	}

	ComboBox.OnInputChange(
		inputElement.getAttribute('callbackType'),
		inputElement.getAttribute('callbackMethod'),
		inputElement.id,
		inputElement.value,
		inputElement.getAttribute('callbackData'),
		LocoAjax.callback);

	return false;
}

function ComboBox_SelectNextResult(inputElement, offset) {
	var selectedIndex = inputElement.getAttribute('selectedIndex') * 1;
	if (isNaN(selectedIndex))
		selectedIndex = -1;

	var currentResult = document.getElementById(inputElement.id + "Result" + selectedIndex);
	if (currentResult)
		currentResult.className = "r";
	selectedIndex += offset;
	var result = document.getElementById(inputElement.id + "Result" + selectedIndex);
	if (!result) {
		selectedIndex = -1;
	}
	else
		result.className = "r selected";

	inputElement.setAttribute('selectedIndex', selectedIndex);
}

function ComboBox_ShowResult(prefix, results) {
	var inputElement = document.getElementById(prefix);
	var loadingDiv = document.getElementById(prefix + 'LoadingDiv');
	var resultDiv = document.getElementById(prefix + 'ResultDiv');

	loadingDiv.className = 'loading hide';
	resultDiv.className = 'result show';

	html = ComboBox_GetResultsHTML(prefix, results);
	resultDiv.innerHTML = html;
}

function ComboBox_CloseContainer(prefix) {
	var containerDiv = document.getElementById(prefix + 'ContainerDiv');
	containerDiv.className = 'container hide';
	var inputElement = document.getElementById(prefix);
	inputElement.setAttribute('selectedIndex', '-1');
}

function ComboBox_Select(prefix) {
	var inputElement = document.getElementById(prefix);
	var selectedIndex = inputElement.getAttribute('selectedIndex') * 1;
	if (isNaN(selectedIndex))
		selectedIndex = -1;

	var currentResult = document.getElementById(inputElement.id + "Result" + selectedIndex);
	if (currentResult) {
		var text = currentResult.getAttribute('text');
		inputElement.value = text;
	}

	ComboBox_CloseContainer(prefix);
}

function ComboBox_GetResultsHTML(prefix, results) {
	var resultHTML = '';

	for (var i = 0; i < results.length; i++) {
		resultHTML += '<div class="r" id="' + prefix + "Result" + i + '" text="' + results[i].text + '" >';
		resultHTML += '<a href="' + results[i].link1Href + '" class="link1" />';
		resultHTML += '<a href="' + results[i].link2Href + '" class="link2" />';
		resultHTML += '<a href="' + results[i].link3Href + '" class="link3" />';
		resultHTML += '<a href="javascript:ComboBox_Select(\'' + prefix + '\')" ><img src="' + results[i].thumbUrl + '" />' + results[i].text + '</a>';
		resultHTML += '</div>';
	}

	return resultHTML;
}
/* End Combobox */
