var SelectedColorFocused = "#adc3e7";
var SelectedColorUnfocused = "#eeeeee";
var _mode = 0;
var LookupBrowse = 0x1;
var LookupMulti = 0x4;
var LookupSingle = 0x2;

var DNN = 1;
var ADSI = 2;
var CRM = 3;
var FORUM = 4;
var GALLERY = 5;
var LIBRARY = 6;

var DNNUser = 101;
var DNNRole = 102;
var DNNModule = 109;
var DNNTab = 110;
var DNNPortal = 111;
var ForumGroup = 501;
var ForumItem = 502;
var ForumThread = 503;
var ForumPost = 504;
var ForumUser = 506;
var ForumModerator = 507;
var GalleryFile = 601;
var GalleryFolder = 602;

var popUp; 
function OpenGalleryWizard(targetControl, url, features)
{		
	popUp = window.open(url, 'forumpopup', features);
}
function RefreshParent() 
{ 			
	popUp.close();	
	window.location.reload();		
} 

var oLookup;
var oTarget;
function OpenForumPopup(targetControl, url, features)
{			
	oTarget = targetControl;	
	oLookup = window.open(url, 'forumpopup', features);
}

function ExistingItems()
{
	var args = new PopupArguments();	
	if (oTarget != null)
	{
		var tdDisplay = oTarget.parentElement.parentElement.firstChild;
		args.items = tdDisplay.getElementsByTagName("SPAN");	
	}
	return args;	
}

function PupulateReturnValue(returnValue)	
{	
	if (!returnValue || returnValue.items.length == 0)
	{		
		CleartargetControl(oTarget);		
	}
	else
	{		
		PopuplatetargetControl(oTarget, returnValue);
	}
	oLookup.close();
}                

function PopupArguments()
{	
	this.items = null;
}

function CleartargetControl(targetControl)
{
	var tdDisplay = targetControl.parentElement.parentElement.firstChild;	
	var idField = targetControl.parentElement.firstChild;
	
	tdDisplay.innerHTML = "(None Specified)";	
	idField.value = "";
}

function PopuplatetargetControl(targetControl, resultValues)
{
	var tdDisplay = targetControl.parentElement.parentElement.firstChild;	
	var idField = targetControl.parentElement.firstChild;	
	var iHTML = "";
	var idList = "";
	for (var i = 0; i < resultValues.items.length; ++i)
	{	
		var item = resultValues.items[i];
		if (item.name == 'popupcancel')
		{
			return;
		}		
		var elem = parent.document.createElement("SPAN");		
		elem.className	= 	"TTTNormalTextBox";
		elem.oid	= 	item.id;
		elem.otype	= 	item.type;
		elem.olocation = item.location;
		elem.innerHTML	= 	item.html;		
		iHTML += elem.outerHTML;
		iHTML += "<br>";
		idList += ";" + item.id + ":" + item.name;		
	}	
	if (iHTML.length == 0)
	{
		iHTML = "(None Specified)";
	}	
	tdDisplay.innerHTML = iHTML;	
	idField.value = idList;	
}

function checkMode(mode, option)
{
	return ((mode & option) == option);
}

function openPopup()
{
	return window.createPopup();
}

function search()
{
	document.body.style.cursor = "wait";
	var url = "popupdata.aspx";
	url += window.location.search;	
	//url += "&objectclass=" + selObject.returnValue;		
	url += "&location=" + selLocation.returnValue;
	url += "&searchvalue=" + URLEncode(findValue.value);	
	btnGo.disabled = true;
	findValue.focus();
	
	frmResults.location.href = url;
}
function selectChange(o)
{	
	if (checkMode(_mode, LookupBrowse))
	{
		search();
	}
}
function buildReturnValue(rows, objectclass)
{	
	var lookupItems = new LookupItems();
	lookupItems.objectclass = objectclass;
	var len = rows.length;
	
	for (var i = 0; i < len; i++)
	{
		var tr = rows[i];
		var columns = tr.parentElement.parentElement.getElementsByTagName("col");		
		if (tr.oid != undefined)		
		{
			lookupItems.add(tr, columns)
		}
	}
	
	return lookupItems;
}

function initSelectedItems(table)
{
	//alert("initSelectedItems");
	if (table.selectedItems == undefined)
	{
		table.selectedItems = new Array();
		
		table.onactivate=activateItems;
		table.ondeactivate=deactivateItems;
	}
}
function getActiveItem(elem)
{
	//alert("getActiveItem");
	while (elem.tagName != "TR")
	{
		elem = elem.parentElement;
	}
	
	return elem;
}
function unselectItems(table)
{
	//alert("unselectItems1");
	var multiSelect = checkMode(_mode, LookupMulti);
	if (table.selectedItems == undefined) return;
	if (multiSelect && event.shiftKey) return;
	if (multiSelect && event.ctrlKey && event.keyCode == 0) return;
	
	while (table.selectedItems.length > 0)
	{
		unselectItem(table, table.selectedItems[0]);	
	}
}
function unselectItem(table, item)
{
	//alert("unselectItems2");
	if (table.selectedItems == undefined) return;
	var items = table.selectedItems;
	for (var i = 0; i < items.length; i++)
	{
		if (items[i] == item)
		{
			items[i].selected = 0;
			items[i].runtimeStyle.backgroundColor = "";
			table.selectedItems.splice(i, 1);
			break;
		}
	}
}
function selectItem(table, item, focused)
{
	//alert("selectItem");
	if (item.unselectable != undefined) return;
	initSelectedItems(table);
	item.selected = 1;
	if (focused)
		item.runtimeStyle.backgroundColor = SelectedColorFocused;
	else
		item.runtimeStyle.backgroundColor = SelectedColorUnfocused;
	
	table.lastSelected = item;
	
	table.selectedItems.push (item);	
	
	if ( table.id == "tblResults" && "undefined" != typeof(parent.btnProperties))
	{
		parent.btnProperties.disabled = (item.oid == undefined);
	}
}
function shiftSelectItems(table, o)
{
	if (table.lastSelected != undefined)
	{
		var lastSelected = table.lastSelected;
		
		if (lastSelected.rowIndex >= o.rowIndex)
		{
			var rows = table.rows;
			for (var i = o.rowIndex; i < lastSelected.rowIndex; i++)
			{
				selectItem(table, rows[i], true);
			}
		} 
		else
		{
			var rows = table.rows;
			
			for (var i = lastSelected.rowIndex + 1; i <= o.rowIndex; i++)
			{
				selectItem(table, rows[i], true);
			}
		}
	}
}
function clickItem(table)
{	
	if (event.srcElement.tagName == "TBODY") return;
	var item = getActiveItem(event.srcElement);
	var multiSelect = checkMode(_mode, LookupMulti);
	
	if (multiSelect && event.shiftKey && !item.selected)
	{
		shiftSelectItems(table, item);
	}
	else if (multiSelect && event.ctrlKey && item.selected)
	{
		unselectItem(table, item, true);
	}
	else
	{
		unselectItems(table);
		
		selectItem(table, item, true);
	}
	return item;
}
function findValueKeyDown()
{
	if (event.keyCode == 13)
	{
		search();	
	}
}
function listKeyDown(table)
{

	if (event.keyCode == 32)
	{
		table.ondblclick();
	}
	else if (event.keyCode == 38)
	{
		var item = table.lastSelected;
		
		if (item && item.rowIndex > 0)
		{
			item = item.previousSibling;
			
			if (item.unselectable != undefined)
			{
				item = item.previousSibling;
				
				if (item == null)
					return;
			}
			unselectItems(table);
			
			selectItem(table, item, true);
			
			
			
			item.scrollIntoView(true);
		}
	} 
	else if (event.keyCode == 40)
	{
		var item = table.lastSelected;
		if (item && item.rowIndex < table.rows.length- 1)
		{
			item = item.nextSibling;
			
			if (item.unselectable != undefined)
			{
				item = item.nextSibling;
				
				if (item == null)
					return;
			}
			unselectItems(table);
			
			selectItem(table, item, true);
			
			
			
			item.scrollIntoView(false);
		}
	}
	else if (!(event.shiftKey || event.ctrlKey) && ((event.keyCode > 47 && event.keyCode < 58) || (event.keyCode > 64 && event.keyCode < 91)))
	{
		var code;
		var len = table.rows.length;
		
		for (i = (checkMode(_mode, LookupMulti)) ? 0 : 2; i < len; i++)
		{
			code = table.rows[i].cells[0].innerText.charCodeAt(0);
			
			if ((code == event.keyCode) || ((event.keyCode > 64 && event.keyCode < 91) && (code == event.keyCode + 32)))
			{
				item = table.rows[i];
				
				unselectItems(table);
			
				selectItem(table, item, true);
				item.scrollIntoView(true);
				break;
			}
		}
	}
}
function focusSelectedItems(table, focused)
{
	//alert("focusSelectedItems");
	if (table.selectedItems == undefined) return;
	var items = table.selectedItems;
	
	if (items.length == 0 && table.rows.length > 0)
	{
		selectItem(table, table.rows[0], true);
		//alert("table.rows.length > 0");
	}
		
	for (var i = 0; i < items.length; i++)
	{
		if (focused)
		{
			items[i].runtimeStyle.backgroundColor = SelectedColorFocused;
		}
		else
		{
			items[i].runtimeStyle.backgroundColor = SelectedColorUnfocused;
		}
	}
}
function activateItems()
{	
	if (!this.contains (event.toElement))
	{
		focusSelectedItems(this, true);
	}
}
function deactivateItems()
{
	if (!this.contains (event.toElement))
	{
		focusSelectedItems(this, false);
	}
}

function LookupItem()
{	
	LookupItems
	this.id = "";
	this.name = "";
	this.location = "";
	this.html = "";
	this.type = "";
	this.objectclass = "" ;
	this.values = null;
	this.keyValues = null;
}
function LookupItemData(name, value)
{
		
	this.name = name;
	this.value = value;
}

function popupCancel()
{
	this.items = new Array();
	var ci = new LookupItem();
	ci.id = '0';
	ci.name = 'popupcancel';
	this.items.push (ci);
}
		
function LookupItems()
{		
	this.add = _add;
	this.items = new Array();
	
	
	function _add(tr, columns)
	{	
		var li = new LookupItem();
		var td = tr.cells[0];
		li.id		= tr.oid;
		li.name		= td.innerText;
		li.location = tr.olocation;
		li.html		= td.innerHTML;
		li.type		= tr.otype;		
		li.values	= new Array();
		li.keyValues	= new Array();
		
		var len = columns.length;
		if (len > 1)
		{
			for (var i = 1; i < len; ++i)
			{
				li.keyValues[new String(columns[i].name)] = new LookupItemData(columns[i].name, tr.cells[i].innerText)
				li.values.push(new LookupItemData(columns[i].name, tr.cells[i].innerText));
			}
		}		
		this.items.push (li);
	}
}

function URLEncode(s)
{
	s = s.replace(" ", "%20");
	s = s.replace("\"", "%22");
	s = s.replace("#", "%23");
	s = s.replace("&", "%26");
	return s.replace("+", "%2B");
}


