var BASE_OPTIONS = new Array();
function updateTypesDropdown(checkbox)
{
	var itemList = function(){
		this.ITEMS = new Array();
		this.addCommaSeparatedItems = function(items){
			var tmp = items.split(',');
			for(var i=0;i<tmp.length;i++)
			{
				this.ITEMS[this.ITEMS.length] = tmp[i];
			}
		};
		this.itemPresent = function(item){
			for(var i=0;i<this.ITEMS.length;i++){
				if(this.ITEMS[i]==item){
					return true;
				}
			}
			return false;
		}
	};
	var itemsChecked = 0;
	var items = new itemList();
	var ul = checkbox.parentNode.parentNode;
	var cb = ul.getElementsByTagName('INPUT');
	for(var i=0;i<cb.length;i++)
	{
		if(cb[i].checked)
		{
			items.addCommaSeparatedItems(cb[i].title);
			itemsChecked++;
		}
	}
	
	var typeConceptsFieldset = document.getElementById('typeConcepts');
	var dds = typeConceptsFieldset.getElementsByTagName('SELECT');
	/**
	 * only adjust the last dropdown in the set
	 */
	var dd = dds[dds.length-1];

	if(BASE_OPTIONS.length==0)
	{
		var options = dd.options;
		for(var i=0;i<options.length;i++)
		{
			BASE_OPTIONS[i] = new Array(dd.options[i].text,dd.options[i].value);
		}
	}
	
	dd.innerHTML = '';
	/*
	var options = dd.getElementsByTagName('OPTION');
	for(var i=0;i<options.length;i++)
	{		
		dd.removeChild(options[i],true);				
	}
	*/
	
	for(var i=0;i<BASE_OPTIONS.length;i++)
	{
		var j = 0;
		if(items.itemPresent(BASE_OPTIONS[i][1]) || itemsChecked==0 || BASE_OPTIONS[i][1]=='')
		{
			var o = document.createElement("OPTION");
			o.text = BASE_OPTIONS[i][0];
			o.value = BASE_OPTIONS[i][1];
			if(document.all)
			{	
				dd.add(o);
			}
			else
			{
				dd.appendChild(o);
			}
		}
	}
	
}
function searchFormCloneDiv(img)
{
	var label = findParentLabel(img);
	var cloned = label.cloneNode(true);	
	
	label.parentNode.insertBefore(cloned,label.nextSibling);
	cloned.getElementsByTagName('SELECT')[0].style.display = '';
	cloned.getElementsByTagName('SELECT')[0].value = 'AND';
}

function liAddInputOver(li)
{
	document.getElementById('addIcon').style.display = 'inline';
	document.getElementById('addIcon').src = document.getElementById('addIcon').src;
	document.getElementById('addIcon').style.cursor = 'pointer';
	document.getElementById('addIcon').onclick = function(){
		addInputElements(li);
	};

	for(var i=0;i<li.childNodes.length;i++)
	{
		if(li.childNodes[i].nodeName!='DIV')
		{
			li.insertBefore(document.getElementById('addIcon'),li.childNodes[i]);
			return;
		}
	}

	li.appendChild(document.getElementById('addIcon'));
}
function addInputElements(li)
{
	var input = document.createElement('INPUT');
	input.type = 'text';
	input.name = 'value';
	input.id = li.title;

	if(li.getElementsByTagName('INPUT').length==0)
	{
		var div = document.createElement('DIV');
		div.style.display = 'block';
		div.style.marginLeft = '70px;';
		div.style.marginTop = '-16px';

		var select = createRelationSelector(li);
		select.style.marginLeft = '53px';

		input.onchange = function(){
			generateCQL();
		}
	}
	else
	{
		var div = li.getElementsByTagName('DIV')[0];

		var br = document.createElement('BR');
		div.appendChild(br);

		var operatorSelector = createOperatorSelector(li);
		div.appendChild(operatorSelector);

		var select = createRelationSelector(li);


		input.onchange = function(){
			generateCQL();
		}
	}


	div.appendChild(select);

	div.appendChild(input);
	li.appendChild(div);
}
function createOperatorSelector(li)
{
	var select = document.createElement('SELECT');
	select.name = 'operator';
	select.options[0] = new Option('AND','AND');
	select.options[1] = new Option('OR','OR');
	select.onchange = function(){
		generateCQL();
	}
	return select;
}
function createRelationSelector(li)
{
	var select = document.createElement('SELECT');
	select.name = 'relation';
	select.style.width = '75px';

	//var txt = new String(getInnerText(li));
	if(li.getAttribute('title').indexOf('date')>-1)
	{
		/**
		* Draw date options
		*/
		select.options[0] = new Option('=','=');
		select.options[1] = new Option('!=','!=');
		select.options[2] = new Option('Earlier than','Earlier than');
		select.options[3] = new Option('Later than','Later than');
	}
	else
	{
		select.options[0] = new Option('=','=');
		select.options[1] = new Option('!=','!=');
		select.options[2] = new Option('LIKE','LIKE');
		select.options[3] = new Option('NOT LIKE','NOT LIKE');
		select.options[4] = new Option('>','>');
		select.options[5] = new Option('<','<');
		select.options[6] = new Option('>=','<=');
	}
	
	select.onchange = function(){
		generateCQL();
	}

	return select;
}
function generateCQL()
{

	var parts = new Array();
	var partCount = 0;
	var o = ' AND ';
	var s = '';
	var lis = document.getElementsByTagName('LI');
	var textarea = document.getElementById('CQL');

	for(var i=0;i<lis.length;i++)
	{
		/**
		* If the li is in a treeView and it has no sub lists (to stop recursion) go for it
		*/
		if(lis[i].parentNode.className=='treeView' && lis[i].getElementsByTagName('UL').length==0)
		{

			var div = lis[i].getElementsByTagName('DIV');

			if(div.length>0)
			{
				div = div[0];
				var childNodes = div.childNodes;


				if(childNodes.length>0)
				{
					var operator = '';
					var relation = '';
					var value = '';
					var path = '';
					var divPart = '';

					for(var j=0;j<childNodes.length;j++)
					{

						value = '';

						switch(childNodes[j].name)
						{
							case 'operator':
							operator = ' '+childNodes[j].value+' ';
							break;

							case 'relation':
							relation = ' '+childNodes[j].value+' ';
							break;

							case 'value':
							value = childNodes[j].value;
							path = childNodes[j].id.split('/').join('__');
							break;
						}

						//alert(childNodes[j].name+' - '+value);

						if(value!='')
						{

							value = new String(value);
							value = value.split(' or ').join(path+' or ');
							value = value.split(' OR ').join(path+' OR ');
							value = value.split(' and ').join(path+' AND ');
							value = value.split(' AND ').join(path+' AND ');
							divPart += operator+' '+path+'__#text '+relation+' '+value;
							//parts[partCount++] = '('+operator+' '+path+'__#text '+relation+' '+value+')';
						}
					}
				}
				if(divPart!='')
				{
					parts[partCount++] = '('+divPart+')';
				}
			}
		}
	}
	textarea.value = parts.join(' '+o+' ');
}
function nodeClick(node)
{
	try
	{
		node = node.parentNode;
		switch(node.getElementsByTagName('UL')[0].style.display)
		{
			case 'none':
			node.getElementsByTagName('UL')[0].style.display = 'block';
			node.getElementsByTagName('A')[0].firstChild.nodeValue = ' - ';
			break;

			default:
			node.getElementsByTagName('UL')[0].style.display = 'none';
			node.getElementsByTagName('A')[0].firstChild.nodeValue = '+';
			break;
		}
	}catch(e){}

}