var POPUP_TYPE_REMOVE = -1;
var POPUP_TYPE_SINGLE = 0;
var POPUP_TYPE_MULTI = 1;
var POPUP_TYPE_ASSIGN = 2;
var POPUP_TYPE_MAKENEW = 3;

var POPUP_ACTION_DISPLAY = 0;
var POPUP_ACTION_INSERT = 1;
var POPUP_ACTION_MAKENEW = 2;
var POPUP_ACTION_IMPORTADSI = 3;
var POPUP_ACTION_REGARDING = 4;

var DNN = 1;
var ADSI = 2;
var CRM = 3;
var FORUM = 4;
var GALLERY = 5;
var LIBRARY = 6;

var None = 0;
var DNNUser = 101;
var DNNRole = 102;
var DNNContact = 103;
var DNNVendor = 104;
var DNNAnnouncement = 105;
var DNNDiscussion = 106;
var DNNFile = 107;
var DNNDocument = 108;
var DNNModule = 109;
var DNNTab = 110;
var DNNPortal = 111;
var ADSIOrganizationUnit = 201;
var ADSIDomain = 202;
var ADSIDomainDNS = 203;
var ADSIUser = 211;
var ADSIGroup = 212;
var ADSIContact = 213;
var ADSIComputer = 214;
var ADSIPrinter = 215;
var Organization = 301;
var BusinessModule = 302;
var Territory = 303;
var Account = 304;
var Competitor = 305;
var Vendor = 306;
var Project = 307;
var Contact = 308;
var Team = 309;
var User = 310;
var Role = 311;
var Lead = 312;
var Opportunity = 313;
var Activity = 314;
var Incident = 315;
var Queue = 316;
var Quote = 317;
var Contract = 318;
var SalesOrder = 319;
var Invoice = 320;
var Discount = 321;
var AccountAddress = 322;
var InternalAddress = 323;
var ContactAddress = 324;
var Product = 325;
var PriceLevel = 326;
var Template = 327;
var Annotation = 328;
var KbArticle = 329;
var Subject = 330;
var MainContact = 331;
var ERPItem = 401;
var ERPSalesOrder = 402;
var ERPWorkOrder = 403;
var ERPCustomer = 404;
var ERPVendor = 405;

//' "LookupSingle(targetControl, moduleId, dataSource, objectClasses, displayMethod, popupAction, additionalParams)
//' "LookupAssign(targetControl, moduleId, dataSource, objectClasses, displayMethod, popupAction, additionalParams)

function OpenPopup(popupType, targetControl, targetClass, targetId, moduleId, dataSource, objectClasses, displayMethod, popupAction, additionalParams)
{
	var url;
	var features;
	switch (popupType)
	{
		case POPUP_TYPE_REMOVE:
			url = "./Controls/Popup/PopupRemove.aspx";
			features = "dialogHeight:480px;dialogWidth:480px;resizable:yes;center:yes;status:no;help:no;scroll:no;";
			break;
		case POPUP_TYPE_ASSIGN:
			url = "./Controls/Popup/PopupAssign.aspx";
			features = "dialogHeight:480px;dialogWidth:540px;resizable:yes;center:yes;status:no;help:no;scroll:no;";
			break;
		case POPUP_TYPE_SINGLE:
			url = "./Controls/Popup/PopupSelectSingle.aspx";
			features = "dialogHeight:360px;dialogWidth:480px;resizable:yes;center:yes;status:no;help:no;scroll:no;";
			break;
		case POPUP_TYPE_MULTI:
			url = "./Controls/Popup/PopupSelectMulti.aspx";
			features = "dialogHeight:480px;dialogWidth:480px;resizable:yes;center:yes;status:no;help:no;scroll:no;";
			break;		
		case POPUP_TYPE_MAKENEW:
			url = "./Controls/Popup/PopupNewItem.aspx";
			features = "dialogHeight:167px;dialogWidth:480px;resizable:yes;center:yes;status:no;help:no;scroll:no;";
			break;			
	}
	//popupType, targetControl, targetClass, targetId, moduleId, dataSource, objectClasses, displayMethod, popupAction, additionalParams
	url += "?mid=" + moduleId;
	url += "&datasource=" + dataSource
	url += "&objectclasses=" + objectClasses
	url += "&displaymethod=" + displayMethod 
	
	if (popupType == POPUP_TYPE_MAKENEW)
		// append parentclass and parentid
		{			
			url += "&parentclass=" + targetClass
			url += "&parentid=" + targetId
		}
	
	if (objectClasses == "MainContact" )
	{
	url += "&targetid=" + targetId
	}
	
	if (additionalParams)
	{
		if (additionalParams.charAt(0) != "&")
		{
			url += "&";
		}
		url += additionalParams;
	}
	var args = new PopupArguments();
	//if (targetControl != null)
	//{		
	//	args.items = targetControl.getElementsByTagName("SPAN");
	//}
	var resultValues = window.showModalDialog(url, args, features);
  
	if (resultValues != null)
	{
		if (popupAction == POPUP_ACTION_DISPLAY && targetControl != null)
		// insert result value into control on page
		{			
			PopuplatetargetControl(targetControl, resultValues)
		}
		if (popupAction == POPUP_ACTION_INSERT && targetClass == null)
		// insert result value directly into database
		{
			InsertObject(targetClass, targetId, resultValues, dataSource, additionalParams)
		}
		if (popupAction == POPUP_ACTION_INSERT && targetClass != null)
		// insert result value as assignment into database
		{
			InsertAssignObject(targetClass, targetId, objectClasses, resultValues, dataSource, additionalParams)
		}	
		
		if (popupAction == POPUP_ACTION_IMPORTADSI && targetClass != null)
		// insert result value as assignment into database
		{
			ImportADSI(objectClasses, additionalParams)
		}	
		
		if (popupAction == POPUP_ACTION_INSERT && targetClass != null)
		// insert result value as assignment into database
		{
			InsertAssignObject(targetClass, targetId, objectClasses, resultValues, dataSource, additionalParams)
		}	
		
		if (popupAction == "4" )
		// insert result value as assignment into database
		{
			PopuplateregardingControl(targetControl, resultValues)
		}	
		
		if (popupAction == POPUP_ACTION_MAKENEW )
		// insert result value as assignment into database
		{
			MakeNewObject(targetClass, targetId, objectClasses, moduleId ,resultValues, dataSource, additionalParams);
            window.location.reload();


		}			
	}	
	//return resultValues;		
} 
//                 

function PopupArguments()
{	
	this.items = null;
}

function PopuplatetargetControl(targetControl, resultValues)
{
	var iHTML = "";
	var tdValue = targetControl.parentElement;
	var tr = tdValue.parentElement;
	var tdDisplay = tr.firstChild;
	var nameField = tdDisplay.firstChild.firstChild;
	var idField = tdValue.firstChild;
	for (var i = 0; i < resultValues.items.length; ++i)
	{
		var item = resultValues.items[i];
		iHTML += (i > 0 ? " " : "");
		var elem = parent.document.createElement("SPAN");		
		elem.className	= 	"TTTRow";
		elem.oid	= 	item.id;
		elem.otype	= 	item.type;
		elem.innerHTML	= 	item.html;		
		iHTML += elem.outerHTML;
	}
	if (iHTML.length == 0)
	{
		iHTML = "&nbsp;";
	}
	//targetControl.innerHTML = iHTML;
	nameField.innerHTML = iHTML;
	idField.value = item.id
		
}
function PopuplateregardingControl(targetControl, resultValues)
{
	var iHTML = "";
	var tdValue = targetControl.parentElement;
	var tr = tdValue.parentElement;
	var tdDisplay = tr.firstChild;
	var nameField = tdDisplay.firstChild.firstChild;
	var idField = tdValue.firstChild;
	var idType  = tdValue.children(2);
    for (var i = 0; i < resultValues.items.length; ++i)
	{
		var item = resultValues.items[i];
		iHTML += (i > 0 ? " " : "");
		var elem = parent.document.createElement("SPAN");		
		elem.className	= 	"TTTRow";
		elem.oid	= 	item.id;
		elem.otype	= 	item.type;
		elem.innerHTML	= 	item.html;		
		iHTML += elem.outerHTML;
	}
	if (iHTML.length == 0)
	{
		iHTML = "&nbsp;";
	}
	//targetControl.innerHTML = iHTML;
	nameField.innerHTML = iHTML;
	idField.value = item.id
	idType.value=resultValues.objectclass ;
	
}

function LookupObject(objectClasses, targetType, targetId, sourceControl, additionalParams)
{
	var oSource = sourceControl;
	var tdValue = oSource.parentElement;
	var tr = tdValue.parentElement;
	var tdDisplay = tr.firstChild;
	var lField = tdDisplay.firstChild.firstChild;
	var idField = tdValue.firstChild;
	
	var resultValues = OpenPopup(POPUP_SELECTSINGLE, objectClasses, targetType, targetId, lField, additionalParams); 
	if (resultValues != null && targetControl != null)
	{
		PopuplatetargetControl(targetControl, resultValues);
	}
	if (resultValues != null)
	{	
		if (resultValues.items.length > 0)
		{
			idField.value = lookupItems.items[0].id;					
		}
		else
		{
			idField.value = "-1";
		}				
	}	
}

//Function to add - user into ADSI group - user into DNN role - member into team - competitor into account/project
//Require: objectClasses indicate which object(s) to show for selection to be added into owning object
//Require: targetType indicate which object to be owning object
//Require: targetId Id of ownning object
function AssignMember(objectClasses, targetType, targetId, additionalParams)
{
		//function    OpenPopup(popupType, objectClasses, targetType, targetId, targetControl, additionalParams)
	var returnValue = OpenPopup(POPUP_ASSIGN, objectClasses, targetType, targetId, null, additionalParams);
	var postXml = "";
	var postUrl = "";	
	
	if (!returnValue || returnValue.items.length == 0)
	{
		// No items selected
		return false;
	}
	else
	{
		postXml = "<MEMBER>";	
	
		for (i=0; i<returnValue.items.length; i++)
		{
			var item = returnValue.items[i];

			postXml += "<item>";
			postXml += "<id>" + item.id + "</id>";
			postXml += "<name>" + item.name + "</name>";
			postXml += "<type>" + item.type + "</type>";
			postXml += "</item>";			
		}
		postXml += "</MEMBER>";	
	}	
	switch (targetType)
	{
		case DNN_ROLE:
			postUrl = "./Controls/Popup/insertsqldata.aspx?targettype=" + targetType + "&targetid=" + targetId ;
			break;
		case ADSI_GROUP:
			postUrl = "./Controls/Popup/TTTADSIAddGroupMember.aspx?targettype=" + targetType + "&targetid=" + targetId ;
			break;
		case Team:
			postUrl = "./Controls/Popup/AddTeamMember.aspx?targettype=" + targetType + "&targetid=" + targetId ;
                        break;
                case 9:
			postUrl = "./Controls/Popup/AddTeamMember.aspx?targettype=" + targetType + "&targetid=" + targetId ;
                case 1:
			postUrl = "./Controls/Popup/AddTeamMember.aspx?targettype=" + targetType + "&targetid=" + targetId ;
			break;
                case "9":
			postUrl = "./Controls/Popup/AddTeamMember.aspx?targettype=" + targetType + "&targetid=" + targetId ;
			break;
		case TTT_PROJECT:
			if (objectClasses == TTT_COMPETITOR)
			{
			postUrl = "./Controls/Popup/AddProjectCompetitor.aspx?targettype=" + targetType + "&targetid=" + targetId ;
			}
			break;		
	}		
	if (additionalParams)
	{
		if (additionalParams.charAt(0) != "&")
		{
			postUrl += "&";
		}
		postUrl += additionalParams;
	}
	
	var objXml = new ActiveXObject("Microsoft.XMLDOM");
	objXml.async = false;
	objXml.loadXML(postXml);

	var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	xmlhttp.Open("POST", postUrl, false);
	xmlhttp.Send(objXml);

	var objXml = new ActiveXObject("Microsoft.XMLDOM");
	objXml.async = false;
	objXml.loadXML(xmlhttp.responseXML.xml);

		//if (oRefreshGrid && handleXMLErr(oXml))
		//{	
           history.go(0);
          // window.close;
         //window.location.reload(yes);
			//document.frames(oRefreshGrid)._grid.location.reload();		
		//}	
}

//Import user/group from AD into DNN
function ImportADSI(objectClasses, additionalParams)
{	
	//var btn = event.srcElement;
	//var sourceId = btn.id;
	
	//function OpenPopup(popupType, objectClasses, targetType, targetId, targetControl, additionalParams)
	//var returnValue = OpenPopup(POPUP_SELECTMULTI, objectClasses, null, null, null, additionalParams);
	var importXml = "";
	var postUrl = "";	
	
	if (!returnValue || returnValue.items.length == 0)
	{
		// No items selected
		return false;
	}
	else
	{
		importXml = "<ADSI>";	
	
		for (i=0; i<returnValue.items.length; i++)
		{
			var item = returnValue.items[i];

			importXml += "<item>";
			importXml += "<id>" + item.id + "</id>";
			importXml += "<name>" + item.name + "</name>";
			importXml += "<type>" + item.type + "</type>";
			importXml += "</item>";
			
		}

		importXml += "</ADSI>";
	
	}
	
	postUrl = "./Controls/Popup/ImportADSI.aspx?data=adsi";
		
	if (additionalParams)
	{
		if (additionalParams.charAt(0) != "&")
		{
			postUrl += "&";
		}
		postUrl += additionalParams;
	}
	
	var objXml = new ActiveXObject("Microsoft.XMLDOM");
	objXml.async = false;
	objXml.loadXML(importXml);

	var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	xmlhttp.Open("POST", postUrl, false);
	xmlhttp.Send(objXml);


	var objXml = new ActiveXObject("Microsoft.XMLDOM");
	objXml.async = false;
	objXml.loadXML(xmlhttp.responseXML.xml);

		//if (oRefreshGrid && handleXMLErr(oXml))
		//{	
       	window.location.reload();
			//document.frames(oRefreshGrid)._grid.location.reload();		
		//}			
	
}


// convert a collection of lookup records to a string of ids
//
function processLookupIds( lookup_results )
{
	try
	{
		var oLUItems = lookup_results.items;
		var oIds	 = new Array(oLUItems.length);

		// exit & disable OK button if the lookup collection is empty
		//
		if (oLUItems.length < 1)
		{
			butBegin.disabled = true;
			return;
		}

		// loop thru lookup record collection
		//
		for (i=0; i<oLUItems.length; ++i)
		{
			// add current id to array
			//
			oIds[i] = oLUItems[i].id;
		}

		// enable OK button & set the xml to be posted
		//
		butBegin.disabled = false;

		__dialogXml = "<userids>" + oIds.join(";") + "</userids>";
	}
	catch(e)
	{
		// disable OK button if __dialogXml has not been set.
		// this way user can submit currently selected users.
		//
		butBegin.disabled = (__dialogXml == "");
	}
}

function MakeNewObject(targetClass, targetId, objectClasses, moduleId ,resultValues, dataSource, additionalParams)

{
var postUrl = "";

postUrl = "./Controls/Popup/makenewsqldata.aspx?targetclass=" + targetClass + "&objectClasses=" + objectClasses +  "&targetid=" + targetId + "&moduleId=" + moduleId +"&returnValue=" + resultValues;
window.showModelessDialog(postUrl);
}

function InsertAssignObject(targetClass, targetId, objectClasses, returnValue , dataSource, additionalParams)
{
	var postXml = "";
	var postUrl = "";	
	//resultValues
	if (!returnValue || returnValue.items.length == 0)
	{
		// No items selected
		return false;
	}
	else
	{
		postXml = "<MEMBER>";	
	
		for (i=0; i<returnValue.items.length; i++)
		{
			var item = returnValue.items[i];
			postXml += "<item>";
			postXml += "<id>" + item.id + "</id>";
			postXml += "<name>" + item.name + "</name>";
			postXml += "<type>" + item.type + "</type>";
			postXml += "</item>";			
		}
		postXml += "</MEMBER>";	
	}
//New code
	switch (targetClass)
	{
		case DNN_ROLE:
			postUrl = "./Controls/Popup/insertsqldata.aspx?targetclass=" + targetClass + "&targetid=" + targetId ;
			break;		
		case Team:
			postUrl = "./Controls/Popup/insertsqldata.aspx?targetclass=" + targetClass + "&targetid=" + targetId ;
                       break;
        case Account:
			postUrl = "./Controls/Popup/insertsqldata.aspx?targetclass=" + targetClass + "&targetid=" + targetId + "&objectClasses=" +objectClasses;
                        break;
        case Contact:
			postUrl = "./Controls/Popup/insertsqldata.aspx?targetclass=" + targetClass + "&targetid=" + targetId + "&objectClasses=" +objectClasses;
                        break;
        case "9":
			postUrl = "./Controls/Popup/insertsqldata.aspx?targetclass=" + targetClass + "&targetid=" + targetId + "&objectClasses=" +objectClasses;
			break;
		case TTT_PROJECT:
			if (objectClasses == TTT_COMPETITOR)
			{
				postUrl = "./Controls/Popup/AddProjectCompetitor.aspx?targetclass=" + targetClass + "&targetid=" + targetId + "&objectClasses=" +objectClasses;
			}
			break;	
		case ADSI_GROUP:
			postUrl = "../Controls/Popup/TTTADSIAddGroupMember.aspx?targetclass=" + targetClass + "&targetid=" + targetId ;
			break;	
	}	
		
	
	//postUrl = "./DesktopModules/TTTADSI/AddTeamMember.aspx?targetclass=" + targetClass + "&targetid=" + targetId ;
	//break;
	if (additionalParams)
	{
		if (additionalParams.charAt(0) != "&")
		{
			postUrl += "&";
		}
		postUrl += additionalParams;
	}
	
	var objXml = new ActiveXObject("Microsoft.XMLDOM");
	objXml.async = false;
	objXml.loadXML(postXml);

	var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	xmlhttp.Open("POST", postUrl, false);
	xmlhttp.Send(objXml);

	var objXml = new ActiveXObject("Microsoft.XMLDOM");
	objXml.async = false;
	objXml.loadXML(xmlhttp.responseXML.xml);

		//if (oRefreshGrid && handleXMLErr(oXml))
		//{	
	window.location.reload();
			//document.frames(oRefreshGrid)._grid.location.reload();		
		//}	
}

function InsertObject(targetClass, targetId, resultValues, dataSource, additionalParams)
{
}

/*/
/ /  Author: Jeremy Falcon
/ /    Date: November 08, 2001
/ / Version: 1.4
/*/

/*/ THIS FILE CONTAINS FUNCTIONS THAT WILL WRAP THE POP-UP PROCESS /*/

// this variable will hold the window obect
// we only allow one pop-up at a time
var popup = null;
/*/
/ / PURPOSE:
/ /		To create and center a pop-up window.
/ /
/ / COMMENTS:
/ /		It will replace to old pop-up if called
/ / 	without calling DestroyWnd() first..
/*/

function CreateWnd (file, width, height, resize)
{
	var doCenter = false;

	if((popup == null) || popup.closed)
	{
		attribs = "";

		/*/ there's no popup displayed /*/

		// assemble some params
		if(resize) size = "yes"; else size = "no";

		/*/
		/ / We want to center the pop-up; however, to do this we need to know the
		/ / screen size.  The screen object is only available in JavaScript 1.2 and
		/ / later (w/o Java and/or CGI helping), so we must check for the existance
		/ / of it in the window object to determine if we can get the screen size.
		/ /
		/ / It is safe to assume the window object exists because it was implemented
		/ / in the very first version of JavaScript (that's 1.0).
		/*/
		for(var item in window)
			{ if(item == "screen") { doCenter = true; break; } }

		if(doCenter)
		{	/*/ center the window /*/

			// if the screen is smaller than the window, override the resize setting
			if(screen.width <= width || screen.height <= height) size = "yes";

			WndTop  = (screen.height - height) / 2;
			WndLeft = (screen.width  - width)  / 2;

			// collect the attributes
			attribs = "width=" + width + ",height=" + height + ",resizable=" + size + ",scrollbars=" + size + "," + 
			"status=no,toolbar=no,directories=no,menubar=no,location=no,help=no;,top=" + WndTop + ",left=" + WndLeft;
		}
		else
		{
			/*/
			/ / There is still one last thing we can do for JavaScrpt 1.1
			/ / users in Netscape.  Using the AWT in Java we can pull the
			/ / information we need, provided it is enabled.
			/*/
			if(navigator.appName=="Netscape" && navigator.javaEnabled())
			{	/*/ center the window /*/

				var toolkit = java.awt.Toolkit.getDefaultToolkit();
				var screen_size = toolkit.getScreenSize();

				// if the screen is smaller than the window, override the resize setting
				if(screen_size.width <= width || screen_size.height <= height) size = "yes";

				WndTop  = (screen_size.height - height) / 2;
				WndLeft = (screen_size.width  - width)  / 2;

				// collect the attributes
				attribs = "width=" + width + ",height=" + height + ",resizable=" + size + ",scrollbars=" + size + "," + 
				"status=no,toolbar=no,directories=no,menubar=no,location=no,help=no,top=" + WndTop + ",left=" + WndLeft;
			}
			else
			{	/*/ use the default window position /*/

				// override the resize setting
				size = "yes";

				// collect the attributes
				attribs = "width=" + width + ",height=" + height + ",resizable=" + size + ",scrollbars=" + size + "," + 
				"status=no,toolbar=no,directories=no,menubar=no,location=no,help=no";
			}
		}

		// create the window
		popup = open(file, "", attribs);
	}
	else
	{
		// destory the current window
		DestroyWnd();
		// recurse, just once, to display the new window
		CreateWnd(file, width, height, resize);
	}
}

/*/
/ / PURPOSE:
/ /		To destroy the pop-up window.
/ /
/ / COMMENTS:
/ /		This is available if wish to destroy
/ / 	the pop-up window manually.
/*/

function DestroyWnd ()
{
	// close the current window
	if(popup != null)
	{
		popup.close();
		popup = null;
	}
}


