/*
var bIsAOL = false;
var bIsIE = false;
var bIsNS6 = false;
*/

// Browser Constants
var g_nBrowser_Other = 0;
var g_nBrowser_IE = 1;
var g_nBrowser_NS = 2;
var g_nBrowser_AOL = 3;

// Browser Version Constants
var g_nBrowserVersion_Other = 0;
var g_nBrowserVersion_NS4 = 1;
var g_nBrowserVersion_NS5 = 2;

// Platform Constants
var g_nPlatform_Other = 0;
var g_nPlatform_Windows = 1;
var g_nPlatform_Sun = 2;
var g_nPlatform_HP = 3;
var g_nPlatform_Mac = 4;

// Global Variables
var g_nBrowser;
var g_nBrowserVersion;
var g_nPlatform;

var g_bUseEnhanced;

// Initialize Global Variables
if (navigator)
{
	if (navigator.appName)
	{
		/*
		bIsAOL = (navigator.appName.search(/AOL/i) != -1);
		bIsIE = (navigator.appName.search(/Microsoft Internet Explorer/i) != -1);
		bIsNS6 = ((navigator.appName.search(/Netscape/i) != -1) && (navigator.appVersion[0] == "5"));
		*/

		if (navigator.appName.search(/Microsoft Internet Explorer/i) != -1)
		{
			g_nBrowser = g_nBrowser_IE;
			g_nBrowserVersion = g_nBrowserVersion_Other;
		}
		else if (navigator.appName.search(/Netscape/i) != -1)
		{
			g_nBrowser = g_nBrowser_NS;

			if (navigator.appVersion[0] == "4")
			{
				g_nBrowserVersion = g_nBrowserVersion_NS4;
			}
			else if (navigator.appVersion[0] == "5")
			{
				g_nBrowserVersion = g_nBrowserVersion_NS5;
			}
			else
			{
				g_nBrowserVersion = g_nBrowserVersion_Other;
			}
		}
		else if (navigator.appName.search(/AOL/i) != -1)
		{
			g_nBrowser = g_nBrowser_AOL;
			g_nBrowserVersion = g_nBrowserVersion_Other;
		}
		else
		{
			g_nBrowser = g_nBrowser_Other;
			g_nBrowserVersion = g_nBrowserVersion_Other;
		}
	}

	if (navigator.appName)
	{
		if (navigator.platform.search(/Win/i) != -1)
		{
			g_nPlatform = g_nPlatform_Windows;
		}
		else if (navigator.platform.search(/Sun/i) != -1)
		{
			g_nPlatform = g_nPlatform_Sun;
		}
		else if (navigator.platform.search(/HP/i) != -1)
		{
			g_nPlatform = g_nPlatform_HP;
		}
		else if (navigator.platform.search(/Mac/i) != -1)
		{
			g_nPlatform = g_nPlatform_Mac;
		}
		else
		{
			g_nPlatform = g_nPlatform_Other;
		}
	}
	else
	{
		g_nPlatform = g_nPlatform_Other;
	}
}

// Initialize Global Variables
g_bUseEnhanced = ((g_nBrowser == g_nBrowser_IE) && (g_nPlatform == g_nPlatform_Windows));

function OpenWindow(sURL, sWinName, nWidth, nHeight, sFeature, bModal)
{
	var sDefaultWinName = "MusicProcessingChildWindow";
	var nDefaultWidth = 600;
	var nDefaultHeight = 400;
	var sDefaultFeature = "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no";

	if (arguments.length <= 5)
	{
		bModal = false;
	}

	if (arguments.length <= 4)
	{
		sFeature = sDefaultFeature;
	}

	if (arguments.length <= 3)
	{
		nHeight = nDefaultHeight;
	}

	if (arguments.length <= 2)
	{
		nWidth = nDefaultWidth;
	}

	if (arguments.length <= 1)
	{
		sWinName = sDefaultWinName;
	}

	/*
	if(! bIsAOL)
	{
		sFeature += ",top=100" + "px";
	}
	*/

	if (sFeature.toUpperCase() == "DEFAULT")
	{
		sFeature = sDefaultFeature;
	}

	// No width specified in feature
	if (sFeature.search(/width/i) == -1)
	{
		sFeature += ",width=" + nWidth + "px";
	}

	// No height specified in feature
	if (sFeature.search(/height/i) == -1)
	{
		sFeature += ",height=" + nHeight + "px";
	}

	var nVerticalBorder = 28;
	var nHorizontalBorder = 10;

	// No top specified in feature
	if (sFeature.search(/top/i) == -1)
	{
		if (screen.height > (nHeight + nVerticalBorder))
		{
			// Center the new window
			sFeature += ",top=" + Math.floor((screen.height - (nHeight + nVerticalBorder)) / 2) + "px";
		}
		else
		{
			sFeature += ",top=0" + "px";
		}
	}

	// No left specified in feature
	if (sFeature.search(/left/i) == -1)
	{
		if (screen.width > nWidth)
		{
			// Center the new window
			sFeature += ",left=" + Math.floor((screen.width - (nWidth + nHorizontalBorder)) / 2) + "px";
		}
		else
		{
			sFeature += ",left=0" + "px";
		}
	}

	sFeature = sFeature.replace(/^,/, "");

	if ((! bModal) || (g_nBrowser != g_nBrowser_IE))
	{
		var oWin = window.open(sURL, sWinName, sFeature);

		oWin.focus();
	}
	else
	{
		sFeature = sFeature.replace(/left=/i, "dialogLeft");
		sFeature = sFeature.replace(/top/i, "dialogTop");
		sFeature = sFeature.replace(/width/i, "dialogWidth");
		sFeature = sFeature.replace(/height/i, "dialogHeight");

		sFeature = sFeature.replace(/scrollbars/i, "scroll");

		sFeature = sFeature.replace(/location[^=]*=[^,]*,/i, "");
		sFeature = sFeature.replace(/menubar[^=]*=[^,]*,/i, "");
		sFeature = sFeature.replace(/titlebar[^=]*=[^,]*,/i, "");

		sFeature = sFeature.replace(/=/g, ":");
		sFeature = sFeature.replace(/,/g, ";");

		sFeature += ";edge:sunken";

		var oWin = window.showModalDialog(sURL, window, sFeature);
	}
	
	return oWin;
}

function DisplayObjectProperties(oObject)
{
	var sMsg = "";

	for (sProp in oObject)
	{
		sMsg += sProp + " = " + oObject[sProp] + "\n";
		
		if (sMsg.length > 1024)
		{
			alert(sMsg);
			sMsg = "";
		}
	}

	alert(sMsg);
}

function CallURLGetXMLDom(sURL)
{
	var oXMLHttp = new ActiveXObject("Microsoft.XMLHttp")

	oXMLHttp.open("GET", sURL, false);
	oXMLHttp.send();

	return(oXMLHttp.responseXML);
}

function CallURLGetRs(sURL)
{
	var oRs = new ActiveXObject("ADODB.Recordset")

	oRs.Open(CallURLGetXML(sURL));

	return(oRs);
}

function CallWebServiceGetXML(sURL)
{
	return(CallWebServiceGetXMLDom(sURL).xml);
}

function CallWebServiceGetXMLDom(sURL)
{
	var oXMLHttp = new ActiveXObject("Microsoft.XMLHttp")

	oXMLHttp.open("GET", sURL, false);
	oXMLHttp.send();

	return(oXMLHttp.responseXML);
}

function CallWebServiceGetRs(sURL)
{
	var oRs = new ActiveXObject("ADODB.Recordset")
	var oRsXML = CallWebServiceGetXMLDom(sURL);

	oRsXML.loadXML(oRsXML.documentElement.text);

	oRs.Open(oRsXML);

	return(oRs);
}

var vbOKOnly			= 0		// Display OK button only. 
var vbOKCancel			= 1		// Display OK and Cancel buttons. 
var vbAbortRetryIgnore	= 2		// Display Abort, Retry, and Ignore buttons. 
var vbYesNoCancel		= 3		// Display Yes, No, and Cancel buttons. 
var vbYesNo				= 4		// Display Yes and No buttons. 
var vbRetryCancel		= 5		// Display Retry and Cancel buttons. 
var vbCritical			= 16	// Display Critical Message icon.  
var vbQuestion			= 32	// Display Warning Query icon. 
var vbExclamation		= 48	// Display Warning Message icon. 
var vbInformation		= 64	// Display Information Message icon. 
var vbDefaultButton1	= 0		// First button is default. 
var vbDefaultButton2	= 256	// Second button is default. 
var vbDefaultButton3	= 512	// Third button is default. 
var vbDefaultButton4	= 768	// Fourth button is default. 
var vbApplicationModal	= 0		// Application modal; the user must respond to the message box before continuing work in the current application. 
var vbSystemModal		= 4096	// System modal; all applications are suspended until the user responds to the message box.

var vbOK				= 1;	// OK
var vbCancel			= 2;	// Cancel
var vbAbort				= 3;	// Abort
var vbRetry				= 4;	// Retry
var vbIgnore			= 5;	// Ignore
var vbYes				= 6;	// Yes
var vbNo				= 7;	// No

function EnhancedAlert(sTitle, sMessage, nIcon, nModes)
{
	(g_bUseEnhanced) ? VBSMsgBox(sTitle, sMessage, nIcon, 0, 0, nModes) : alert(sMessage);
}

function EnhancedConfirm(sTitle, sMessage, nIcon, nDefaultButton, nModes)
{
	var nRetVal;

	if (g_bUseEnhanced)
	{
		nIcon = (nIcon == 0) ? 0 : 2;
		nDefaultButton = (nDefaultButton == 0) ? 0 : 1;

		nRetVal = VBSMsgBox(sTitle, sMessage, nIcon, 4, nDefaultButton, nModes);

		nRetVal = (nRetVal == 6);
	}
	else
	{
		nRetVal = confirm(sMessage);
	}

	return nRetVal;
}

function EnhancedPrompt(sTitle, sMessage, sDefault)
{
	var nRetVal;

	nRetVal = (g_bUseEnhanced) ? VBSInputBox(sTitle, sMessage, sDefault) : prompt(sMessage, sDefault);

	return nRetVal;
}

function IEBox(sTitle, sMessage, nIcon, nButtons, nDefaultButton, nModes)
{
	var nRetVal;

	nRetVal = (g_bUseEnhanced) ? VBSMsgBox(sTitle, sMessage, nIcon, nButtons, nDefaultButton, nModes) : null;

	return nRetVal;
}

