﻿

var None = 0;

// SPMIS
function SPMISFunctions()
{
    this.Team = 1000;
    
    this.Member = 1010;
    this.MemberTeamHistory = 1011;
    
	this.Project = 1001;
	
	this.Menu = 901;
	this.FunctionResource = 101;
	this.Functions = 1010;
}

var CST_ERP_PROJECTID = 800;
var CST_ERP_CUSTOMERS = 865;
var CST_ERP_PRODUCTS = 864;
var CST_ERP_PRODUCTTYPE = 863;
var CST_ERP_SHIPMENT = 858;
var CST_ERP_SHIPMENTDETAIL = 868;
var CST_ERP_SHIPMENTDETAIL_MULTI = 867;
var CST_ERP_STOCK = 859;
var CST_ERP_STOCKDETAIL = 869;

var Account = 1;
var ActivityMimeAttachment = 1001;
var ActivityParty = 135;
var Annotation = 5;
var AnnualFiscalCalendar = 2000;
var BusinessUnit = 10;
var BusinessUnitNewsArticle = 132;
var Competitor = 123;
var Contact = 2;
var Contract = 1010;
var ContractDetail = 1011;
var ContractTemplate = 2011;
var CustomerAddress = 1071;
var DisplayString = 4102;
var CustomerOpportunityRole = 4503;
var Discount = 1013;
var DiscountType = 1080;
var DocumentIndex = 126;
var FixedMonthlyFiscalCalendar = 2004;
var Incident = 112;
var Invoice = 1090;
var InvoiceDetail = 1091;
var KbArticle = 127;
var KbArticleComment = 1082;
var KbArticleTemplate = 1016;
var Lead = 4;
var MonthlyFiscalCalendar = 2003;
var Opportunity = 3;
var OpportunityProduct = 1083;
var Organization = 1019;
var PriceLevel = 1022;
var Privilege = 1023;
var Product = 1024;
var ProductPriceLevel = 1026;
var QuarterlyFiscalCalendar = 2002;
var Queue = 2020;
var QueueItem = 2029;
var Quote = 1084;
var QuoteDetail = 1085;
var Equipment = 4000;
var ResourceSpec = 4006;
var ResourceGroup = 4007;
var Calendar = 4003;
var CalendarRule = 4004;
var Site = 4009;

var ServiceRestrictionCalendarRule = 5003;
var TimeOffCalendarRule = 5004;
var HolidayCalendarRule = 5005;
var OccurrenceCalendarRule = 5006;
var RecurrenceCalendarRule = 5007;
var OccurringWorkShift = 5008;
var RecurringWorkShift = 5009;
var NotWorkingWorkShift = 5010;
var ActivityScheduling = 5011;

var Role = 1036;
var SalesLiterature = 1038;
var SalesLiteratureItem = 1070;
var SalesOrder = 1088;
var SalesOrderDetail = 1089;
var SavedQuery = 1039;
var UserQuery = 4230;
var SemiAnnualFiscalCalendar = 2001;
var Service = 4001;
var Subject = 129;
var SystemUser = 8;
var Team = 9;
var Template = 2010;
var Territory = 2013;
var UnresolvedAddress = 2012;
var UoM = 1055;
var UoMSchedule = 1056;
var UserFiscalCalendar = 1086;
var UserSettings = 150;
var WFProcess = 121;
var WFProcessInstance = 122;
var List		= 4300;
var ListMember = 4301;
var Campaign	= 4400;
var CampaignResponse = 4401;
var CampaignActivity = 4402;
var BulkOperation = 4406;
var BulkOperationLog = 4405;
var BulkImport = 4407;
var CustomerRelationship = 4502;
var RelationshipRole	 = 4500;
var RelationshipRoleMap	 = 4501;
var ActivityPointer = 4200;
var Appointment = 4201;
var ServiceAppointment = 4214;
var Task = 4212;
var PhoneCall = 4210;
var Letter = 4207;
var Email = 4202;
var Fax = 4204;
var IncidentResolution = 4206;
var QuoteClose = 4211;
var OpportunityClose = 4208;
var OrderClose = 4209;
var AttributeMap = 4601;


var Report	= 9100;
var AppLicense = 9002;
var AppSalesPerson = 9003;
var AppOfflineFilter = 9004;
var AccountAddress = 1000;
var ContactAddress = 1008;
var BaseAddEntityObjectTypeCode	= 10000;

var FIELD_NOT_REQUIRED	= 0;
var FIELD_RECOMMENDED	= 1;
var FIELD_REQUIRED		= 2;

var ERROR_STOP = 0;
var ERROR_NONE = 1;
var ERROR_CONTINUE = 2;

function CRMWindowInfo(sUrl, iXOffset, iYOffset)
{
	this.Width	= parseInt(iXOffset, 10);
	this.Height	= parseInt(iYOffset, 10);
	this.Url	= sUrl;
}
function GetWindowInformation(iObjectType) 
{
	var LOCID_UNRECOGNIZE_DOTC = "Unknow Object Type!";
	//alert(iObjectType)
	var fn = new SPMISFunctions();
	
	//switch (parseInt(iObjectType, 10)) 
	switch (iObjectType)//parseInt(iObjectType, 10)) 
	{
		case fn.Team: return new CRMWindowInfo("spmis/project/project_team_edit.asp",600,475);
		case fn.Project: return new CRMWindowInfo("spmis/project/project_edit.asp",600,475);
		case fn.Menu: return new CRMWindowInfo("spmis/sys/menu_edit.asp",600,475);
		case fn.FunctionResource: return new CRMWindowInfo("spmis/sys/Function_Resource_edit.asp",600,475);
		case fn.Functions: return new CRMWindowInfo("spmis/project/Functions_edit.asp",600,475);

		case CST_ERP_CUSTOMERS: return new CRMWindowInfo("_admin/member/user_edit.asp",500,375);
		case CST_ERP_PRODUCTTYPE: return new CRMWindowInfo("erp/products/producttype_edit.asp",500,375);
		case CST_ERP_PRODUCTS: return new CRMWindowInfo("erp/products/products_edit.asp",500,375);
		case CST_ERP_SHIPMENT: return new CRMWindowInfo("erp/products/shipment_edit.asp",650,505);
		case CST_ERP_SHIPMENTDETAIL: return new CRMWindowInfo("erp/products/shipmentdetail_edit.asp",500,375);
		case CST_ERP_SHIPMENTDETAIL_MULTI: return new CRMWindowInfo("erp/products/shipmentdetail_multi.asp",500,375);
		case CST_ERP_STOCK: return new CRMWindowInfo("erp/products/stock_edit.asp",650,505);
		case CST_ERP_STOCKDETAIL: return new CRMWindowInfo("erp/products/stockdetail_edit.asp",500,375);

case 'META_01':return new CRMWindowInfo('_Metabase/Projects_edit.asp',600,475);
case 'META_02':return new CRMWindowInfo('_Metabase/menu_edit.asp',600,475);
case 'META_03':return new CRMWindowInfo('_Metabase/Role_edit.asp',600,475);
case 'META_04':return new CRMWindowInfo('_Metabase/User_edit.asp',600,475);
case 'META_05':return new CRMWindowInfo('_Metabase/Dictionaries_edit.asp',600,475);
case 'META_09':return new CRMWindowInfo('_Metabase/User_UpdatePassword.asp',600,475);

case 'SPMIS_2':return new CRMWindowInfo('spmis/member/role_edit.asp',600,475);
case 'SPMIS_3':return new CRMWindowInfo('spmis/member/Dev_Member_edit.asp',600,475);
case 'SPMIS_5':return new CRMWindowInfo('spmis/sys/editpassword.asp',600,475);
case 'SPMIS_6':return new CRMWindowInfo('spmis/sys/dictionaries_edit.asp',600,475);
case 'SPMIS_7':return new CRMWindowInfo('spmis/sys/menu_frequent.asp',600,475);
case 'SPMIS_16':return new CRMWindowInfo('spmis/resource/standard_edit.asp',600,475);
case 'SPMIS_18':return new CRMWindowInfo('spmis/member/project_team_edit.asp',600,475);
case 'SPMIS_19':return new CRMWindowInfo('spmis/project/project_edit.asp',600,475);
case 'SPMIS_20':return new CRMWindowInfo('spmis/project/project_enduser_edit.asp',600,475);
case 'SPMIS_23':return new CRMWindowInfo('spmis/project/datastruct_edit.asp',600,475);
case 'SPMIS_24':return new CRMWindowInfo('spmis/project/functions_edit.asp',600,475);
case 'SPMIS_29':return new CRMWindowInfo('spmis/task/member_task_edit.asp',600,475);
case 'SPMIS_30':return new CRMWindowInfo('spmis/task/task_feedback_edit.asp',600,475);
case 'SPMIS_34':return new CRMWindowInfo('spmis/bug/bugs_edit.asp',600,475);
case 'SPMIS_45':return new CRMWindowInfo('spmis/helper/helperClass.asp',600,475);
case 'SPMIS_46':return new CRMWindowInfo('spmis/helper/helperFile.asp',600,475);
case 'SPMIS_48':return new CRMWindowInfo('spmis/resource/Project_DocumentClass_edit.asp',600,475);
case 'SPMIS_49':return new CRMWindowInfo('spmis/resource/Project_DocumentInfo_edit.asp',600,475);
case 'SPMIS_50':return new CRMWindowInfo('spmis//Project_DocumentBrowser.asp',600,475);
case 'SPMIS_53':return new CRMWindowInfo('spmis//Project_DocumentContent_edit.asp',600,475);
case 'SPMIS_54':return new CRMWindowInfo('spmis//Project_ContentBrowser.asp',600,475);
case 'SPMIS_57':return new CRMWindowInfo('spmis/sys/connpool.asp',600,475);
case 'SPMIS_58':return new CRMWindowInfo('spmis/sys/function_resource_edit.asp',600,475);

case 'FIRST_80':return new CRMWindowInfo('/_firstsing/web/webconfig_edit.asp?id=1',700,475);
case 'FIRST_81':return new CRMWindowInfo('/_firstsing/web/webconfig_edit.asp?id=2',700,475);
case 'FIRST_82':return new CRMWindowInfo('/_firstsing/web/webconfig_edit.asp?id=3',700,475);
case 'FIRST_83':return new CRMWindowInfo('/_firstsing/web/webconfig_edit.asp?id=4',700,475);
case 'FIRST_84':return new CRMWindowInfo('/_firstsing/web/webconfig_edit.asp?id=5',700,475);
case 'FIRST_85':return new CRMWindowInfo('/_firstsing/web/webconfig_edit_smtp.asp?id=6',700,475);
case 'FIRST_86':return new CRMWindowInfo('/_firstsing/web/webconfig_edit_MSN.asp?id=7',700,475);
case 'FIRST_87':return new CRMWindowInfo('/_firstsing/web/webconfig_edit_SellEmail.asp?id=8',700,475);

case 'FIRST_90':return new CRMWindowInfo('tool/filemanage.htm',700,475);

case 'FIRST_01':return new CRMWindowInfo('_firstsing/web/webadmin_edit.asp',600,475);
case 'FIRST_02':return new CRMWindowInfo('_firstsing/web/WebLanguage_Edit.asp',600,475);
case 'FIRST_03':return new CRMWindowInfo('_firstsing/web/WebTemplate_Edit.asp',600,475);
case 'FIRST_04':return new CRMWindowInfo('_firstsing/web/WebNews_Edit.asp',600,475);
case 'FIRST_05':return new CRMWindowInfo('_firstsing/web/WebNewsClass_Edit.asp',600,475);
case 'FIRST_06':return new CRMWindowInfo('_firstsing/web/WebNews_Edit.asp',600,475);

case 'FIRST_11':return new CRMWindowInfo('_firstsing/Products/Products_Edit_1.asp',-1,-1);
case 'FIRST_12':return new CRMWindowInfo('_firstsing/Products/ProductClass_Edit.asp',600,475);

case 'FIRST_21':return new CRMWindowInfo('_firstsing/Members/Members_Edit.asp',600,475);
case 'FIRST_22':return new CRMWindowInfo('_firstsing/Members/MemberEmailList_Edit.asp',600,475);
case 'FIRST_23':return new CRMWindowInfo('_firstsing/Members/MemberOrder_Edit.asp',600,475);
	}
	alert(formatString(LOCID_UNRECOGNIZE_DOTC, iObjectType));
}
function document.onkeypress()
{
	var event = window.event;
	if (event.ctrlKey && event.keyCode == 80)
	{
		event.keyCode = 0;
		return false;
	}
}
document.onkeydown = document.onkeypress;

function window.onerror()
{
	return false;
}
function document.oncontextmenu()
{
	var s = event.srcElement.tagName;


	// change by neale to show the source code of htm
	//event.returnValue =(!event.srcElement.disabled &&(document.selection.createRange().text.length > 0 ||s == "TEXTAREA" ||s == "INPUT" && event.srcElement.type == "text"));
	event.returnValue = true;
}
function document.onselectstart()
{
	var s = event.srcElement.tagName;

	if (s != "INPUT" && s != "TEXTAREA") event.returnValue = false;
}
var GlobalAllowDrag = false;
function document.ondragstart()
{
	event.returnValue = GlobalAllowDrag;
}




var _bWindowSizeAdjusted = false;

function getAdjustedWidthForScreen(iX)
{
	var iWidth = iX;
	if (IsNull(iX) || iX == 0)
	{
		iX = (screen.availWidth >= 1000) ? 820 : 750;
	}
	else if (iX == -1)
	{
		iX = screen.availWidth - 10
	}
	iX = (iX >= screen.availWidth) ? screen.availWidth : iX;
	_bWindowSizeAdjusted = (iX != iWidth);
	return iX;
}

function getAdjustedHeightForScreen(iY)
{
	if (IsNull(iY) || iY == 0)
	{
		return (screen.availHeight >= 600) ? 560 : 510;
	}
	else if (iY == -1)
	{
		return iY = screen.availHeight - 80
	}
	else
	{
		return (iY >= screen.availHeight) ? screen.availHeight : iY;
	}
}

function getLeftMargin(iX)
{
	var iLeft = 0;
	if ((screen.availWidth - iX) > 0)
	{
		iLeft = (screen.availWidth - iX)/2
	}
	return iLeft;
}
function getTopMargin(iY)
{
	var iTop = 0;
	if ((screen.availHeight - iY) > 0)
	{
		iTop = (screen.availHeight - iY)/2
	}
	return iTop;
}
function openStdWin(sPath, sName, iX, iY, sCustomWinFeatures)
{
	iX = getAdjustedWidthForScreen(iX);
	iY = getAdjustedHeightForScreen(iY);


	var iLeft = getLeftMargin(iX);
	var iTop = getTopMargin(iY);

	try
	{
		//alert(sCustomWinFeatures)
		return window.open(sPath, sName, "width=" + iX + ",height=" + iY + ",status=1,resizable=1,left=" + iLeft + ",top=" + iTop + (IsNull(sCustomWinFeatures) ? "" : "," + sCustomWinFeatures));
	}
	catch(e) {}
}
function openStdDlg(sPath, oArgs, iWidth, iHeight, bResizable, bModeless, sCustomWinParams)
{
	if (IsNull(sCustomWinParams))
	{
		sCustomWinParams = "";
	}




	if ((!IsNull(bResizable) && bResizable))
	{
		iWidth	+= parseInt(LOCID_DIALOG_OFFSET_WIDTH, 10);
		iHeight += parseInt(LOCID_DIALOG_OFFSET_HEIGHT, 10);
	}


	iWidth	= getAdjustedWidthForScreen(iWidth);
	iHeight	= getAdjustedHeightForScreen(iHeight);
	bResizable = (!IsNull(bResizable) && bResizable) ? "yes" : "no";


	var iLeft = getLeftMargin(iWidth);
	var iTop = getTopMargin(iHeight);

	sCustomWinParams = "dialogWidth:" + iWidth + "px;dialogHeight:" + iHeight + "px;dialogLeft=" + iLeft + "px;dialogTop=" + iTop + "px;help:0;status:0;scroll:0;center:1;resizable:" + bResizable + ";" + sCustomWinParams;

	if (IsNull(bModeless) || !bModeless)
	{
		return window.showModalDialog(sPath, oArgs, sCustomWinParams);
	}
	else
	{
		return window.showModelessDialog(sPath, oArgs, sCustomWinParams);
	}
}
function openIsvWin(sPath, sPassParams, sMode, sParams, oDialogArgs)
{
	if (sPassParams == "1" &&
		typeof(crmFormSubmit) != "undefined" &&
		!IsNull(crmFormSubmit))
	{
		sPath += sPath.indexOf("?") < 0 ? "?" : "&";
		sPath += "oType=" + crmFormSubmit.crmFormSubmitObjectType.value;
		sPath += "&oTypeName=" + encodeURIComponent(crmFormSubmit.crmFormSubmitObjectTypeName.value);
		sPath += "&oId=" + crmFormSubmit.crmFormSubmitId.value;
	}
	switch (sMode)
	{
	case -1:
		var o = event.srcElement;

		while (o.tagName != "DIV")
		{
			o = o.parentElement;
		}

		loadArea(o.id + "Area", "", sPath, true);
		break;
	case "1":	window.showModalDialog(sPath, oDialogArgs, sParams);	break;
	case "2":	window.showModelessDialog(sPath, oDialogArgs, sParams);	break;
	default:	window.open(sPath, buildWinName(), sParams);			break;
	}
}
function openFrmObj(sUrl, sName, iType, sUrlPrefix)
{

//	switch (eval(iType))
//	{
//	case AppLicense:
//	case None:
//	case BulkImport:
//	case BulkOperationLog:

//		return;
//	}

	var fn = new SPMISFunctions();


	var oWindowInfo = GetWindowInformation(iType);
	var url = oWindowInfo.Url;
	var iX	= oWindowInfo.Width;
	var iY	= oWindowInfo.Height;

//    debugger

	if (!IsNull(url))
	{
	    if (sUrl.indexOf("FIRST_8") < 0)
	    {
		    url = "/" + url + sUrl;
		    if (!IsNull(sUrlPrefix))
		    {
			    url = sUrlPrefix + url;
		    }
        }
		switch ( iType )
		{
		    case 'FIRST_90':
				url = openStdDlg("/Tool/FileManage.asp?id=2" ,null,750,500);
				return url;
		        break;
		//case fn.Project:
		//case fn.Menu:
			//openStdDlg( url, top.window, iX, iY);
			//return;
		case DocumentIndex:
			sName += "Viewer";
			break;
		case DiscountType:
			if (IsNull(sUrl) || sUrl.length == 0)
			{
				url = openStdDlg("/Tools/ProductCatalog/dlg_create.aspx?ObjType=" + DiscountType ,null,350,240);
				if (IsNull(url))
				{
				    
					return;
				}
			}
			break;
		case UoMSchedule:
			if (IsNull(sUrl) || sUrl.length == 0)
			{
				url = openStdDlg("/Tools/ProductCatalog/dlg_create.aspx?ObjType=" + UoMSchedule ,null,400,240);
				if (IsNull(url))
				{
					return;
				}
			}
			break;
		case KbArticleComment:
			openStdDlg( url, top.window, iX, iY);
			return;
		case Subject:
			openStdDlg("dictionary_edit.asp" + sUrl + "&readOnly=9&action=2", null, iX, iY);
			//openStdDlg("/Tools/SubjectManager/dialogs/edit.aspx" + sUrl + "&readOnly=1", null, iX, iY);
			return;
		case ServiceRestrictionCalendarRule:
			openStdDlg( url, top.window, iX, iY);
			return;
		case TimeOffCalendarRule:
			openStdDlg( url+'&calendarId='+calendarId.value+'&resourceId='+oId.value+'&name=Time off&mode=Edit', top.window, iX, iY);
			return;
		case OccurrenceCalendarRule:
		case RecurrenceCalendarRule:
			openStdDlg( url+'&calendarId='+calendarId.value+'&innerCalendarId='+oId.value+'&name=Working Hours&mode=Edit', top.window, iX, iY);
			return;
		case HolidayCalendarRule:
			if (openStdDlg( url+'&mode=Edit', top.window, iX, iY))auto(CalendarRule);
			return;
		case OccurringWorkShift:

			openStdDlg(url+'&calendarId='+calendarId.value+'&resourceId='+oId.value+'&selecteddates='+crmGrid.InnerGrid.SelectedRecords[0][3].cells[crmGrid.InnerGrid.FindColumnIndex("starttime")].firstChild.innerHTML+'&mode='+mode.value, null, iX, iY);
			return;
		case RecurringWorkShift:
		case NotWorkingWorkShift:
			url += '&calendarId='+calendarId.value+'&resourceId='+oId.value+'&name=Working Hours&mode='+mode.value;
			break;
		case Calendar:
			url += '&name=Availability Template&mode=Edit';
			sName = 'Calendar';
			break;
		case UserQuery:

			return;
		case AppOfflineFilter:
			if (sName && sName.length == 32)
				url +='&QueryId='+sName;
			openStdDlg( url, top.window, iX, iY);
			auto(UserQuery);
			return;
		case Report:

			sName = buildWinName();
			break;
		default:

			if (IsUserDefinedEntityObjectTypeCode(iType))
			{
				url += ((sUrl == "") ? "?" : "&") + "etc=" + iType;
			}
			break;
		}


		openStdWin( url, sName, iX, iY);
	}
}

function openObj(iType, sId, sParams, sUrlPrefix)
{
	var sUrl = "";
	if (sId)
	{

		if (iType == SavedQuery)
		{
			var oCommand = new RemoteCommand("SystemCustomization", "CheckSavedQuery");
			oCommand.SetParameter("savedQueryId", sId);

			var oResult = oCommand.Execute();

			if (!oResult.Success)
			{
				return;
			}
		}
		sUrl += ((sUrl.indexOf("?") < 0) ? "?" : "&") + "id=" + sId;
		sUrl += "&funcid=" + iType;
	}
	if (!IsNull(sParams))
	{
		sUrl += (sUrl.length == 0) ? "?" : "&";

		if (sParams.length > 0 && (sParams.charAt(0) == '?'))
		{
			sParams = sParams.substr(1, sParams.length - 1);
		}

		sUrl += sParams;
	}
	return openFrmObj(sUrl, buildWinName(sId), iType, sUrlPrefix);
}
function openObjEx( iType, iParentType, sParentId, sParams, sUrlPrefix)
{
	var url = "";
	if (sParentId)
	{
		url += "?pId=" + sParentId + "&pType=" + iParentType;
	}
	if (typeof(sParams) != "undefined")
	{
		url += sParams;
	}
	openFrmObj( url, buildWinName(), iType, sUrlPrefix);
}




function getObjUrl(iObjectType)
{

	var oWinInfo = GetWindowInformation(iObjectType);
	if (!IsNull(oWinInfo))
	{
		return oWinInfo.Url;
	}
	return null;
}

function openPopup()
{
	var oPopup = window.createPopup();
	SetDefaultStyles(oPopup);
	return oPopup;
}
function buildWinName(s)
{
	if (s) return s.toLowerCase().replace(/[-\{\}:]/g, "");
	var d = new Date();
	return d.getTime();
}
function handleXMLErr(xml, bContinue)
{
	if (bContinue == null) bContinue = false;
	if (xml.parseError.errorCode != 0)
	{
		alert(formatString(LOCID_XML_PARSER_ERROR, xml.parseError.reason));
		if (!bContinue)
		{
			return ERROR_STOP;
		}
		else
		{
			return ERROR_CONTINUE;
		}
	}
	var node = xml.selectSingleNode("/error");
	if (!IsNull(node))
	{
		if (!bContinue)
		{
			var oError = node.selectSingleNode("code");
			var oDescription = node.selectSingleNode("description");
			openStdDlg("/_common/error/dlg_error.aspx?hresult=" + (!IsNull(oError) ? oError.text : "" )
				+ "&errMessage=" + (!IsNull(oDescription) ? encodeURIComponent(oDescription.text) : ""), null, 400, 200);
			return ERROR_STOP;
		}
		else
		{
			return ERROR_CONTINUE;
		}
	}
	return ERROR_NONE;
}
function loadHelp(sArea, sProjectFullPath)
{
	var sDefaultHelp, sUrl;
	var x = 0;
	var y = 0;
	var iWidth = 285;
	if ((top.screenLeft + top.document.body.clientWidth) < (top.screen.width - iWidth))
	{
		x = top.screenLeft + top.document.body.clientWidth + 3;
	}
	else
	{
		x = top.screen.width - 300;
	}

	if (sArea)
	{
		x -= 280;
	}
	if ((top.screenTop + top.document.body.clientHeight) < top.screen.height)
	{
		y = top.screenTop - 23;
	}
	else
	{
		y = top.screen.height - 450;
	}
	if (sArea)
	{
		var s = sArea;
		iWidth = 565;
	}
	else
	{
		var s = window.location.pathname;

		try
		{
			if ((!IsOutlookClient() && s.toLowerCase() == "/_root/bar_top.aspx") ||
				(window.location.protocol == "outlook:"))
			{
				s = top.stage.location.pathname;
			}
		}
		catch(e)
		{

		}
	}
	switch(s.toLowerCase())
	{
	case "/tools/systemcustomization/systemcustomization.aspx":

		if (top.stage.location.search == "?pid=0")
		{
			break;
		}
	case "/tools/home_tools.aspx":
	case "/_root/homepage.aspx":
		s += top.stage.location.search;
		break;
	case "/crmreports/viewer/viewer.aspx":

		var re = new RegExp("[&|?]\\s*helpID\\s*=\\s*([^&|$]*)", "ig");
		re.exec(top.location.search);
		var sHelpId = RegExp.$1;
		if(!IsNull(sHelpId))
		{
			sHelpId = unescape(sHelpId);
			if(sHelpId.length > 0)
			{
				s += "?helpID=" + sHelpId;
			}
		}
		sDefaultHelp = "/crmreports/viewer/viewer.aspx";
		break;
	default:
		try
		{
			var sHelpContext = getHelpContext();
			if (typeof(sHelpContext) == "string")
			{
				s += "#" + sHelpContext;
			}
		}
		catch(e)
		{
		}
	}


	if (s.toLowerCase().indexOf("/_root/homepage.aspx") != -1)
	{
		sDefaultHelp = "custom_entity_list";
	}

	sUrl = sProjectFullPath + "/help/?area=" + encodeURIComponent(s);
	if(!IsNull(sDefaultHelp))
	{
		sUrl += "&defaultHelp=" + encodeURIComponent(sDefaultHelp);
	}
	var iY = top.document.body.clientHeight - 5;
	if (iY < 300)
	{
		iY = 300;
	}

	window.open(sUrl,"MSCRMHelp","resizable=1,width=" + iWidth + ",height=" + iY + ",left=" + x + ",top=" + y);
}
function IsActivityTypeCode(iObjTypeCode)
{
	switch (parseInt(iObjTypeCode,10))
	{
	case ActivityPointer:
	case Email:
	case Fax:
	case PhoneCall:
	case Letter:
	case Appointment:
	case ServiceAppointment:
	case Task:
	case CampaignResponse:
	case CampaignActivity:
	case IncidentResolution:
	case OpportunityClose:
	case OrderClose:
	case QuoteClose:
		return true;
	default: return false;
	}
}

function auto(iObjectTypeCode)
{

	var bIsActivity = IsActivityTypeCode(iObjectTypeCode);
	if (iObjectTypeCode == AppOfflineFilter)
	{
		iObjectTypeCode = UserQuery;
	}
	var oDoc = document;
	try
	{




		if (window.frameElement && window.frameElement.isArea)
		{
			oDoc = window.parent.document;
		}
		else if (window.frameElement && window.frameElement.className == "WorkplaceCalendar")
		{
			oDoc.location.reload();
			return;
		}
		else if (window.frameElement && window.frameElement.className == "MonthCalendar")
		{
			oDoc = window.parent.document;
			oDoc.location.reload();
			return;
		}
	}
	catch (e)
	{

	}
	for (var i = 0; i < oDoc.frames.length; i++)
	{
		try
		{
			var o = oDoc.frames[i].frameElement;
			if (o.className == "MonthCalendar")
			{

				if (!IsNull(oDoc.frames[i].Refresh))
					oDoc.frames[i].Refresh(iObjectTypeCode);
			}
			else if (o.className == "noteData")
			{

				o.Refresh();
			}
			else if (o.className == "WorkplaceCalendar")
			{
				oDoc.frames[i].location.reload();
				return;
			}
			else if (o.isArea)
			{
				if (oDoc.frames[i].frames && oDoc.frames[i].frames.length > 0)
				{

					o = oDoc.frames[i].frames[0].frameElement;
					if (o.className == "MonthCalendar")
					{
						if (!IsNull(oDoc.frames[i].frames[0].Refresh))
							oDoc.frames[i].frames[0].Refresh(iObjectTypeCode);
					}
				}

				findAndRefreshGrids(oDoc.frames[i].document.all.tags("TABLE"), iObjectTypeCode, bIsActivity);
			}
		}
		catch (e)
		{

		}
	}

	findAndRefreshGrids(oDoc.all.tags("TABLE"), iObjectTypeCode, bIsActivity);
}



function findAndRefreshGrids(oTables, iObjectTypeCode, bIsActivity)
{
	var o;
	for (var i = 0; i < oTables.length; i++)
	{
		o = oTables[i];
		if (o.className.indexOf("gridControl") > -1 && o.GetParameter("autorefresh") == "1" &&
			(o.GetParameter("otc") == iObjectTypeCode ||
			(bIsActivity && (o.GetParameter("otc") == ActivityPointer || iObjectTypeCode == ActivityPointer)) || o.GetParameter("otc") == 0))
		{
			o.ClearPagingCookie();
			o.Refresh();
		}
	}
}



function HtmlAttributeEncode(s)
{
	if (typeof(s) != "string")
	{
		return s;
	}
	s = s.replace(/&/g, "&amp;");
	return s.replace(/\"/g, "&quot;");
}
function HtmlEncode(s)
{
	if (typeof(s) != "string")
	{
		return s;
	}
	s = s.replace(/&/g, "&amp;");
	s = s.replace(/</g, "&lt;");
	s = s.replace(/>/g, "&gt;");
	return s.replace(/\"/g, "&quot;");
}
function XmlEncode(s)
{
	if (IsNull(s))
	{
		return "";
	}
	if (typeof(s) != "string")
	{
		s = s.toString();
	}

	s = s.replace(/([\uD800-\uDBFF][\uDC00-\uDFFF])/g, function ($1){return "CRMEntityReferenceOpen" + ((($1.charCodeAt(0) - 0xD800) * 0x400) + ($1.charCodeAt(1) & 0x03FF) + 0x10000).toString(16) + "CRMEntityReferenceClose";});

	s = escape(s);
	s = s.replace(/%20/g, " ");
	s = s.replace(/CRMEntityReferenceOpen/g, "&#x");
	s = s.replace(/CRMEntityReferenceClose/g, ";");
	s = s.replace(/%u(\w{4})/g,	"&#x$1;");
	s = s.replace(/%(\w{2})/g,	"&#x$1;");
	return s;
}
function XmlDecode(s)
{

	s = s.replace(/&lt;/g, "<");
	s = s.replace(/&gt;/g, ">");
	s = s.replace(/&apos;/g, "'");
	s = s.replace(/&quot;/g, "\"");
	s = s.replace(/&amp;/g, "&");
	return s;
}


function isArray(item)
{
	return item != null && ((item instanceof Array) || (typeof item.splice) == "function");
}
function formatString()
{
	if (arguments.length == 0)
	{
		return "";
	}
	var s = arguments[0];
	var aArguments = arguments;
	if (arguments.length > 1 && isArray(arguments[1]))
	{
		aArguments = arguments[1];

		aArguments.unshift(s);
	}
	for (var i = 1; i < aArguments.length; i++)
	{
		var argIndex = i - 1;
		s = s.replace(new RegExp("\\{" + argIndex + "\\}", "g"), aArguments[i].toString());
	}
	return s;
}
function onError(oError)
{
	if (IsOutlookClient())
	{
		openStdDlg("/_common/error/dlg_error.aspx?hresult=" + oError.number, null, 400, 200);
	}
}
function IsNull(o)
{
	return ("undefined" == typeof(o) || "unknown" == typeof(o) || null == o)
}
function IsEmpty(o)
{
    if(!IsNull(o)) 
        return o.length == 0
    else
        return true;
}







function AccessibilityClick()
{
	if (event.keyCode == 13)
	{
		event.srcElement.click();

		event.cancelBubble = true;
		return false;
	}
}







function IsUserDefinedEntityObjectTypeCode(iOTC)
{
	return iOTC >= BaseAddEntityObjectTypeCode;
}


function SetDefaultStyles(oPopup)
{
	if (!IsNull(oPopup))
	{
		oPopup.document.createStyleSheet("/_common/styles/fonts.aspx");
	}
}

function IsOutlookClient()
{

	return IsOutlookLaptopClient() || IsOutlookWorkstationClient();
}

function IsOutlookWorkstationClient()
{


	return (document.cookie.indexOf("LightClient")!= -1);

}

function IsOutlookLaptopClient()
{


	return false;

}

function IsOnline()
{



	return true;

}
function FormatUrl(sUrl)
{
	if(IsNull(sUrl) || sUrl.length == 0)
	{
		sUrl = "/" + window.location.pathname;
	}
	return sUrl.split('?')[0].toLowerCase();
}
function IsTokenPresent(sUrl)
{
	return ("undefined" != typeof(CRMWRPCToken) && "undefined" != typeof(CRMWRPCTokenTimeStamp) && "undefined" != typeof(CRMWRPCToken[sUrl]) && CRMWRPCToken[sUrl].length > 0 && CRMWRPCTokenTimeStamp.length > 0);
}

function SetTokenInHeader(oXmlHttp, sUrl)
{
	sUrl = FormatUrl(sUrl);
	if(IsTokenPresent(sUrl))
	{
		oXmlHttp.setRequestHeader("CRMWRPCToken", CRMWRPCToken[sUrl]);
		oXmlHttp.setRequestHeader("CRMWRPCTokenTimeStamp", CRMWRPCTokenTimeStamp);
	}
}

function GetTokenAsQS(sUrl)
{
	sUrl = FormatUrl(sUrl);
	if(IsTokenPresent(sUrl))
	{
		return "CRMWRPCToken=" + encodeURIComponent(CRMWRPCToken[sUrl]) + "&CRMWRPCTokenTimeStamp=" + CRMWRPCTokenTimeStamp;
	}
}
