/******************************************************************************
*
*	Pivotal eService 5.7
*
*	File:		navigation.js 
*	Purpose:	General navigation javascript functions. Used throughout the
*				eService application.
*	Date:		January 1, 2005
*
******************************************************************************/

function nav_openURL( bUseNewWindow, sURL )
{
	
	var str = sURL.replace(/^\s*|\s*$/g,"").toLowerCase();
	if (str.substring(0,3)!="ftp")
	{
		if (str.substring(0,4)!="http")
		    str="http://"+str;
	}
	window.open( str )
}


function nav_openURLNV( bUseNewWindow, sURL )
{
	
	var str = sURL.replace(/^\s*|\s*$/g,"");
	if (str.substring(0,3)!="ftp")
	{
		if (str.substring(0,4)!="http")
		    str="http://"+str;
	}
	window.location.href = str
}

function nav_openURLNV1( bUseNewWindow, sURL )
{
	
	var str = sURL.replace(/^\s*|\s*$/g,"");
	if (str.substring(0,3)!="ftp")
	{
		if (str.substring(0,4)!="http")
		    str="http://"+str;
	}
	window.open( str )
}



function nav_openEmail( bUseNewWindow, sEmail )
{
	window.location.href = "mailto:" + sEmail;
}

function nav_openReadOnlyForm( sformId, srecordId )
{	
	newWindow = window.open("readOnlyForm.asp?formId=" + sformId + "&recordId=" + srecordId,"","height=500,width=700,status=yes,toolbar=no,menubar=no,location=no,resizable=yes");
}

function nav_deleteRecord ( sFormId, sRecordId )
{
	var oKeys = new Array();
	var oVals = new Array();
	var i = 0;

	oKeys[i] = "type";
	oVals[i++] = "deleteform";

	oKeys[i] = "formId";
	oVals[i++] = sFormId;
	
	oKeys[i] = "recordId";
	oVals[i++] = sRecordId;
	
	oKeys[i] = "targetType";
	oVals[i++] = "regular";
	
	window.top.hidden.location = nav_buildURL( "xmlloader.asp", oKeys, oVals );
	

}

function nav_deleteSecondaryRecord( sFormId, sRecordId )
{
	var oKeys = new Array();
	var oVals = new Array();
	var i = 0;

	oKeys[i] = "type";
	oVals[i++] = "deleteSecondary";

	oKeys[i] = "formId";
	oVals[i++] = sFormId;
	
	oKeys[i] = "recordId";
	oVals[i++] = sRecordId;
	
	oKeys[i] = "targetType";
	oVals[i++] = "regular";
	
	window.top.hidden.location = nav_buildURL( "xmlloader.asp", oKeys, oVals );
	

}


function nav_deleteAttachment( sSecondaryFormId, sSecondaryRecordId, sPrimaryFormId, sPrimaryRecordId )
{
	var oKeys = new Array();
	var oVals = new Array();
	var i = 0;

	oKeys[i] = "type";
	oVals[i++] = "deleteAttachment";

	oKeys[i] = "secondaryFormId";
	oVals[i++] = sSecondaryFormId;
	
	oKeys[i] = "secondaryRecordId";
	oVals[i++] = sSecondaryRecordId;
	
	oKeys[i] = "primaryFormId";
	oVals[i++] = sPrimaryFormId;

	oKeys[i] = "primaryRecordId";
	oVals[i++] = sPrimaryRecordId;

	window.top.hidden.location = nav_buildURL( "xmlloader.asp", oKeys, oVals);

}


function nav_openNewForm( bUseNewWindow, sForm, sParentForm, sParentRecordId  )
{
	if ( bUseNewWindow )
		alert( g_LDSTRING_MESSAGE_OPEN_FORMS_NEW_WINDOW );
	else {
		var oKeys = new Array();
		var oVals = new Array();
		var i = 0;
	
		oKeys[i] = "type";
		oVals[i++] = "newform";
	
			oKeys[i] = "formid";
			oVals[i++] = sForm;
		
		if ( sParentForm != null ){
			if ( nav_isValidId( sParentForm ) ){
				oKeys[i] = "parentformid";
				oVals[i++] = sParentForm;
			} else {
				oKeys[i] = "parentformname";
				oVals[i++] = sParentForm;
			}
			oKeys[i] = "parentrecordid";
			oVals[i++] = sParentRecordId;
		}
		window.top.hidden.location = nav_buildURL( "xmlloader.asp", oKeys, oVals );
	}
}

function nav_openMessages()
{
		var oKeys = new Array();
		var oVals = new Array();
		var i = 0;
	
		oKeys[i] = "type";
		oVals[i++] = "allmessages";
		
		oKeys[i] = "pageSize";
		oVals[i++] = "-1";
	
		window.top.hidden.location = nav_buildURL( "xmlloader.asp", oKeys, oVals );
}


function nav_openForm( bUseNewWindow, sForm, sRecord )
{
	if ( bUseNewWindow )
		alert( g_LDSTRING_MESSAGE_OPEN_FORMS_NEW_WINDOW );
	else {
		var oKeys = new Array();
		var oVals = new Array();
		var i = 0;
	
		oKeys[i] = "type";
		oVals[i++] = "loadform";
	
		oKeys[i] = "formid"
		oVals[i++] = sForm;
		
		oKeys[i] = "recordid";
		oVals[i++] = sRecord;
		
		window.top.hidden.location = nav_buildURL( "xmlloader.asp", oKeys, oVals );
	}
}

function nav_openUserSearch( bUseNewWindow, sForm, sSubForm, strRecordId )
{
	if ( bUseNewWindow )
		alert( g_LDSTRING_MESSAGE_OPEN_FORMS_NEW_WINDOW );
	else {
		var oKeys = new Array();
		var oVals = new Array();
		var i = 0;
	
		oKeys[i] = "type";
		oVals[i++] = "loadUserForm";
	
		oKeys[i] = "formid"
		oVals[i++] = sForm;
		
		oKeys[i] = "subForm";
		oVals[i++] = sSubForm;
		
		if ( strRecordId != ""){
			oKeys[i] = "subRecordId";
			oVals[i++] = strRecordId;
		}
		
		window.top.hidden.location = nav_buildURL( "xmlloader.asp", oKeys, oVals );
	}
}


function nav_openPartnerSearch( bUseNewWindow, searchId, sType, maxPageSize, startRecordNumber )
{

	if ( bUseNewWindow )
		alert( g_LDSTRING_MESSAGE_OPEN_SEARCH_NEW_WINDOW );
	else {
		var oKeys = new Array();
		var oVals = new Array();
		var i = 0;
	
		oKeys[i] = "type";
		oVals[i++] = sType;
		
		oKeys[i] = "searchId";
		oVals[i++] = searchId;
		
		oKeys[i] = "maxRecords";
		oVals[i++] = maxPageSize;
		
		oKeys[i] = "startRecord";
		oVals[i++] = startRecordNumber;
		
		var NUM_PARAMS_FOR_QUERY = 5;
		for ( var j = 0; j < NUM_PARAMS_FOR_QUERY; j++){
			oKeys[i] = "searchParam";
			oVals[i++] = "";
		}
		window.top.hidden.location = nav_buildURL( "xmlloader.asp", oKeys, oVals );
	}


}


function nav_openFAQ( bUseNewWindow, sFAQPosition)
{
	
	if ( bUseNewWindow )
		alert( g_LDSTRING_MESSAGE_OPEN_SEARCH_NEW_WINDOW );
	else {
		var oKeys = new Array();
		var oVals = new Array();
		var i = 0;
	
		oKeys[i] = "type";
		oVals[i++] = "menuSearch";

		oKeys[i] = "searchId";
		oVals[i++] = "FAQ Question? (CF)";

		oKeys[i] = "startRecord";
		oVals[i++] = "0";
		
		oKeys[i] = "FAQ_Position";
		oVals[i++] = sFAQPosition;
		
		window.top.hidden.location = nav_buildURL( "xmlloader.asp", oKeys, oVals );
	}
}



function nav_openSearch( bUseNewWindow, sSearch, sType, maxPageSize, startRecordNumber, searchResultsList )
{
	
	if ( bUseNewWindow )
		alert( g_LDSTRING_MESSAGE_OPEN_SEARCH_NEW_WINDOW );
	else {
		var oKeys = new Array();
		var oVals = new Array();
		var i = 0;
	
		oKeys[i] = "type";
		oVals[i++] = sType;

		oKeys[i] = "searchId";
		oVals[i++] = sSearch;

		oKeys[i] = "maxRecords";
		oVals[i++] = maxPageSize;
		
		oKeys[i] = "listView";
		oVals[i++] = searchResultsList;
		
		oKeys[i] = "startRecord";
		oVals[i++] = startRecordNumber;
		
		window.top.hidden.location = nav_buildURL( "xmlloader.asp", oKeys, oVals );
	}
}


function nav_openType(	bUseNewWindow, type )
{
	var oKeys = new Array();
	var oVals = new Array();

	oKeys[0] = "type";
	oVals[0] = type;

	if ( bUseNewWindow ){
		var message = utils_stringParamReplace( g_LDSTRING_MESSAGE_OPEN_TYPE_NEW_WINDOW, Array( type ) );
		alert( message );
	}else {
		switch ( type ){
			case "adminList":
				window.top.hidden.location = nav_buildURL( "administration.asp", oKeys, oVals );
				break;
				
			case "forgotPwd":
				// need to explictly add to application history here, since we're not going through
				// the hidden frame
				var sURL;				
				sURL = nav_buildURL("forgotPassword.asp", oKeys, oVals);
				window.top.addToHistoryBodyMain(sURL);
				window.top.bodymain.location = sURL;
				break;
			
			case "onlineHelp":
				window.open(nav_buildURL( "WebHelp/eService.htm", oKeys, oVals), "");
				break;
				
			default:
				// don't use above because it messes up the Netscape logoff sequence, resulting in a continuous loop
				if (utils_isInternetExplorer()==false)
				{	
					window.top.hidden.location =nav_buildURL( "xmlloader.asp", oKeys, oVals )					
				}
				else
				{window.open(nav_buildURL( "xmlloader.asp", oKeys, oVals ),"hidden");}
				
		}
	}
}

function nav_openSearchList( bUseNewWindow, sTable )
{
}

function nav_buildURL( sURL, oKeyArray, oValueArray )
{
	var sTemp = sURL;
	
	if (oKeyArray != null){
		if ( oKeyArray.length > 0 )
			sTemp += "?";
		
		for ( var i = 0; i < oKeyArray.length; i++ ){
			if ( i > 0 ) sTemp += "&";
			sTemp += oKeyArray[i] + "=";
			sTemp += encodeURIComponent(  oValueArray[i] );
		}
	}
	

	if (window.top.opener)
	{
		try {
			if (window.top.opener.top.g_sHistory != undefined) //NS may throw a permission exception
				sTemp = window.top.opener.top.appendRandomNumberToURL(sTemp);  
			else
				sTemp = top.appendRandomNumberToURL(sTemp);
		}
		catch(e) {
			sTemp = top.appendRandomNumberToURL(sTemp);	
		}

		
	}
	else
	{
		sTemp = top.appendRandomNumberToURL(sTemp);	
	}

	return sTemp;
}

function nav_isValidId( sId )
{
	if ( sId.length != 16 ) return false;

	var sTemp = sId.toUpperCase();
	for ( var i = 0; i < 16; i++ ){
		var cChar = sTemp.charAt(i);
	
		if ( cChar != '0' && cChar != '1' && cChar != '2' && cChar != '3' &&
			 cChar != '4' && cChar != '5' && cChar != '6' && cChar != '7' &&
			 cChar != '8' && cChar != '9' && cChar != 'A' && cChar != 'B' &&
			 cChar != 'C' && cChar != 'D' && cChar != 'E' && cChar != 'F' )
		{
			return false;
		}
	}
	return true;
}		

function nav_PrintReport( strReportID, strTableID, strRecordID )
{
	var oKeys = new Array();
	var oVals = new Array();
	var j = 0;

	oKeys[j] = "RECORDID";
	oVals[j++] = strRecordID;
	
	oKeys[j] = "FILTER";
	oVals[j++] = "IndRec";

	oKeys[j] = "JOIN";
	oVals[j++] = "Outer";

	oKeys[j] = "TABLEID";
	oVals[j++] = strTableID;

	oKeys[j] = "REPORTID";
	oVals[j++] = strReportID;

	window.open( nav_buildURL( "reporting/report_display.asp", oKeys, oVals ), "" );
}


function nav_openAttachment (sQuerystring, sExt, sFileName)
{
	var oKeys = new Array();
	var oVals = new Array();
	var j = 0;
	
	var testXMLChars = /\&apos\;/;
	
	if ( testXMLChars.test( sFileName ) )
		sFileName = sFileName.replace(/\&apos\;/g, "'");
	
	// Encode a the filename text string as a valid component of a Uniform Resource Identifier (URI).
	// Added for RD #: 24576-1691 - File attached to a OLE field on a ePartner Form will not open in Japanese environment 
	//- June 2004 APC
	sFileName = encodeURIComponent(sFileName);				

	window.open( nav_buildURL( "AttachmentServer.asp?" + sQuerystring + "&ext=" + sExt + "&fileName=" + sFileName, oKeys, oVals ), "" );

}
