///////////////////////////////////////////////////////////////////////////////////////
// <== STATUS CODE TABLE
var		INSTALL_STATUS_OK				= 1;
var		INSTALL_STATUS_ERR				= 2;
var		INSTALL_STATUS_RUNNING			= 3;
// <== ERROR CODE TABLE
var		ERR_CODE_CAB_EXTRACT_ERR		= 1;
var		ERR_CODE_FILE_LEN_CEHCK_ERR		= 2;
var		ERR_CODE_DOWNLOAD_ERR			= 3;
// <== RUNNING CODE TABLE
var		RUN_CODE_DOWNLOAD_OK			= 1;
var		RUN_CODE_FILE_LEN_CEHCK_OK		= 2;
var		RUN_CODE_DOWNLOAD_START_FILE	= 3;
var		RUN_CODE_DOWNLOAD_END_FILE		= 4;
var		RUN_CODE_DOWNLOAD_PROGRESS		= 5;
var		RUN_CODE_CAB_REG_START_FILE		= 6;
var		RUN_CODE_CAB_REG_END_FILE		= 7;

var		RUN_CODE_CAB_WMF_SETUP_START	= 20;
var		RUN_CODE_CAB_WMF_SETUP_END		= 21;
var		RUN_CODE_CAB_DX_SETUP_START		= 30;
var		RUN_CODE_CAB_DX_SETUP_END		= 31;

///////////////////////////////////////////////////////////////////////////////////////
var		WIN_OS_UNKNOWN					= 0;
var		WIN_OS_WIN_95					= 100;
var		WIN_OS_WIN_95_OSR2				= 101;
var		WIN_OS_WIN_98					= 200;
var		WIN_OS_WIN_98_SE				= 201;
var		WIN_OS_WIN_ME					= 300;
var		WIN_OS_WIN_NT					= 400;
var		WIN_OS_WIN_2000					= 500;
var		WIN_OS_WIN_XP					= 600;
var		WIN_OS_WIN_2003					= 700;

///////////////////////////////////////////////////////////////////////////////////////
// CZInstallerInfo
///////////////////////////////////////////////////////////////////////////////////////
function CZInstallerInfo(szClassID, szVersion, szCodeBase, szSavePath, bDeleteCache, szType)
{
	this.m_szClassID	 = szClassID;
	this.m_szVersion	 = szVersion;
	this.m_szCodeBase	 = szCodeBase;
	this.m_szSavePath	 = szSavePath;
	this.m_bDeleteCache	 = bDeleteCache;
	this.m_szType		 = szType;
}

///////////////////////////////////////////////////////////////////////////////////////
// CZInstallX
///////////////////////////////////////////////////////////////////////////////////////
function CZInstallX()
{
	this.m_Div	        = null;
	this.m_ActiveX      = null;
	this.Install        = CZInstallX_Install;
	this.IsActvated     = CZInstallX_IsActvated;
	this.IEDlgReWidth   = CZInstallX_IEDlgReWidth;
	this.IEDlgReHeight  = CZInstallX_IEDlgReHeight;
}

///////////////////////////////////////////////////////////////////////////////////////
function CZInstallX_Install(szObjectID, nZIndex, nLeft, nTop, nWidth, nHeight, 
							szCodeBase, szVersion, szClassID)
{
 	///////////////////////////////////////////////////////////////////////////////////
	var szHtml = "";

	///////////////////////////////////////////////////////////////////////////////////
	szHtml += "<script LANGUAGE='JScript' FOR='" + szObjectID + "' EVENT='OnConnect()'>";
	szHtml += "if ( typeof( ConnectObject ) == 'function') ";
	szHtml += "{";
	szHtml += "	    ConnectObject(); ";
	szHtml += "}";
	szHtml += "</script>";

	///////////////////////////////////////////////////////////////////////////////////
	szHtml += "<script LANGUAGE='JScript' FOR='" + szObjectID + "' EVENT='OnInstallMsg(nCode, nSubCode, szMag1, szMag2, szMag3)'>";
	szHtml += "if ( typeof( DoInstallMsg ) == 'function') ";
	szHtml += "{";
	szHtml += "	    DoInstallMsg(" + szObjectID + ", nCode, nSubCode, szMag1, szMag2, szMag3); ";
	szHtml += "}";
	szHtml += "</script>";
	
	///////////////////////////////////////////////////////////////////////////////////
	szHtml += "<script LANGUAGE='JScript' FOR='" + szObjectID + "' EVENT='onreadystatechange()'> ";
	szHtml += "if ( document.all['" + szObjectID + "'].readyState == 4 ) ";
	szHtml += "{";
	szHtml += "     if ( typeof( OnZInstallOk ) == 'function') ";
	szHtml += "     {";
	szHtml += "	        OnZInstallOk(" + szObjectID + "); ";
	szHtml += "     }";
	szHtml += "}";
	szHtml += "</script>";

	if ( szClassID == null )	szClassID = "56DCC28F-A5B1-4D19-87BB-AEF094C10F37";
	
	///////////////////////////////////////////////////////////////////////////////////
	szHtml += "<div id='Div" + szObjectID + "' style='Z-INDEX: " + nZIndex + "; LEFT: " + nLeft + "px; TOP: " + nTop + "px; height:" + nHeight + "px; width:" + nWidth + "px; POSITION: absolute; VISIBILITY: visible;'>" +
					"<OBJECT id='" + szObjectID + "' height='" + nHeight + "' width='" + nWidth + "' border='0' " + 
						" classid='clsid:" + szClassID + "' " +
						" codeBase='" + szCodeBase + "#Version=" + szVersion + "'> " +
					"</OBJECT>" + 
				"</div>";

	if( typeof(Ax_Install) == 'function' )
	{
		Ax_Install(szHtml);
	}
	else
	{
		document.body.insertAdjacentHTML("beforeEnd", szHtml);
	}

    this.m_ActiveX = document.all["" + szObjectID];
	this.m_Div     = document.all["Div" + szObjectID];

	///////////////////////////////////////////////////////////////////////////////////
	if ( typeof( ConnectObject ) == 'function')
	{
		ConnectObject();
	}
}

///////////////////////////////////////////////////////////////////////////////////////
function CZInstallX_IsActvated()
{
	///////////////////////////////////////////////////////////////////////////////////
	try 
	{ 
		///////////////////////////////////////////////////////////////////////////////
		if ( typeof(this.m_ActiveX.GetOSVersion()) == "undefined" )
		{
			return false;
		}
	}
	///////////////////////////////////////////////////////////////////////////////////
	catch (e) 
	{
		return false;
	}

	///////////////////////////////////////////////////////////////////////////////////
	return true;
}

///////////////////////////////////////////////////////////////////////////////////////
function CZInstallX_IEDlgReWidth(nOldWidth)
{
	if(typeof(this.m_ActiveX.IsThemeActive) == 'undefined')	return nOldWidth;

	if ( this.m_ActiveX.IsThemeActive() )	nOldWidth += 4;
	return nOldWidth;
}

///////////////////////////////////////////////////////////////////////////////////////
function CZInstallX_IEDlgReHeight(nOldHeight)
{
	if(typeof(this.m_ActiveX.IsThemeActive) == 'undefined')	return nOldHeight;

	if ( this.m_ActiveX.IsThemeActive() )	nOldHeight += 4;
	
	///////////////////////////////////////////////////////////////////////////////////
	var szSPVer		= this.m_ActiveX.GetSPVersion();
	var szNewSPVer	= "0";
		
	for ( var nF = 0 ; nF < szSPVer.length ; nF ++ )
	{
		var szChar = szSPVer.substr(nF, 1);
		
		if ( szChar != "0" && ! isNaN(parseInt(szChar)) ) 
		{
			szNewSPVer = szSPVer.substr(nF, szSPVer.length - nF);
			break;
		}
	}
	
	///////////////////////////////////////////////////////////////////////////////////
	var nNewSPVer = isNaN(parseInt(szNewSPVer)) ? 0 : parseInt(szNewSPVer);
			
	///////////////////////////////////////////////////////////////////////////////////
	if	 ( this.m_ActiveX.GetOSVersion()	== WIN_OS_WIN_XP )
	{
		if ( nNewSPVer >= 200000 ) nOldHeight += 20;
	}
	else if ( this.m_ActiveX.GetOSVersion() == WIN_OS_WIN_2003 )
	{
		if ( nNewSPVer >= 200000 ) nOldHeight += 20;
	}
	
	///////////////////////////////////////////////////////////////////////////////////
	return nOldHeight;
}
