﻿function getElementsByClass(searchClass, node, tag) {
	var classElements = new Array();
	if (node == null)
		node = document;
	if (tag == null)
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	var x,j;
	for (x = 0, j = 0; x < elsLen; x++) {
		if (pattern.test(els[x].className) ) {
			classElements[j] = els[x];
			j++;
		}
	}
	return classElements;
}

function getChild(startParent) {
  var EndChild = startParent.firstChild ;
  while(EndChild.nodeType != 1){
	EndChild = EndChild.nextSibling ;
  }
  return EndChild;
}

var lists = new Array();
function toggleList() {
    var elm = this.parentNode.getElementsByTagName('div')[0];
    var d = elm.style.display;
    
    for (var i = 0; i < lists.length; i++) {
        lists[i].getElementsByTagName('div')[0].style.display = 'none';
    }

    elm.style.display = (d == 'block' ? 'none' : 'block');
}

/* Link Dropdown Replacement */
function replaceDDL()
{
	var i;
	var ddl = getElementsByClass('jsLinkList', null, 'ul');
	for (i = 0; i < ddl.length; i++) {
	   createLinkList(ddl[i]);
	}

	ddl = getElementsByClass('jsDropDown', null, 'select');
	for (i = 0; i < ddl.length; i++) {
	   var l = createDropDown(ddl[i]);
	   l.listIndex = i;
	   l.style.zIndex = (ddl.length * 2) - i;
	   lists.push(l);
	}
}

function createLinkList(input) {
    // link list container
    var list = document.createElement('div');
    list.className = 'LinkList';

    // link list items
    var items = document.createElement('div');
    for (i=0; i < input.childNodes.length; i++){
        var link = getChild(input.childNodes[i]);
        items.appendChild(link);
    }

    // link list textbox
    var lbl = document.createElement('label');
    var txt = document.createTextNode('Choose...');
    lbl.appendChild(txt);
    lbl.onclick = toggleList;
    list.appendChild(lbl);

    // drop down arrow
    var arr = document.createElement('img');
    arr.setAttribute('src', '/Images/WhiteDropDownArrow.gif');
    arr.onclick = toggleList;
    list.appendChild(arr);
    list.appendChild(items);

    // Replace the Link List Element
    input.parentNode.replaceChild(list,input);

}

function createDropDown(input) {
	var list = document.createElement('div');
	list.className = 'DropDown';

	var items = document.createElement('div');
	items.style.display = 'none'
	var txt, val, item;
	var txtNode = document.createTextNode('Please select...');
	for (var i=0; i < input.options.length; i++)
	{
		txt = input.options[i].text;
		val = input.options[i].value;
		if (input.options[i].selected) txtNode.nodeValue = txt;
		item = document.createElement('span');
		item.style.cursor = 'hand';
		item.style.cursor = 'pointer';
		item.text = txt;
		item.value = val;
		item.onclick = DDLCallback;
		item.appendChild(document.createTextNode(txt));
		items.appendChild(item);
	}

	// link list textbox
	var box = document.createElement('span');
	box.onclick = toggleList;
	box.appendChild(txtNode);
	list.appendChild(box);
	list.appendChild(items);

	// Replace the Link List Element
	input.parentNode.insertBefore(list, input);
	input.style.display = 'none';
	
	list.field = input;
	return list;
}

function DDLCallback()
{
	this.parentNode.style.display = 'none';
	var list = lists[this.parentNode.parentNode.listIndex];
	list.field.value = this.value;
	list.getElementsByTagName('span')[0].innerHTML = this.text;
	return false;
}

addLoadEvent(replaceDDL);