var oDSP_AboutWin = null;

function dspApp_CopyWebPart(oSetting, sUrl, sWPQ) {
	if (dspApp_LoadApplication(oSetting)) {
		oDSP_App.ClearCopyObjects();
		var oItems = new dspApp_GetCopyObjects();
		for (var i=0;i<oItems.length;i++) 
			oDSP_App.AddHtmlObject(oItems[i][0], oItems[i][1]);
		oDSP_App.CopyWebPart(dspUtil_GetWpCaption("oDSP" + sWPQ + "divWebPart"), dspApp_GetCopyBuildUrl(sUrl, oSetting.ConnectedFilterQualifier));
	}
}

function dspApp_GetCopyBuildUrl(sUrl, sFilterQualifier) {
	var sFilter = dspFilter_GetCurrentFilter(sFilterQualifier);
	if (sFilter != "")
		sUrl = sUrl.replace("dspFilter=","dspOld=") + ((sUrl.indexOf("?") > 0)?"&":"?") + "dspFilter=" + sFilter;
	return sUrl; 
}

function dspApp_GetCopyObjects() {
	var oItems = new Array();
	var oDivs = document.getElementsByTagName("DIV");
	for (var i=0;i<oDivs.length;i++) {
		var sId = oDivs(i).id;
		if (sId.substr(0,4) == "oDSP" && sId.substr(sId.length-10) == "divWebPart") {
			if (dspUtil_IsWpVisible(sId)) {
				var sCaption = dspUtil_GetWpCaption(sId); 
				if (sCaption != "") {
					var sSize = dspUtil_GetWpCopySize(sId);
					var sWPId = dspUtil_GetWpID(sId);
					if (sWPId != "") {
						var oItem = new Array(2);
						oItem[0] = sCaption;
						oItem[1] = sWPId + ":" + sSize;
						oItems[oItems.length] = oItem;
					}
				}
			}
		}
	}
	return oItems;
}

function dsApp_PageDrillDown(oAction, xRs, sFilterQualifier) {
	if (sFilterQualifier != undefined && sFilterQualifier != "") {
		var aMembers = oAction.Id.split(","), aFilter = new Array(aMembers.length);
		for (var i=0;i<aMembers.length;i++) {
			var oNode = xRs.selectSingleNode("/DSPWebPart/Members/Member[@Id='" + aMembers[i] + "']");
			if (oNode != null) {
				var sUniqueName = oNode.getAttribute("UniqueName");
				oNode = xRs.selectSingleNode("/DSPWebPart/Dimensions/Dimension[@Id='" + oNode.getAttribute("Dim") + "']");
				if (oNode != null)
					aFilter[i] = new String(oNode.getAttribute("UniqueName"));
					aFilter[i].Member = sUniqueName;
			}
		}	
		dspFilter_SetCurrentFilter(sFilterQualifier, aFilter, true);
	}
	else
		alert("This action is only available when web part is connected to a provider web part.");
}

function dspApp_OpenAction(oElem, oSetting, xRS, sResourcePath) {
	var sErrMsg = "";
	if (document.location.protocol != "file:") {
		var oAction = new dspApp_GetActionNameAndType(oElem, oSetting, xRS);
		if (oAction.Name == "!DSP_FILTER_SELECTOR!")
			dsApp_PageDrillDown(oAction, xRS, oSetting.ConnectedFilterQualifier);
		else {
			if (oAction.Name != "") {
				var oResponse = new ActiveXObject("Microsoft.XMLHTTP");
				oResponse.Open("POST", sResourcePath, false);
				oResponse.setRequestHeader("content-type", "text/xml");
				oResponse.send(dspApp_ActionXml(oAction.Name, oAction.Id, oAction.Type, xRS));
				if (oResponse.status < 400) {
					var oResultNode = oResponse.responseXML.selectSingleNode("action");
					var sActionUrl = "";
					if (oResultNode!=null) {
						sActionUrl = oResultNode.text;
						if (sActionUrl.length > 0 && sActionUrl.substr(0,6) != "ERROR:") {
							var oParam = new dspApp_ParseUrl(sActionUrl);
							if (oAction.OpenType!=2)
								window.open(dspUtil_EncodeUniqueName(oParam.Url,1),"",oParam.Style);
							else
								window.location = dspUtil_EncodeUniqueName(oParam.Url,1);
						}
						else
							sErrMsg = sActionUrl;
					}
					else
						sErrMsg = oResponse.responseText;
				}
				else {
					sErrMsg = "";
					dspApp_ShowActionError(oResponse.responseText);
				}
				if (sErrMsg!="")
					alert(sErrMsg);
			}
		}
	}
}

function dspApp_ParseUrl(s) {
	var i = s.indexOf("dspWindowStyle");
	if (i > -1) {
		this.Url = s.substr(0,i-1);
		this.Style = s.substr(i+15);
	}
	else {
		this.Url = s;
		this.Style = "";
	}
}

function dspApp_ShowActionError(sHtml){
	if (oDSP_AboutWin != null) {
  		if (!oDSP_AboutWin.closed)
  			oDSP_AboutWin.close();
	}
	oDSP_AboutWin = window.open("","Error","directories=no,height=410,width=620,location=no,titlebar=no,menubar=no,resizable=no,scrollbars=yes,status=no,toolbar=no");
	oDSP_AboutWin.document.write(sHtml);
}

function dspApp_GetActionNameAndType(oElem, oSetting, xRs) {
	this.Id = oElem.cellid;
	this.Name = oSetting.CellActionName;
	this.Type = 6;
	this.OpenType = oSetting.CellActionOpen;
	if (this.Id==null) {
		this.Id = oElem.memberid;
		this.Type = 4;
		this.Name = "";
		var oNode = xRs.selectSingleNode("/DSPWebPart/Members/Member[@Id='" + this.Id + "']");
		if (oNode != null) {
			oNode = xRs.selectSingleNode("/DSPWebPart/Dimensions/Dimension[@Id='" + oNode.getAttribute("Dim") + "']");
			if (oNode!=null) {
				if (oNode.getAttribute("Axis") == 0) {
					this.Name = oSetting.ColumnActionName;
					this.OpenType = oSetting.ColumnActionOpen;
				}
				else {
					this.Name = oSetting.RowActionName;
					this.OpenType = oSetting.RowActionOpen;
				}
			}
		}
	}
}

function dspApp_ActionXml(sActionName, sId, iType, xRS) {
	var oDims = xRS.selectNodes("/DSPWebPart/Dimensions/Dimension[@Axis=5 && @Type!=2 || @Axis=-2 && @Type!=2]");
	for(var iCnt=0;iCnt<oDims.length; iCnt++) {
		var oMembers = xRS.selectNodes("/DSPWebPart/Members/Member[@Dim='" + oDims[iCnt].getAttribute("Id") + "']");
		if(oMembers.length > 0)
			sId += "," + oMembers[0].getAttribute("Id");
	}
	var xAction = xRS.cloneNode(true);
	var oElem = xAction.createElement("Action");
	oElem.setAttribute("Name", sActionName);
	oElem.setAttribute("Id", sId);
	oElem.setAttribute("Type", iType);
	var oRootNode = xAction.selectSingleNode("DSPWebPart");
	oRootNode.appendChild(oElem);
	oRootNode.removeChild(oRootNode.selectSingleNode("Result"));
	return xAction;
}

function dspApp_PrepareDEF(oDef, oData) {
	var oRSDims, oRSMembers, oDefDim, oDefFilters, oDefFilter, oFileInfo;
	oRSDims = oData.selectNodes("/DSPWebPart/Dimensions/Dimension");
	for(var iCnt = 0; iCnt < oRSDims.length; iCnt++) {
		oRSMembers = oData.selectNodes("/DSPWebPart/Members/Member[@Dim='" + oRSDims[iCnt].getAttribute("Id") + "' && @View!=2]");
		if(oRSMembers.length > 0) {
			oDefDim = oDef.selectSingleNode("/DSPWebPart/Def/Dimensions/Dimension[UniqueName = '" + oRSDims[iCnt].getAttribute("UniqueName") + "']");
			if (oDefDim != null) {
				oDefFilter = oDefDim.selectSingleNode("Members/Member");
				if (oDefFilter != null)
					oDefDim.removeChild(oDefDim.selectSingleNode("Members"));
				var ff = oRSDims[iCnt].getAttribute("FilterFunction");
				if (ff == "0") 
					ff = "1";
				oDefDim.selectSingleNode("FilterFunction").text = ff;
				oDefFilters = oDef.createElement("Members");
				for(var i=0;i<oRSMembers.length;i++) {
					oDefFilter = oDef.createElement("Member");
					oDefFilter.text = oRSMembers(i).getAttribute("UniqueName");
					oDefFilters.appendChild(oDefFilter);
				}
				oDefDim.appendChild(oDefFilters);
			}
		}
	}
	if (oDef.selectSingleNode("/DSPWebPart/Def/Connection/Id") != null) {
		var oConn = oData.selectSingleNode("/DSPWebPart/Connection");
		with (oDef.selectSingleNode("/DSPWebPart/Def/Connection")) {
			var oConnString = appendChild(oDef.createElement("ConnectionString"));
			var oCube = appendChild(oDef.createElement("Cube"));
			oConnString.text = oConn.getAttribute("ConnectionString");
			oCube.text = oConn.getAttribute("Cube");
		}	
	}	
	return oDef.xml;
}	

function dspApp_BuildUrlFilterString(oData) {
	var s = "";
	var oDims = oData.selectNodes("/DSPWebPart/Dimensions/Dimension[@Axis=5]");
	for(var iCnt = 0; iCnt < oDims.length; iCnt++) {
		var oMembers = oData.selectNodes("/DSPWebPart/Members/Member[@Dim='" + oDims[iCnt].getAttribute("Id") + "']");
		if(oMembers.length > 0)
			s += "&" + oDims[iCnt].getAttribute("UniqueName") + "=" + dspUtil_EncodeUniqueName(oMembers[0].getAttribute("UniqueName"), 2);
	}
	return s;
}

function dspApp_OpenWP(oSetting, xDef, xCS, xRS, ifraSubmit) {
	var sCommand="DSPWPL40", sURL=null;
	if (oSetting.MenuLaunchItemURL != null) {		
		sURL = oSetting.MenuLaunchItemURL;
		if (sURL.substr(sURL.length-4, 4) != ".dsa") 
			sCommand = "IE";
	}
	switch (sCommand) {
	case "DSPWPL40":
	  	if (dspApp_LoadApplication(oSetting)) {
			if (sURL != null) {
				sURL += "?dsp:Command=View" + dspApp_BuildUrlFilterString(xRS);
				oDSP_App.OpenFromFile(sURL);
			}
			else
				oDSP_App.OpenWithDSP(dspApp_PrepareDEF(xDef.cloneNode(true), xRS));
		}
		break;
	default:
		if (document.location.protocol != "file:") {
			if (oSetting.MenuLaunchItemPostSettings == 1) {
				with (ifraSubmit.document) {
					if (getElementById("frmSubmit") == null)
						write('<form name="frmSubmit" id="frmSubmit" method="post" action="" style="display:none"><input type="text" id="dspDEF" name="dspDEF" style="display:none"></input><input type="text" id="dspFilter" name="dspFilter" style="display:none"></input></form>');
					frmSubmit.action = sURL;
					frmSubmit.target = "_blank";
					frmSubmit.dspDEF.value = dspApp_PrepareDEF(xDef.cloneNode(true), xRS, sURL);
					frmSubmit.submit();
				}
			}
			else {
				var oParam = new dspApp_ParseUrl(sURL);
				sURL = dspApp_ApplyURLFilter(oParam.Url, xRS);
				if (oSetting.DetailLinkOpen == "2")
					window.location = sURL;
				else
					window.open(sURL,"",oParam.Style);
			}
		}
		else
			alert("Detail link pointing to HTTP resources is only available when web part is rendered in HTTP locations like a web part page. Not when rendered in files located on FILE like mail attachments.");
		break;
	}
}

function dspApp_ApplyURLFilter(sUrl, oData) {
    var sToken, sEncodedName, oMembers;
	var oDims = oData.selectNodes("/DSPWebPart/Dimensions/Dimension[@Type='4' or (@Axis='5' and @Type!='2')]");
	var iFilter = (sUrl.indexOf("dspFilter=")==-1)?0:((sUrl.indexOf("dspFilter=")+10)==sUrl.length)?2:1;
	for(var i=0;i<oDims.length;i++) {
		oMembers = oData.selectNodes("/DSPWebPart/Members/Member[@Dim='" + oDims[i].getAttribute("Id") + "']");
		if(oMembers.length > 0) {
			sEncodedName = dspUtil_EncodeUniqueName(oMembers[0].getAttribute("UniqueName"),1);
			if (iFilter > 0) {
				sToken = oDims[i].getAttribute("UniqueName");
				if (iFilter==2)
					sUrl += sToken + "=" + sEncodedName + ";";
				else {
					if (sUrl.indexOf(sToken) > 0)
						sUrl = sUrl.replace(sToken, sToken + "=" + sEncodedName);
				}
			}
			else {
				sToken = "(" + oDims[i].getAttribute("Caption") + ")";
				if (sUrl.indexOf(sToken) > 0)
					sUrl = sUrl.replace(sToken, oMembers[0].getAttribute("Caption"));
				sToken = oDims[i].getAttribute("UniqueName");
				if (sUrl.indexOf(sToken) > 0)
					sUrl = sUrl.replace(sToken, sEncodedName);
			}
		}
	}
	if (iFilter==2 && (sUrl.substr(sUrl.length-1,1)==";"))
		sUrl = sUrl.substr(0,sUrl.length-1);
	return sUrl;
}

function dspApp_ToolPartEditWP(oSetting, ctlInput, ctlOutput) {
	if (dspApp_LoadApplication(oSetting)) {
		var sNewXml = oDSP_App.EditWPv2(ctlInput.value);
		if (sNewXml.length > 0)
			ctlOutput.value = sNewXml;				
		return true;
	}
	else
		return false;
}

function dspApp_LoadApplication(oSetting) {
	if (document.getElementById("oDSP_App") == null) {
		try {
			document.body.insertAdjacentHTML("afterBegin", "<object id=\"oDSP_App\" classid=\"clsid:C803BE02-2D93-4F8E-86DF-D3659FD71A16\" style=\"width:0px; height:0px;\" tabindex=-1></object>");
		}
		catch(e){}
	}
	return dspApp_ClientComponent(oSetting);
}

function dspApp_ClientComponent(oSetting) {
	var iBehavior = 0, bExists = true, sUrl = "", sWinStyle = "";
	if (oSetting != null) {
		iBehavior = oSetting.ClientVersionBehavior;
		sUrl = oSetting.ClientVersionUrl;
		sWinStyle = oSetting.ClientVersionWindowStyle;
	}
	if (oDSP_App.object == null) 
		bExists = false;
	else {
		if ((iBehavior & 2 && sUrl != "") > 0) {
			bExists = (oDSP_App.GetProductVersion() == dspUtil_ScriptVersion());
			if (!bExists && ((iBehavior & 8) > 0)) {
				var x = sUrl.lastIndexOf(".");
				if (x > 0)
					sUrl = sUrl.substr(0, x) + "upgrade" + sUrl.substr(x);
			}
		}
	}
	if (!bExists) {
		if (iBehavior > 0 && sUrl != "") {
			if ((iBehavior & 4) > 0)
				window.open(sUrl, "", sWinStyle);
			else
				window.location = sUrl;
		}
		else
			alert("To be able to use this function you need to have the Web Part Client installed on your computer. Please contact your administrator for more information");
	}
	return bExists;
}

function dspApp_ShowAbout(sTitle, sProdVer, sInfo, sContact, sSupport, sProductID){
	try {
	  	if (oDSP_AboutWin != null) {
  			if (!oDSP_AboutWin.closed)
  				oDSP_AboutWin.close();
  		}
		oDSP_AboutWin = window.open("","About","directories=no,height=240,width=430,location=no,titlebar=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no");
		with (oDSP_AboutWin.document) {
			write("<HTML><HEAD><TITLE>" + sTitle + "</TITLE></HEAD><BODY bgcolor='" + document.body.currentStyle.backgroundColor + "'>");
			write("<TABLE border=0 height='100%' width='100%' cellpadding='0'><TR><TD height='99%'>");
			write("<FONT FACE='" + document.body.currentStyle.fontFamily + "' COLOR='" + document.body.currentStyle.color + "' SIZE='1'>");
			write("<P>This Web Part was created with <B>" + sProdVer + "</B></P>");
			write("<P>Product ID: " + sProductID + "</P>");
			write("<P>For more info visit <A HRef='" + sInfo + "' Target='_new'>" + sInfo + "</A></P>");
			write("<P>Contact e-mail <A HRef='mailto:" + sContact + "'>" + sContact + "</A>");
			write("&nbsp;&nbsp;&nbsp;Support <A HRef='" + sSupport + "?productid=" + sProductID + "' Target='_new'>" + sSupport + "</A></P>");
			write("<P>Copyright &copy; 1999-2007 Decision Support Panel</P>");
			write("<P>Warning: This computer program is protected by copyright law and international treaties</P>");
			write("</TD></TR><TR><TD Align='center'>");
			write("<Center><Input type='Button' Value='   OK   ' Name='btnOK' onclick='window.close()'></center>");
			write("</FONT></TD></TR></TABLE></BODY></HTML>");
		}
	}
	catch(e) {}
}

function dspApp_CreateXMLDOM(sXML) {
	var oXMLDEF = new ActiveXObject("Microsoft.XMLDOM");
	oXMLDEF.async = false;
	oXMLDEF.loadXML(sXML);
	return(oXMLDEF);	
}

