//Copyright 2003-2007 e-Software.cn. All Rights Reserved.
//Written by Gengjian. Email:gengs@163.com
//**Start Encode**
var g_NewDeviceInfo	= new Array;			
var g_CurNewDevice	= 0;

var g_oTable ;								
var g_oTBody0 ;								
var g_maxcols=8;							
var g_mincols=2;							


var g_ifDisplayInternalErrorInfo = false;	

var g_OSEnumDevFlag = 0;					
var g_EnumOverTimerHandle;					



var g_DeviceInfo                        = new Array         
var g_DeviceRows                        = 0                 


var g_NormalSystemDeviceInfoArray	    = new Array;		
var g_NormalSystemDeviceRows	        = 0;				

var g_UserDrvDeviceInfoArray            = new Array         
var g_UserDrvDeviceRows	                = 0                 

var g_DeviceRowsNeedExportDriver		= 0                 

var g_ExportedDeviceArray               = new Array
var g_ExportedDeviceRows                = 0
var g_ExportedSuccessDeviceRows         = 0

var g_NoExportDeviceArray                   = new Array
var g_NoExportDeviceRows                = 0

var g_UserSelectExpDrvNumber            = 0

var g_DevErrDeviceInfoArray             = new Array();
var g_DevErrDeviceRows	                = 0                 



var g_ImportedDeviceArray               = new Array
var g_ImportedDeviceRows                = 0
var g_ImportedSuccessDeviceRows         = 0

var g_NoImportDeviceArray               = new Array
var g_NoImportDeviceRows                = 0

var g_UserSelectImpDrvNumber            = 0

var UPLOAD_CAB_FILE_BUFFER_SIZE     = 10240       
var DOWNLOAD_CAB_FILE_BUFFER_SIZE   = 10240       


var CGI_UPLOAD_CAB_FILE_BUFFER_SIZE   = 33*1024       
var CGI_DOWNLOAD_CAB_FILE_BUFFER_SIZE = 33*1024       


var g_UserID                  = 0
var g_UserExportedDriverRows  = 0

var g_CanUserConnectToServer            = false

var g_NeedReenum 		= 0;				
var g_MaxDeviceIndex 	= 0;				

var g_DrvInstLogFilePath	= ""    
var g_AppLaunchPath			= ""	
var g_ClientStartPath		= ""	
var g_DrvInstLogFileName	= "drvinst.log"






var INF_ENCRYPT_CONST_STRING = "e-Software.cn"   



var CLIENT_ACCESS_MODE_SERVER_CLIENT = "ServerClient"
var CLIENT_ACCESS_MODE_USER_CLIENT   = "UserClient"




var g_SkipExpCurDrvFlag


var g_SkipImpCurDrvFlag




var UNKNOWN_DEVICE_ID           =  "UNKNOWN\\NULL_DEVICE_NULL_DEVICE_NULL_DEVICE"

var DOWNLOAD_PATH               = "eDrivers_Backup"



var g_UserHostSerialNumber      = ""

var g_DownloadPath              = ""        

var g_DefaultLoader             = "DrvFetch"         


var g_CaseID                    = ""               


var g_AllMachineDeviceList      = new Array()       

var g_AllMatchingDriverList     = new Array()       
var g_CurMachineID              = 0                 



function DisplayMessage( Msg )
{
	InputDataBox4.value		= InputDataBox4.value + "\n" + Msg;
	InputDataBox4.scrollTop = InputDataBox4.scrollHeight ; 
	
	if (g_DrvInstLogFilePath)
	{
		
		
		
		
		
		
		DrvInst.AppendStringToFileEnd( g_DrvInstLogFilePath , "\r\n" + GetLocalTime() + Msg)
	}
	
	else
	{
		
	}
}

function GetLocalTime()
{
		var d  = new Date();
        var year  = d.getYear()
        var month = (d.getMonth() + 1)
        var date  = d.getDate()
        var hours = d.getHours()
        var min   = d.getMinutes()
        var sec   = d.getSeconds()
        var mil   = d.getMilliseconds().toString(10)
            year  = year + "-"
            month = ( month <10 ) ? "0" + month + "-" : month + "-"
            date  = ( date  <10 ) ? "0" + date  + " " : date  + " "
            hours = ( hours <10 ) ? "0" + hours + ":" : hours + ":"
            min   = ( min   <10 ) ? "0" + min   + ":" : min   + ":"
            sec   = ( sec   <10 ) ? "0" + sec   + ":" : sec   + ":"
            mil   = "0000".substring(0,4-mil.length-1) + mil
		var	str   = "[ " + year + month + date + hours + min + sec + mil  + " ] "
   return( str )
}


function StartDriverPatch()
{
    
    var CookieFlag = GetCookie( "OpenRunLogWinFlag" )
	if ( ( CookieFlag == "true") || !CookieFlag ) restoreTransientMessage()


	
	
	
	
	
	
	

	ResetInitVal();
	
	

	
	
	
	
	
	var hKey4 = DrvCert.RegOpenKey( 2 , "SOFTWARE\\Walker\\DrvInst\\Setup")
	g_DrvInstLogFilePath = DrvCert.RegQueryValue( hKey4 , "DrvInstLogFilePath" )
	
	
	if (!g_DrvInstLogFilePath && g_ClientStartPath) g_DrvInstLogFilePath = g_ClientStartPath + "\\" + g_DrvInstLogFileName


	DisplayMessage( "===============================================================" )
	DisplayMessage( "" + PromptArray["drvfetch.js_202_1"] + "·" + PromptArray["drvfetch.js_202_2"] + "..." )

	
	if (DrvInst.DrvInstInit() == 0)
	{
		return -2;
	}
	g_ifDisplayInternalErrorInfo = false;

	var hostname;
	hostname = ServerName.value;
	DrvInst.DownloadHostname = hostname;
	g_CanUserConnectToServer = DrvInst.ConnectAddressLocal(hostname);
	if (g_CanUserConnectToServer)
	{
		DisplayMessage(	"" + PromptArray["drvfetch.js_217_1"] + "http:\/\/" + hostname + "" + PromptArray["drvfetch.js_217_2"] + "");

	}
	else
	{
		DisplayMessage("" + PromptArray["drvfetch.js_222_1"] + "http:\/\/" + hostname + "" + PromptArray["drvfetch.js_222_2"] + "");
        
        
        
        
		
		
        
	}

	g_NormalSystemDeviceRows    = 0;
    g_DeviceRows                = 0

	g_UserDrvDeviceRows         = 0
	g_DevErrDeviceRows          = 0
	g_UserSelectExpDrvNumber    = 0
	g_UserSelectImpDrvNumber    = 0

	
    g_DeviceRowsNeedExportDriver	= 0

    g_ExportedDeviceRows        = 0
    g_ImportedDeviceRows        = 0
    g_ExportedSuccessDeviceRows = 0
    g_NoExportDeviceRows        = 0

	DrvInst.EnumDevice(0);

    
    EnumMachine()

    return 0;
}




function ResetInitVal()
{
	oTableContainer.innerText = ""

	var UrlPathname = location.pathname;	
	var UrlHostname = location.hostname;	
	
	
	if (UrlHostname == "")
	{
		
		UrlPathname = UrlPathname.replace( /%20/gi , " ");
		if (UrlPathname.charAt(0) == "/")
		{
			
			UrlPathname = UrlPathname.substring(1 , UrlPathname.lastIndexOf("\\")); 
		}
		else
		{
			UrlPathname = UrlPathname.substring(0 , UrlPathname.lastIndexOf("\\")); 
		}
	}
	
	else
	{
		
		UrlPathname = "";
	}

	g_ClientStartPath = UrlPathname

	
	DrvInst.DownloadHostname = UrlHostname;
	DrvInst.CurrentWorkDirectory = UrlPathname;

	(DrvInst.CurrentWorkDirectory == "")
		?DisplayMessage("" + PromptArray["drvfetch.js_295_1"] + "NULL")
		:DisplayMessage("" + PromptArray["drvfetch.js_296_1"] + "" + DrvInst.CurrentWorkDirectory);

	

	return 0;
}




var g_Finish = 0;
var g_timerID="";



function ApplyInitProcessEvent()
{
	
}








function ImpExpApplyEnumDeviceEvent()
{
	var oRow, oCell;
	var j;
	var stock = new Array;

	
	

    
	GetDeviceInfoToArray(stock);

    
    SaveDeviceInfoToArray(stock,g_DeviceInfo,g_DeviceRows);
    g_DeviceRows ++;

    
	if ( !stock[5] && !(stock[7] & 0x00080000) )
	{
		
		SaveDeviceInfoToArray(stock,g_NormalSystemDeviceInfoArray,g_NormalSystemDeviceRows);
	
		g_NormalSystemDeviceRows ++;

		return 0;
	}
	

	

	
	
	
	if ( !stock[5] )
	{
		
		SaveDeviceInfoToArray(stock , g_UserDrvDeviceInfoArray , g_UserDrvDeviceRows);
        
		g_UserDrvDeviceInfoArray[ g_UserDrvDeviceRows + ',21']= true
        
        g_UserDrvDeviceRows ++

	}
	
    
	else
	{
        
        
        
        
        
        
        
        
        
        if ( stock[3] )
        {
            
            SaveDeviceInfoToArray(stock,g_NormalSystemDeviceInfoArray,g_NormalSystemDeviceRows);
            g_NormalSystemDeviceRows ++;
        }
        else
        {

            
            SaveDeviceInfoToArray(stock , g_DevErrDeviceInfoArray , g_DevErrDeviceRows);
            g_DevErrDeviceInfoArray[ g_DevErrDeviceRows + ',21']= true
            g_DevErrDeviceRows ++
        }
        
	}

	

	
	
	
	
	
    
	
    
	
	
	
	
	
	
	
	


}


















function ApplyMsgEvent()
{
	if (!g_ifDisplayInternalErrorInfo) return 0;

	if (DrvInst.InitExitCode == 0) 
	{ 
		
		
		DisplayMessage(DrvInst.StatusString);
	} 
	else 
	{ 
		DisplayMessage(DrvInst.StatusString + "(code: 0x000" + DrvInst.InitExitCode.toString(16)  + ")");
	} 
}




function SaveDeviceInfoToArray(DeviceInfo,SavetoArray,row)
{
	SavetoArray[row + ",0"  ] = g_DeviceRows;
	SavetoArray[row + ",1"  ] = DeviceInfo[1];
	SavetoArray[row + ",2"  ] = DeviceInfo[2];
	SavetoArray[row + ",3"  ] = DeviceInfo[3];
	SavetoArray[row + ",4"  ] = DeviceInfo[4];
	SavetoArray[row + ",5"  ] = DeviceInfo[5];
	SavetoArray[row + ",6"  ] = DeviceInfo[6];
	SavetoArray[row + ",7"  ] = DeviceInfo[7];
	SavetoArray[row + ",8"  ] = DeviceInfo[8];
	SavetoArray[row + ",9"  ] = DeviceInfo[9];
	SavetoArray[row + ",10" ] = DeviceInfo[10];
	SavetoArray[row + ",11" ] = DeviceInfo[11];
	SavetoArray[row + ",12" ] = DeviceInfo[12];
	SavetoArray[row + ",13" ] = DeviceInfo[13];
}
function ReadArrayToDeviceInfo(DeviceInfo,ReadToArray,row)
{
	DeviceInfo[0]  = ReadToArray[row + ",0"  ] ;
	DeviceInfo[1]  = ReadToArray[row + ",1"  ] ;
	DeviceInfo[2]  = ReadToArray[row + ",2"  ] ;
	DeviceInfo[3]  = ReadToArray[row + ",3"  ] ;
	DeviceInfo[4]  = ReadToArray[row + ",4"  ] ;
	DeviceInfo[5]  = ReadToArray[row + ",5"  ] ;
	DeviceInfo[6]  = ReadToArray[row + ",6"  ] ;
	DeviceInfo[7]  = ReadToArray[row + ",7"  ] ;
	DeviceInfo[8]  = ReadToArray[row + ",8"  ] ;
	DeviceInfo[9]  = ReadToArray[row + ",9"  ] ;
	DeviceInfo[10] = ReadToArray[row + ",10" ] ;
	DeviceInfo[11] = ReadToArray[row + ",11" ] ;
	DeviceInfo[12] = ReadToArray[row + ",12" ] ;
	DeviceInfo[13] = ReadToArray[row + ",13" ] ;
}
function GetDeviceInfoToArray(DeviceInfo)
{
	DeviceInfo[0]  = 0;
	DeviceInfo[1]  = DrvInst.DeviceIndex;
	DeviceInfo[2]  = DrvInst.DeviceClassID;
	DeviceInfo[3]  = DrvInst.DeviceClassType;
	DeviceInfo[4]  = DrvInst.DeviceStatus;
	DeviceInfo[5]  = DrvInst.DeviceProblem;
	DeviceInfo[6]  = DrvInst.DeviceName;
	DeviceInfo[7]  = DrvInst.BackupDriverStatus;
	DeviceInfo[8]  = DrvInst.HardwareID;
	DeviceInfo[9]  = DrvInst.CompatibleID;
	DeviceInfo[10] = DrvInst.MatchingDeviceID;
	DeviceInfo[11] = DrvInst.DriverDate;
	DeviceInfo[12] = DrvInst.DriverVer;
	DeviceInfo[13] = DrvInst.DriverProvider;
    
    
    if ( DeviceInfo[5] != 0 ) DeviceInfo[11] = ""
}


function TranslateDeviceInfoToArray(DeviceInfo,OrgDeviceInfo,CurrentRow,ItemNumber , MachineID )
{
	var devStatNumbers = 32 ; 
	var j;
	
	var deviceClass = new Array;
	var deviceClassImg = new Array;
				 
				 
	deviceClass[ 1] = "" + PromptArray["DrvExp.js_913_1"] + "";		            deviceClassImg[ 1] = "power.gif";			
	deviceClass[ 2] = "" + PromptArray["DrvExp.js_914_1"] + "";                 deviceClassImg[ 2] = "CDROM.gif";			
	deviceClass[ 3] = "" + PromptArray["DrvExp.js_915_1"] + "";	                deviceClassImg[ 3] = "minidisk.gif";		
	deviceClass[ 4] = "" + PromptArray["DrvExp.js_916_1"] + "";                 deviceClassImg[ 4] = "card.gif";			
	deviceClass[ 5] = "" + PromptArray["DrvExp.js_917_1"] + "";                 deviceClassImg[ 5] = "floppy.gif"; 			
	deviceClass[ 6] = "" + PromptArray["DrvExp.js_918_1"] + "";                 deviceClassImg[ 6] = "floppy.gif";			
	deviceClass[ 7] = "" + PromptArray["DrvExp.js_919_1"] + "";                 deviceClassImg[ 7] = "minidisk.gif"; 		
	deviceClass[ 8] = "" + PromptArray["DrvExp.js_920_1"] + "";                 deviceClassImg[ 8] = "hid.gif";		        
	deviceClass[ 9] = "" + PromptArray["DrvExp.js_921_1"] + "";                 deviceClassImg[ 9] = "hardware.gif";		
	deviceClass[10] = "" + PromptArray["DrvExp.js_922_1"] + "";                 deviceClassImg[10] = "hardware.gif";		
	deviceClass[11] = "" + PromptArray["DrvExp.js_923_1"] + "";                 deviceClassImg[11] = "hardware.gif";		
	deviceClass[12] = "" + PromptArray["DrvExp.js_924_1"] + "";                 deviceClassImg[12] = "scanner.gif";			
	deviceClass[13] = "" + PromptArray["DrvExp.js_925_1"] + "";                 deviceClassImg[13] = "Ir.gif";				
	deviceClass[14] = "" + PromptArray["DrvExp.js_926_1"] + "";                 deviceClassImg[14] = "keyboard.gif";		
	deviceClass[15] = "" + PromptArray["DrvExp.js_927_1"] + "";                 deviceClassImg[15] = "media.gif";			
	deviceClass[16] = "" + PromptArray["DrvExp.js_928_1"] + "";                 deviceClassImg[16] = "chip.GIF";			
	deviceClass[17] = "" + PromptArray["DrvExp.js_929_1"] + "";                 deviceClassImg[17] = "modem.gif";			
	deviceClass[18] = "" + PromptArray["DrvExp.js_930_1"] + "";                 deviceClassImg[18] = "monitor.gif";			
	deviceClass[19] = "" + PromptArray["DrvExp.js_931_1"] + "";                 deviceClassImg[19] = "mouse.gif";			
	deviceClass[20] = "" + PromptArray["DrvExp.js_932_1"] + "";                 deviceClassImg[20] = "hardware.gif";		
	deviceClass[21] = "" + PromptArray["DrvExp.js_933_1"] + "";                 deviceClassImg[21] = "sound.gif";			
	deviceClass[22] = "" + PromptArray["DrvExp.js_934_1"] + "";                 deviceClassImg[22] = "multiport.gif";		
	deviceClass[23] = "" + PromptArray["DrvExp.js_935_1"] + "";                 deviceClassImg[23] = "network.gif";			
	deviceClass[24] = "" + PromptArray["DrvExp.js_936_1"] + "";                 deviceClassImg[24] = "network.gif";			
	deviceClass[25] = "" + PromptArray["DrvExp.js_937_1"] + "";                 deviceClassImg[25] = "network.gif";			
	deviceClass[26] = "" + PromptArray["DrvExp.js_938_1"] + "";                 deviceClassImg[26] = "network.gif";			
	deviceClass[27] = "" + PromptArray["DrvExp.js_939_1"] + "";                 deviceClassImg[27] = "hardware.gif";		
	deviceClass[28] = "" + PromptArray["DrvExp.js_940_1"] + "";                 deviceClassImg[28] = "port.gif";			
	deviceClass[29] = "" + PromptArray["DrvExp.js_941_1"] + "";                 deviceClassImg[29] = "printer.gif";			
	deviceClass[30] = "" + PromptArray["DrvExp.js_942_1"] + "";                 deviceClassImg[30] = "printer.gif";			
	deviceClass[31] = "" + PromptArray["DrvExp.js_943_1"] + "";                 deviceClassImg[31] = "cpu.gif";				
	deviceClass[32] = "" + PromptArray["DrvExp.js_944_1"] + "";                 deviceClassImg[32] = "scsi.gif";			
	deviceClass[33] = "" + PromptArray["DrvExp.js_945_1"] + "";                 deviceClassImg[33] = "hardware.gif";		
	deviceClass[34] = "" + PromptArray["DrvExp.js_946_1"] + "";                 deviceClassImg[34] = "minidisk.gif";		
	deviceClass[35] = "" + PromptArray["DrvExp.js_947_1"] + "";                 deviceClassImg[35] = "system.gif";			
	deviceClass[36] = "" + PromptArray["DrvExp.js_948_1"] + "";                 deviceClassImg[36] = "tape.gif";			
	deviceClass[37] = "" + PromptArray["DrvExp.js_949_1"] + "";                 deviceClassImg[37] = "usb.gif";				
	deviceClass[38] = "" + PromptArray["DrvExp.js_950_1"] + "";                 deviceClassImg[38] = "card.gif";			
	deviceClass[39] = "" + PromptArray["DrvExp.js_951_1"] + "";                 deviceClassImg[39] = "hardware.gif";		
	deviceClass[40] = "" + PromptArray["DrvExp.js_952_1"] + "";                 deviceClassImg[40] = "hardware.gif";		
	deviceClass[41] = "" + PromptArray["DrvExp.js_953_1"] + "";                 deviceClassImg[41] = "computer.gif";		
	deviceClass[42] = "" + PromptArray["DrvExp.js_954_1"] + "";                 deviceClassImg[42] = "system.gif";			
	deviceClass[43] = "" + PromptArray["DrvExp.js_955_1"] + "";                 deviceClassImg[43] = "hardware.gif";		
	deviceClass[44] = "" + PromptArray["DrvExp.js_956_1"] + "";                 deviceClassImg[44] = "nonpnp.gif";			
	deviceClass[45] = "" + PromptArray["DrvExp.js_957_1"] + "";                 deviceClassImg[45] = "nonpnp.gif";			
	deviceClass[46] = "" + PromptArray["DrvExp.js_958_1"] + "";                 deviceClassImg[46] = "unknown.gif";			
	deviceClass[47] = "" + PromptArray["DrvExp.js_959_1"] + "";                 deviceClassImg[47] = "printer.gif";			
	deviceClass[48] = "" + PromptArray["DrvExp.js_960_1"] + "";                 deviceClassImg[48] = "game.gif";			

	var DevStatusFlags  = new Array;

	
	var DevStatusString = new Array;

	DevStatusFlags[ 1] = 0x00000001 ;DevStatusString[ 1] = "" + PromptArray["DrvExp.js_967_1"] + "";						
	DevStatusFlags[ 2] = 0x00000002 ;DevStatusString[ 2] = "" + PromptArray["DrvExp.js_968_1"] + "";					    
	DevStatusFlags[ 3] = 0x00000004 ;DevStatusString[ 3] = "" + PromptArray["DrvExp.js_969_1"] + "";					    
	DevStatusFlags[ 4] = 0x00000008 ;DevStatusString[ 4] = "" + PromptArray["DrvExp.js_970_1"] + "";					    
	DevStatusFlags[ 5] = 0x00000010 ;DevStatusString[ 5] = "" + PromptArray["DrvExp.js_971_1"] + "";						
	DevStatusFlags[ 6] = 0x00000020 ;DevStatusString[ 6] = "" + PromptArray["DrvExp.js_972_1"] + "";						
	DevStatusFlags[ 7] = 0x00000040 ;DevStatusString[ 7] = "" + PromptArray["DrvExp.js_973_1"] + "";			            
	DevStatusFlags[ 8] = 0x00000080 ;DevStatusString[ 8] = "" + PromptArray["DrvExp.js_974_1"] + "";						
	DevStatusFlags[ 9] = 0x00000100 ;DevStatusString[ 9] = "" + PromptArray["DrvExp.js_975_1"] + "";			            
	DevStatusFlags[10] = 0x00000200 ;DevStatusString[10] = "" + PromptArray["DrvExp.js_976_1"] + "";			            
	DevStatusFlags[11] = 0x00000400 ;DevStatusString[11] = "" + PromptArray["DrvExp.js_977_1"] + "";					    
	DevStatusFlags[12] = 0x00000800 ;DevStatusString[12] = "" + PromptArray["DrvExp.js_978_1"] + "";						
	DevStatusFlags[13] = 0x00001000 ;DevStatusString[13] = "" + PromptArray["DrvExp.js_979_1"] + "";						
	DevStatusFlags[14] = 0x00002000 ;DevStatusString[14] = "" + PromptArray["DrvExp.js_980_1"] + "";			            
	DevStatusFlags[15] = 0x00004000 ;DevStatusString[15] = "" + PromptArray["DrvExp.js_981_1"] + "";						
	DevStatusFlags[16] = 0x00008000 ;DevStatusString[16] = "" + PromptArray["DrvExp.js_982_1"] + "";						
	DevStatusFlags[17] = 0x00010000 ;DevStatusString[17] = "" + PromptArray["DrvExp.js_983_1"] + "";						
	DevStatusFlags[18] = 0x00020000 ;DevStatusString[18] = "" + PromptArray["DrvExp.js_984_1"] + "";						
	DevStatusFlags[19] = 0x00040000 ;DevStatusString[19] = "" + PromptArray["DrvExp.js_985_1"] + "";					    
	DevStatusFlags[20] = 0x00080000 ;DevStatusString[20] = "" + PromptArray["DrvExp.js_986_1"] + "";			            
	DevStatusFlags[21] = 0x00100000 ;DevStatusString[21] = "" + PromptArray["DrvExp.js_987_1"] + "";					    
	DevStatusFlags[22] = 0x00200000 ;DevStatusString[22] = "" + PromptArray["DrvExp.js_988_1"] + "";			            
	DevStatusFlags[23] = 0x00400000 ;DevStatusString[23] = "" + PromptArray["DrvExp.js_989_1"] + "";		                
	DevStatusFlags[24] = 0x00800000 ;DevStatusString[24] = "";
	DevStatusFlags[25] = 0x01000000 ;DevStatusString[25] = "";
	DevStatusFlags[26] = 0x02000000 ;DevStatusString[26] = "" + PromptArray["DrvExp.js_992_1"] + "";					    
	DevStatusFlags[27] = 0x04000000 ;DevStatusString[27] = "" + PromptArray["DrvExp.js_993_1"] + "";				        
	DevStatusFlags[28] = 0x08000000 ;DevStatusString[28] = "" + PromptArray["DrvExp.js_994_1"] + "";				        
	DevStatusFlags[29] = 0x10000000 ;DevStatusString[29] = "" + PromptArray["DrvExp.js_995_1"] + "";				        
	DevStatusFlags[30] = 0x20000000 ;DevStatusString[30] = "" + PromptArray["DrvExp.js_996_1"] + "";                        
	DevStatusFlags[31] = 0x40000000 ;DevStatusString[31] = "" + PromptArray["DrvExp.js_997_1"] + "";			            
	DevStatusFlags[32] = 0x80000000 ;DevStatusString[32] = "" + PromptArray["DrvExp.js_998_1"] + "";					    

    var DevProblem = new Array;
	DevProblem[" 1,1"]	= 0x00000001;  DevProblem[" 2,1"]  = "" + PromptArray["DrvExp.js_1001_1"] + "";
	DevProblem[" 1,2"]	= 0x00000002;  DevProblem[" 2,2"]  = "" + PromptArray["DrvExp.js_1002_1"] + "";
	DevProblem[" 1,3"]	= 0x00000003;  DevProblem[" 2,3"]  = "" + PromptArray["DrvExp.js_1003_1"] + "";
	DevProblem[" 1,4"]	= 0x00000004;  DevProblem[" 2,4"]  = "" + PromptArray["DrvExp.js_1004_1"] + "";
	DevProblem[" 1,5"]	= 0x00000005;  DevProblem[" 2,5"]  = "" + PromptArray["DrvExp.js_1005_1"] + "";
	DevProblem[" 1,6"]	= 0x00000006;  DevProblem[" 2,6"]  = "" + PromptArray["DrvExp.js_1006_1"] + "";
	DevProblem[" 1,7"]	= 0x00000007;  DevProblem[" 2,7"]  = "" + PromptArray["DrvExp.js_1007_1"] + "";
	DevProblem[" 1,8"]	= 0x00000008;  DevProblem[" 2,8"]  = "" + PromptArray["DrvExp.js_1008_1"] + "";
	DevProblem[" 1,9"]	= 0x00000009;  DevProblem[" 2,9"]  = "" + PromptArray["DrvExp.js_1009_1"] + "";
	DevProblem[" 1,10"] = 0x0000000A;  DevProblem[" 2,10"] = "" + PromptArray["DrvExp.js_1010_1"] + "";
	DevProblem[" 1,11"] = 0x0000000B;  DevProblem[" 2,11"] = "" + PromptArray["DrvExp.js_1011_1"] + "";
	DevProblem[" 1,12"] = 0x0000000C;  DevProblem[" 2,12"] = "" + PromptArray["DrvExp.js_1012_1"] + "";
	DevProblem[" 1,13"] = 0x0000000D;  DevProblem[" 2,13"] = "" + PromptArray["DrvExp.js_1013_1"] + "";
	DevProblem[" 1,14"] = 0x0000000E;  DevProblem[" 2,14"] = "" + PromptArray["DrvExp.js_1014_1"] + "";
	DevProblem[" 1,15"] = 0x0000000F;  DevProblem[" 2,15"] = "" + PromptArray["DrvExp.js_1015_1"] + "";
	DevProblem[" 1,16"] = 0x00000010;  DevProblem[" 2,16"] = "" + PromptArray["DrvExp.js_1016_1"] + "";
	DevProblem[" 1,17"] = 0x00000011;  DevProblem[" 2,17"] = "" + PromptArray["DrvExp.js_1017_1"] + "";
	DevProblem[" 1,18"] = 0x00000012;  DevProblem[" 2,18"] = "" + PromptArray["DrvExp.js_1018_1"] + "";
	DevProblem[" 1,19"] = 0x00000013;  DevProblem[" 2,19"] = "" + PromptArray["DrvExp.js_1019_1"] + "";           
	DevProblem[" 1,20"] = 0x00000014;  DevProblem[" 2,20"] = "" + PromptArray["DrvExp.js_1020_1"] + "";      
	DevProblem[" 1,21"] = 0x00000015;  DevProblem[" 2,21"] = "" + PromptArray["DrvExp.js_1021_1"] + "";        
	DevProblem[" 1,22"] = 0x00000016;  DevProblem[" 2,22"] = "" + PromptArray["DrvExp.js_1022_1"] + "";        
	DevProblem[" 1,23"] = 0x00000017;  DevProblem[" 2,23"] = "" + PromptArray["DrvExp.js_1023_1"] + ""; 
	DevProblem[" 1,24"] = 0x00000018;  DevProblem[" 2,24"] = "" + PromptArray["DrvExp.js_1024_1"] + "";           
	DevProblem[" 1,25"] = 0x00000019;  DevProblem[" 2,25"] = "" + PromptArray["DrvExp.js_1025_1"] + "";        
	DevProblem[" 1,26"] = 0x0000001A;  DevProblem[" 2,26"] = "" + PromptArray["DrvExp.js_1026_1"] + "";                
	DevProblem[" 1,27"] = 0x0000001B;  DevProblem[" 2,27"] = "" + PromptArray["DrvExp.js_1027_1"] + "";             
	DevProblem[" 1,28"] = 0x0000001C;  DevProblem[" 2,28"] = "" + PromptArray["DrvExp.js_1028_1"] + "";                
	DevProblem[" 1,29"] = 0x0000001D;  DevProblem[" 2,29"] = "" + PromptArray["DrvExp.js_1029_1"] + "";                  
	DevProblem[" 1,30"] = 0x0000001E;  DevProblem[" 2,30"] = "" + PromptArray["DrvExp.js_1030_1"] + "";             
	DevProblem[" 1,31"] = 0x0000001F;  DevProblem[" 2,31"] = "" + PromptArray["DrvExp.js_1031_1"] + ""; 
	DevProblem[" 1,32"] = 0x00000020;  DevProblem[" 2,32"] = "" + PromptArray["DrvExp.js_1032_1"] + "";                
	DevProblem[" 1,33"] = 0x00000021;  DevProblem[" 2,33"] = "" + PromptArray["DrvExp.js_1033_1"] + "";                
	DevProblem[" 1,34"] = 0x00000022;  DevProblem[" 2,34"] = "" + PromptArray["DrvExp.js_1034_1"] + "";                  
	DevProblem[" 1,35"] = 0x00000023;  DevProblem[" 2,35"] = "" + PromptArray["DrvExp.js_1035_1"] + "";           
	DevProblem[" 1,36"] = 0x00000024;  DevProblem[" 2,36"] = "" + PromptArray["DrvExp.js_1036_1"] + "";                 
	DevProblem[" 1,37"] = 0x00000025;  DevProblem[" 2,37"] = "" + PromptArray["DrvExp.js_1037_1"] + "";
	DevProblem[" 1,38"] = 0x00000026;  DevProblem[" 2,38"] = "" + PromptArray["DrvExp.js_1038_1"] + "";


	var DrvBackupStatusFlags  = new Array;
	var DrvBackupStatusString = new Array;

	DrvBackupStatusFlags[ 1] = 0x00000001 ; DrvBackupStatusString[ 1] = "" + PromptArray["DrvExp.js_1044_1"] + "";
	DrvBackupStatusFlags[ 2] = 0x00000002 ; DrvBackupStatusString[ 2] = "" + PromptArray["DrvExp.js_1045_1"] + "";
	DrvBackupStatusFlags[ 3] = 0x00000004 ; DrvBackupStatusString[ 3] = "" + PromptArray["DrvExp.js_1046_1"] + "";
	DrvBackupStatusFlags[ 4] = 0x00000008 ; DrvBackupStatusString[ 4] = "" + PromptArray["DrvExp.js_1047_1"] + "";
	DrvBackupStatusFlags[ 5] = 0x00000010 ; DrvBackupStatusString[ 5] = "" + PromptArray["DrvExp.js_1048_1"] + "";
	DrvBackupStatusFlags[ 6] = 0x00000020 ; DrvBackupStatusString[ 6] = "" + PromptArray["DrvExp.js_1049_1"] + "";			
	DrvBackupStatusFlags[ 7] = 0x00000040 ; DrvBackupStatusString[ 7] = "" + PromptArray["DrvExp.js_1050_1"] + "";	
	DrvBackupStatusFlags[ 8] = 0x00000080 ; DrvBackupStatusString[ 8] = "" + PromptArray["DrvExp.js_1051_1"] + "";
	DrvBackupStatusFlags[ 9] = 0x00000100 ; DrvBackupStatusString[ 9] = "" + PromptArray["DrvExp.js_1052_1"] + "";
	DrvBackupStatusFlags[10] = 0x00000200 ; DrvBackupStatusString[10] = "";
	DrvBackupStatusFlags[11] = 0x00000400 ; DrvBackupStatusString[11] = "";
	DrvBackupStatusFlags[12] = 0x00000800 ; DrvBackupStatusString[12] = "";
	DrvBackupStatusFlags[13] = 0x00001000 ; DrvBackupStatusString[13] = "";
	DrvBackupStatusFlags[14] = 0x00002000 ; DrvBackupStatusString[14] = "";
	DrvBackupStatusFlags[15] = 0x00004000 ; DrvBackupStatusString[15] = "";
	DrvBackupStatusFlags[16] = 0x00080000 ; DrvBackupStatusString[16] = "" + PromptArray["DrvExp.js_1059_1"] + "";	
	DrvBackupStatusFlags[17] = 0x00010000 ; DrvBackupStatusString[17] = "" + PromptArray["DrvExp.js_1060_1"] + "";
	DrvBackupStatusFlags[18] = 0x00020000 ; DrvBackupStatusString[18] = "" + PromptArray["DrvExp.js_1061_1"] + "";
	DrvBackupStatusFlags[19] = 0x00040000 ; DrvBackupStatusString[19] = "" + PromptArray["DrvExp.js_1062_1"] + "";
	DrvBackupStatusFlags[20] = 0x00008000 ; DrvBackupStatusString[20] = "";
	DrvBackupStatusFlags[21] = 0x00100000 ; DrvBackupStatusString[21] = "" + PromptArray["DrvExp.js_1064_1"] + "";
	DrvBackupStatusFlags[22] = 0x00200000 ; DrvBackupStatusString[22] = "" + PromptArray["DrvExp.js_1065_1"] + "";
	DrvBackupStatusFlags[23] = 0x00400000 ; DrvBackupStatusString[23] = "" + PromptArray["DrvExp.js_1066_1"] + "";
	DrvBackupStatusFlags[24] = 0x00800000 ; DrvBackupStatusString[24] = "";
	DrvBackupStatusFlags[25] = 0x01000000 ; DrvBackupStatusString[25] = "";
	DrvBackupStatusFlags[26] = 0x02000000 ; DrvBackupStatusString[26] = "";
	DrvBackupStatusFlags[27] = 0x04000000 ; DrvBackupStatusString[27] = "";
	DrvBackupStatusFlags[28] = 0x08000000 ; DrvBackupStatusString[28] = "";
	DrvBackupStatusFlags[29] = 0x10000000 ; DrvBackupStatusString[29] = "";
	DrvBackupStatusFlags[30] = 0x20000000 ; DrvBackupStatusString[30] = "";
	DrvBackupStatusFlags[31] = 0x40000000 ; DrvBackupStatusString[31] = "";
	DrvBackupStatusFlags[32] = 0x80000000 ; DrvBackupStatusString[32] = "";

	
	
	DeviceInfo["0"]			= ItemNumber;
	
	DeviceInfo["1"]			= OrgDeviceInfo[CurrentRow + ",1"] ; 

	
	(deviceClass[OrgDeviceInfo[CurrentRow + ",2"]]) 
		? DeviceInfo["2"]	= 
							"<img border='0' src='img/"
							+ deviceClassImg[OrgDeviceInfo[CurrentRow + ",2"]] + "' "
							+ " alt='" + deviceClass[OrgDeviceInfo[CurrentRow + ",2"]] 
							+ "' width='16' height='16' "
							+ " id='img" + ItemNumber + "'" 
							+ " onMouseMove='this.style.cursor=\"help\"' "
							
							+ " onMoveOut=DeviceMouseMoveOutEvent('" + ItemNumber + "')" 
							+ " >" 
		: DeviceInfo["2"]	= 
							"<img border='0' src='img/unknown.gif'"
							+ "alt='" + PromptArray["drvfetch.js_703_1"] + "" + OrgDeviceInfo[CurrentRow + ",2"] + ""
							+ "' width='16' height='16' "
							+ " id='img" + ItemNumber + "'" 
							+ " onMouseMove='this.style.cursor=\"help\"' "
							
							
							+ " onMoveOut=DeviceMouseMoveOutEvent('" + ItemNumber + "')" 
							+ " >";
	
	
	var Stat2			= OrgDeviceInfo[CurrentRow + ",4"] ; 
	var resu2			= Stat2 &  DevStatusFlags[31];
	
	
	if (OrgDeviceInfo[CurrentRow + ",3"])
	{
		DeviceInfo["3"]			= "<img border='0' src='img/3.gif'" 
							+ " onMouseMove='this.style.cursor=\"help\"' "
							+ "alt='" + PromptArray["drvfetch.js_721_1"] + "'>";
	}
	else if (resu2)
	{
		DeviceInfo["3"]			= "<img border='0' src='img/4.GIF'" 
							+ " onMouseMove='this.style.cursor=\"help\"' "
							+ "alt='" + PromptArray["drvfetch.js_727_1"] + "'>";
	}
	else
	{
		DeviceInfo["3"]			= " ";
	}
	
	
	var str = "";
	for (j=1;j<=32;j++)
	{
		var Stat = OrgDeviceInfo[CurrentRow + ",4"] ; 
		var resu = Stat & DevStatusFlags[j] ;
		if( resu > 0 )
		{
			if (DevStatusString[j]) 
				str = str +  DevStatusString[j] + "," ;
		}
	}
	if (OrgDeviceInfo[CurrentRow + ",4"])
	{
		str += "Code:0x" + OrgDeviceInfo[CurrentRow + ",4"].toString(16);
	}

	var Stat2			= OrgDeviceInfo[CurrentRow + ",4"] ; 
	var resu2			= Stat2 &  DevStatusFlags[11];		 
	var resu1			= Stat2 &  DevStatusFlags[9];		 
	if (resu2 || resu1)	
	{
		DeviceInfo["4"]			= "<img border='0' src='img/checkbug.gif'" 
							+ " onMouseMove='this.style.cursor=\"help\"' "
							+ "width='16' height='16' alt='" 
							+ str 
							+ "'>";
	}
	else
	{
		DeviceInfo["4"]			= "<img border='0' src='img/4.GIF'" 
							+ " onMouseMove='this.style.cursor=\"help\"' "
							
							+ "alt='" 
							+ str 
							+ "'>";
	}

	
	
	if (OrgDeviceInfo[CurrentRow + ",5"] > 38 ) 
	{
		
		var prob = "(code:" + OrgDeviceInfo[CurrentRow + ",5"] + ")";
		DeviceInfo["5"]	= "<img border='0' "
							+"src='img/error1.GIF'"
							+ " onMouseMove='this.style.cursor=\"help\"' "
							+ " width=16 height=16 "
							+ " alt='" + prob + "'>";

	}
	else
	{
		var prob = DevProblem[" 2," + OrgDeviceInfo[CurrentRow + ",5"] ] 
					+ "(code:" + OrgDeviceInfo[CurrentRow + ",5"] + ")";
		
		if (OrgDeviceInfo[CurrentRow + ",5"] != 0)
		{
			DeviceInfo["5"]	= "<img border='0' "
								+"src='img/error1.GIF'"
								+ " onMouseMove='this.style.cursor=\"help\"' "
								+ " width=16 height=16 "
								+ " alt='" + prob + "'>";
		}
		else
		{	
			DeviceInfo["5"]			= " ";
		}
	}
    
	var SoapApplyURL = ServerName.value + SoapAspURL.value		
    var onClickStr   = ( OrgDeviceInfo[CurrentRow + ",DriverID"] ) 
                       ? " href='http:\/\/" + SoapApplyURL + "?Mode=DownloadDrv&DriverID=" + OrgDeviceInfo[CurrentRow + ",DriverID"] + "' "
                       : "";        

    
    
	
    
    
	(deviceClass[OrgDeviceInfo[CurrentRow + ",2"]]) 
		? DeviceInfo["6"] = ""
					+ "<a style='color: green;font-style: normal;font-family: " + PromptArray["drvfetch.js_816_1"] + ";'"
					+ " VALIGN='top'"
					
					
					+ " onClick=ListDeviceMatchingDriverListInfo(" + MachineID + "," + ItemNumber + ")"
                    
                    + onClickStr
					+ " onMouseMove='this.style.color=\"red\";this.style.cursor=\"hand\"'"
                    + " onMouseOut='this.style.color=\"green\";this.style.fontStyle=\"normal\";'"
                    
					+ " >"
					+ OrgDeviceInfo[CurrentRow + ",6"] 
					+ "</a>&nbsp;&nbsp;"
                    
                    + "<span id='" + MachineID + "_" + ItemNumber + "_DeviceTag'></span>"
		: DeviceInfo["6"] =""
                    
                    
					
                    + "<a style='color: green;font-style: normal;font-family: " + PromptArray["drvfetch.js_835_1"] + ";'"
                    
					+ " VALIGN='top'"
					
					
					+ " onClick=ListDeviceMatchingDriverListInfo(" + MachineID + "," + ItemNumber + ")"
                    
					
					
					
                    
                    + onClickStr
					+ " onMouseMove='this.style.color=\"red\";this.style.cursor=\"hand\"'"
                    + " onMouseOut='this.style.color=\"green\";this.style.fontStyle=\"normal\";'"
                    
					+ " >" 
					+ OrgDeviceInfo[CurrentRow + ",6"] 
                    
                    
					
                    + "</a>&nbsp;&nbsp;"
                    + "<span id='" + MachineID + "_" + ItemNumber + "_DeviceTag'></span>"
                    


	
	
	
	var str = "";
	var Stat = OrgDeviceInfo[CurrentRow + ",7"];

	
	if 	(!(Stat & 0x00000010))   str += "" + PromptArray["drvfetch.js_867_1"] + ",";
	
	
	if 	(!(Stat & 0x00080000))   
	{
		str += "" + PromptArray["drvfetch.js_872_1"] + ",";
	}
	
	
	else
	{
		str += "";
	}

	
	for (j=1;j<=32;j++)
	{
		var Stat = OrgDeviceInfo[CurrentRow + ",7"] ; 
		var resu = Stat & DrvBackupStatusFlags[j] ;
		if( resu > 0 )
		{
			if (DrvBackupStatusString[j]) 
				str = str +  DrvBackupStatusString[j] + "," ;
		}
	}
	if (OrgDeviceInfo[CurrentRow + ",7"])
	{
		str += "Code:0x" + OrgDeviceInfo[CurrentRow + ",7"].toString(16);
	}

	var Stat2 = OrgDeviceInfo[CurrentRow + ",7"] ; 
	
	
	if ( (Stat2 & 0x00080000) && (Stat2 & 0x00000010) )
	{
		DeviceInfo["7"]		= "<img border='0' src='img/6.gif'" 
							
							+ " onMouseMove='this.style.cursor=\"help\"' "
							+ "alt='" 
							+ str 
							+ "'>";
	}
	
	else if (Stat2 & 0x00000010)
	{
		DeviceInfo["7"]		= "<img border='0' src='img/3.gif'" 
							
							+ " onMouseMove='this.style.cursor=\"help\"' "
							+ "alt='" 
							+ str 
							+ "'>";
	}
	
	else if(Stat2 & 0x00080000)
	{
		DeviceInfo["7"]		= "<img border='0' src='img/1.GIF'" 
							
							+ " onMouseMove='this.style.cursor=\"help\"' "
							+ "alt='"
							+ str
							+ "'>";
	}
	
	
	
	

	
	
	else
	{
		DeviceInfo["7"]		= "<img border='0' src='img/4.GIF'" 
							
							+ " onMouseMove='this.style.cursor=\"help\"' "
							+ "alt='" 
							+ str 
							+ "'>";
	}
}


function DeviceMouseMoveInEvent(row)
{

}



function DeviceMouseMoveOutEvent(row)
{

}




function GetXmlSingleNodeText( Xml , NodeTag )
{
	var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
	xmlDoc.async = false;
	xmlDoc.loadXML( Xml );
	if (!xmlDoc) return(null)
	var objNode = xmlDoc.selectSingleNode("\/\/" + NodeTag )
	if (!objNode) return (null)
	var text = objNode.text
	xmlDoc = null

return (text)
}
function GetHtmlLaunchPath()
{
	var UrlPathname = location.pathname;	
	var UrlHostname = location.hostname;	
	
	
	if (UrlHostname == "")
	{
		UrlPathname = UrlPathname.replace( /%20/gi , " ");
		if (UrlPathname.charAt(0) == "/")
		{
			
			UrlPathname = UrlPathname.substring(1 , UrlPathname.lastIndexOf("\\")); 
		}
		else
		{
			UrlPathname = UrlPathname.substring(0 , UrlPathname.lastIndexOf("\\")); 
		}
	}
	
	else
	{
        
		return ""
	}
	return (UrlPathname)
}



function RegUserHardwareInfo()
{
	
	

	var SoapApplyURL = ServerName.value + SoapAspURL.value		

	
    
    
    

	
    var MACIDs				= GetNetCardInfo()
	var CPUInfo				= GetCPUInfo()
	
    

    
    DisplayMessage( "" + PromptArray["drvfetch.js_1025_1"] + "..." )
	var MainBoardInfo		= GetMainBoardInfo()
    
    DisplayMessage( "" + PromptArray["drvfetch.js_1028_1"] + ":"  + MainBoardInfo )
    
    DisplayMessage( "" + PromptArray["drvfetch.js_1030_1"] + "..." )
	var DiskInfo			= GetDiskInfo()
    
    DisplayMessage( "" + PromptArray["drvfetch.js_1033_1"] + ":"  + DiskInfo )
    
    
    
    
    DiskInfo = CheckAndModifyDiskInfo( DiskInfo )
    
    

	var SoapRequestXML = ""
    
	
    SoapRequestXML += '<?xml version="1.0" standalone="no"?>\n'
    
	SoapRequestXML += '<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http:\/\/schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http:\/\/schemas.xmlsoap.org/soap/envelope/">\n'
	SoapRequestXML += "   <SOAP-ENV:Header xmlns:wsu =\"http:\/\/schemas.xmlsoap.org/ws/2002/07/utility\" "
	SoapRequestXML += "                    xmlns:wsse=\"http:\/\/schemas.xmlsoap.org/ws/2002/07/secext\" >\n"
    SoapRequestXML += GetClientInfo()
	SoapRequestXML += "   </SOAP-ENV:Header>\n"
	SoapRequestXML += "   <SOAP-ENV:Body>\n"
	SoapRequestXML += "     <n:RegUserHardwareInfo xmlns:n=\"http:\/\/e-drivers.cn/soap/\">\n"
    
    
	
    SoapRequestXML += CPUInfo			+ "\n"
	SoapRequestXML += MACIDs			+ "\n"
    
	
	SoapRequestXML += MainBoardInfo		+ "\n"
	SoapRequestXML += DiskInfo			+ "\n"
	SoapRequestXML += "     </n:RegUserHardwareInfo>\n"
	SoapRequestXML += "   </SOAP-ENV:Body>\n"
	SoapRequestXML += "</SOAP-ENV:Envelope>"


    var RetRegUserInfo = new Array()
    var ErrorInfo = ""

    
    DisplayMessage( "" + PromptArray["drvfetch.js_1072_1"] + "..." )
    
	
    var ReturnXML = MyXMLHttpRequest( SoapApplyURL , SoapRequestXML )
    

	
    
    if ( !ReturnXML )
	{
        if (!g_CanUserConnectToServer)
        {
            ErrorInfo = "" + PromptArray["drvfetch.js_1084_1"] + ""
            DisplayMessage( "" + PromptArray["drvfetch.js_1085_1"] + "," + PromptArray["drvfetch.js_1085_2"] + "" )
            
        }
        else
        {
            ErrorInfo = "" + PromptArray["drvfetch.js_1090_1"] + "" + ServerName.value + "" + PromptArray["drvfetch.js_1090_2"] + ""
            DisplayMessage( "" + PromptArray["drvfetch.js_1091_1"] + "\n" + PromptArray["drvfetch.js_1091_2"] + "" + ServerName.value + "" + PromptArray["drvfetch.js_1091_3"] + "," + PromptArray["drvfetch.js_1091_4"] + "\n" + SoapRequestXML)
        }
        RetRegUserInfo["Success"] = false
        RetRegUserInfo["Info"]    = ErrorInfo
        RetRegUserInfo["UserID"]  = ""
		return ( RetRegUserInfo )
	}

	ErrorInfo = GetInfoByTagFromXml( ReturnXML, SOAP_RET_ERROR_STRING_TAG )

	if (ErrorInfo != null) 
	{
        RetRegUserInfo["Success"] = false
        RetRegUserInfo["Info"]    = ErrorInfo
        RetRegUserInfo["UserID"]  = ""
        DisplayMessage( "" + PromptArray["drvfetch.js_1106_1"] + ":\n" + ErrorInfo )
		return ( RetRegUserInfo )
	}
	else
	{
        var UserID           = GetInfoByTagFromXml( ReturnXML, "UserID" )
        
        var UserType         = GetInfoByTagFromXml( ReturnXML, "RegType" )
        
        var DownloadPath     = GetInfoByTagFromXml( ReturnXML, "DownloadPath" )
        
        var HostSerialNumber = GetInfoByTagFromXml( ReturnXML, "HostSerialNumber" )
        
        var CaseID           = GetInfoByTagFromXml( ReturnXML, "CaseID" )

        RetRegUserInfo["Success"         ] = true
        RetRegUserInfo["Info"            ]    = "" + PromptArray["drvfetch.js_1122_1"] + ",UserID=" + UserID 
        RetRegUserInfo["UserID"          ]  = UserID
        
        RetRegUserInfo["UserType"        ]  = UserType
        
        RetRegUserInfo["DownloadPath"    ]  = DownloadPath
        
        RetRegUserInfo["HostSerialNumber"] = HostSerialNumber
        
        RetRegUserInfo["CaseID"          ] = CaseID
        
        
        DisplayMessage( "" + PromptArray["drvfetch.js_1134_1"] + ",UserID=" + UserID + ",CaseID=" + CaseID + ",Path=" + DownloadPath + ",S/N:" + HostSerialNumber )

        
        DisplayMessage("" + PromptArray["drvfetch.js_1137_1"] + "/" + PromptArray["drvfetch.js_1137_2"] + "/" + PromptArray["drvfetch.js_1137_3"] + "..." )
        Title.innerHTML = "<br><center>" + PromptArray["drvfetch.js_1138_1"] + "...</center>"
        DrvCert.UIRefresh()
        SubmitCaseInfoToServer( UserID , CaseID , GetOSInfo() , navigator.userAgent )

		return ( RetRegUserInfo )
	}

}


function GetAllFileInfoInDir( FilePath , RegExpressString )
{
    var FileInfo = new Array()
    FileInfo["Rows"] = 0

	var FileNameXml = DrvCert.FindFileInPath( FilePath + "\\*.*" )
	var FileName = GetXmlSingleNodeText( FileNameXml , "FileItem0" )

    var i       = 0

    while ( FileName )
    {
        var FileInfoInDir = GetAllFileInfoInDir( FilePath + "\\" + FileName , RegExpressString )
        
        if ( FileInfoInDir["Rows"] )
        {
            for (var j=0;j<FileInfoInDir["Rows"];j++)
            {
                FileInfo[FileInfo["Rows"]] = FileInfoInDir[j]
                FileInfo["Rows"] ++
            }
        }
        
        else
        {
            
            var re = new RegExp( RegExpressString ,"gi");  
            if ( FileName.search( re ) != -1 )
            {
                FileInfo[FileInfo["Rows"]]      = FilePath + "\\" + FileName
                FileInfo["Rows"] ++
            }
            
            {
            }
            
            var PathFileName = FilePath + "\\" + FileName
            
            
        }

        i++
        
        FileName            = GetXmlSingleNodeText( FileNameXml , "FileItem" + i )
    }

return ( FileInfo )











}

function GetDeviceListInfoToXml()
{

	var DeviceListInfo = g_DeviceInfo
	var DeviceNumber   = g_DeviceRows
	var DeviceName , HardwareID , CompatibleID, MatchingDeviceId
	var DriverDate , DriverVer , DriverProvider


	var Xml = "<DeviceList>\n"
	var CurDeviceInfo = new Array()
	var i
	for (i=0;i<DeviceNumber ;i++ )
	{
		ReadArrayToDeviceInfo( CurDeviceInfo , DeviceListInfo , i )

		DeviceName = CurDeviceInfo[6]
		
		
		DeviceName = DeviceName.replace(/(\&)/gi ,"&amp;");
		DeviceName = DeviceName.replace(/(\<)/gi ,"&lt;");
		DeviceName = DeviceName.replace(/(\>)/gi ,"&gt;");

		HardwareID = CurDeviceInfo[8]
		
		
		HardwareID = HardwareID.replace(/(\&)/gi ,"&amp;");
		HardwareID = HardwareID.replace(/(\<)/gi ,"&lt;");
		HardwareID = HardwareID.replace(/(\>)/gi ,"&gt;");

		CompatibleID = CurDeviceInfo[9]
		
		
		CompatibleID = CompatibleID.replace(/(\&)/gi ,"&amp;");
		CompatibleID = CompatibleID.replace(/(\<)/gi ,"&lt;");
		CompatibleID = CompatibleID.replace(/(\>)/gi ,"&gt;");

		MatchingDeviceId = CurDeviceInfo[10]
		
		
		MatchingDeviceId = MatchingDeviceId.replace(/(\&)/gi ,"&amp;");
		MatchingDeviceId = MatchingDeviceId.replace(/(\<)/gi ,"&lt;");
		MatchingDeviceId = MatchingDeviceId.replace(/(\>)/gi ,"&gt;");
		
		DriverDate = CurDeviceInfo[11]
		
		
		DriverDate = DriverDate.replace(/(\&)/gi ,"&amp;");
		DriverDate = DriverDate.replace(/(\<)/gi ,"&lt;");
		DriverDate = DriverDate.replace(/(\>)/gi ,"&gt;");

		DriverVer = CurDeviceInfo[12]
		
		
		DriverVer = DriverVer.replace(/(\&)/gi ,"&amp;");
		DriverVer = DriverVer.replace(/(\<)/gi ,"&lt;");
		DriverVer = DriverVer.replace(/(\>)/gi ,"&gt;");

		DriverProvider = CurDeviceInfo[13]
		
		
		DriverProvider = DriverProvider.replace(/(\&)/gi ,"&amp;");
		DriverProvider = DriverProvider.replace(/(\<)/gi ,"&lt;");
		DriverProvider = DriverProvider.replace(/(\>)/gi ,"&gt;");

		Xml += "\t<DeviceItem>\n"
		Xml += "\t\t<DeviceName>"			+ DeviceName		+ "</DeviceName>\n"
		Xml += "\t\t<DeviceIndex>"			+ CurDeviceInfo[1]	+ "</DeviceIndex>\n"
		Xml += "\t\t<DeviceClassID>"		+ CurDeviceInfo[2]	+ "</DeviceClassID>\n"
		Xml += "\t\t<DeviceClassType>"		+ CurDeviceInfo[3]	+ "</DeviceClassType>\n"
		Xml += "\t\t<DeviceStatus>"			+ CurDeviceInfo[4]	+ "</DeviceStatus>\n"
		Xml += "\t\t<DeviceProblem>"		+ CurDeviceInfo[5]	+ "</DeviceProblem>\n"
		Xml += "\t\t<HardwareID>"			+ HardwareID		+ "</HardwareID>\n"
		Xml += "\t\t<CompatibleID>"			+ CompatibleID		+ "</CompatibleID>\n"
		Xml += "\t\t<MatchingDeviceId>"		+ MatchingDeviceId	+ "</MatchingDeviceId>\n"
		Xml += "\t\t<DriverBackupStatus>"	+ CurDeviceInfo[7]	+ "</DriverBackupStatus>\n"
		Xml += "\t\t<DeviceRow>"			+ CurDeviceInfo[0]	+ "</DeviceRow>\n"
		Xml += "\t\t<DriverDate>"			+ DriverDate		+ "</DriverDate>\n"
		Xml += "\t\t<DriverVer>"			+ DriverVer			+ "</DriverVer>\n"
		Xml += "\t\t<DriverProvider>"		+ DriverProvider	+ "</DriverProvider>\n"
		Xml += "\t</DeviceItem>\n"
	}
	Xml += "</DeviceList>"
return (Xml)
}

function GetAllDeviceInfoToXml()
{

	var DeviceListInfo = g_DeviceInfo
	var DeviceNumber   = g_DeviceRows
	var DeviceName , HardwareID , CompatibleID, MatchingDeviceId
	var DriverDate , DriverVer , DriverProvider


	var Xml = "<DeviceList>\n"
	var CurDeviceInfo = new Array()
	var i
	for (i=0;i<DeviceNumber ;i++ )
	{
		ReadArrayToDeviceInfo( CurDeviceInfo , DeviceListInfo , i )

		DeviceName = CurDeviceInfo[6]
		
		
		DeviceName = DeviceName.replace(/(\&)/gi ,"&amp;");
		DeviceName = DeviceName.replace(/(\<)/gi ,"&lt;");
		DeviceName = DeviceName.replace(/(\>)/gi ,"&gt;");

		HardwareID = CurDeviceInfo[8]
		
		
		HardwareID = HardwareID.replace(/(\&)/gi ,"&amp;");
		HardwareID = HardwareID.replace(/(\<)/gi ,"&lt;");
		HardwareID = HardwareID.replace(/(\>)/gi ,"&gt;");

		CompatibleID = CurDeviceInfo[9]
		
		
		CompatibleID = CompatibleID.replace(/(\&)/gi ,"&amp;");
		CompatibleID = CompatibleID.replace(/(\<)/gi ,"&lt;");
		CompatibleID = CompatibleID.replace(/(\>)/gi ,"&gt;");

		MatchingDeviceId = CurDeviceInfo[10]
		
		
		MatchingDeviceId = MatchingDeviceId.replace(/(\&)/gi ,"&amp;");
		MatchingDeviceId = MatchingDeviceId.replace(/(\<)/gi ,"&lt;");
		MatchingDeviceId = MatchingDeviceId.replace(/(\>)/gi ,"&gt;");
		
		DriverDate = CurDeviceInfo[11]
		
		
		DriverDate = DriverDate.replace(/(\&)/gi ,"&amp;");
		DriverDate = DriverDate.replace(/(\<)/gi ,"&lt;");
		DriverDate = DriverDate.replace(/(\>)/gi ,"&gt;");

		DriverVer = CurDeviceInfo[12]
		
		
		DriverVer = DriverVer.replace(/(\&)/gi ,"&amp;");
		DriverVer = DriverVer.replace(/(\<)/gi ,"&lt;");
		DriverVer = DriverVer.replace(/(\>)/gi ,"&gt;");

		DriverProvider = CurDeviceInfo[13]
		
		
		DriverProvider = DriverProvider.replace(/(\&)/gi ,"&amp;");
		DriverProvider = DriverProvider.replace(/(\<)/gi ,"&lt;");
		DriverProvider = DriverProvider.replace(/(\>)/gi ,"&gt;");

		Xml += "\t<DeviceItem>\n"
		Xml += "\t\t<DeviceName>"			+ DeviceName		+ "</DeviceName>\n"
		Xml += "\t\t<DeviceIndex>"			+ CurDeviceInfo[1]	+ "</DeviceIndex>\n"
		Xml += "\t\t<DeviceClassID>"		+ CurDeviceInfo[2]	+ "</DeviceClassID>\n"
		Xml += "\t\t<DeviceClassType>"		+ CurDeviceInfo[3]	+ "</DeviceClassType>\n"
		Xml += "\t\t<DeviceStatus>"			+ CurDeviceInfo[4]	+ "</DeviceStatus>\n"
		Xml += "\t\t<DeviceProblem>"		+ CurDeviceInfo[5]	+ "</DeviceProblem>\n"
		Xml += "\t\t<HardwareID>"			+ HardwareID		+ "</HardwareID>\n"
		Xml += "\t\t<CompatibleID>"			+ CompatibleID		+ "</CompatibleID>\n"
		Xml += "\t\t<MatchingDeviceId>"		+ MatchingDeviceId	+ "</MatchingDeviceId>\n"
		Xml += "\t\t<DriverBackupStatus>"	+ CurDeviceInfo[7]	+ "</DriverBackupStatus>\n"
		Xml += "\t\t<DeviceRow>"			+ CurDeviceInfo[0]	+ "</DeviceRow>\n"
		Xml += "\t\t<DriverDate>"			+ DriverDate		+ "</DriverDate>\n"
		Xml += "\t\t<DriverVer>"			+ DriverVer			+ "</DriverVer>\n"
		Xml += "\t\t<DriverProvider>"		+ DriverProvider	+ "</DriverProvider>\n"
        
        if ( !CurDeviceInfo[5] && ( CurDeviceInfo[7] & 0x00080000 ) )
        {
            var SysPath = DrvCert.GetFolderPath( 36 )	
            var InfPathFileName = SysPath + "\\inf\\" + CurDeviceInfo[14]
            var InfContentInBASE64 = DrvCert.GetBASE64StringFromBinFile( InfPathFileName )
            var InfHash = DrvCert.GetDataHash( InfContentInBASE64 )
            Xml += "\t\t<InfHash>"          + InfHash                       + "</InfHash>\n"
        }
		Xml += "\t</DeviceItem>\n"
	}
	Xml += "</DeviceList>"
return (Xml)
}
function GetClientInfo()
{
    var ClientVersion   =""
    var OEMVendor       =""
    var Provider        =""
    var Language        =""
    
    
    
    var AccessMode      = g_DefaultLoader

    var hKey = DrvCert.RegOpenKey( 2 , "SOFTWARE\\Walker\\DrvInst")
    if (hKey)
    {
        ClientVersion = DrvCert.RegQueryValue( hKey , "Version" )
        DrvCert.RegCloseKey( hKey)
        hKey = null
    }

    hKey = DrvCert.RegOpenKey( 2 , "SOFTWARE\\Walker\\DrvInst\\Setup")
    if (hKey) 
    {
        Language  = CLIENT_LANGUAGE 
        OEMVendor = DrvCert.RegQueryValue( hKey , "OEMVendor" )
        Provider  = DrvCert.RegQueryValue( hKey , "Provider" )
        
  
        if ( !OEMVendor) OEMVendor  = ""
        if ( !Provider)  Provider   = ""

        DrvCert.RegCloseKey( hKey )
        hKey = null
    }

    var OSPlatform = GetInfoByTagFromXml( GetOSInfo() , "OSPlatform" )
    var RetInfo = ""
    
    RetInfo += "<ClientInfo>\n"
             + "  <Version>"      + XmlEncoding( ClientVersion )  + "</Version>\n"
             + "  <Vendor>"       + XmlEncoding( OEMVendor )      + "</Vendor>\n"
             + "  <Provider>"     + XmlEncoding( Provider )       + "</Provider>\n"
             + "  <Language>"     + XmlEncoding( Language )       + "</Language>\n"
             + "  <AccessMode>"   + XmlEncoding( AccessMode )     + "</AccessMode>\n"
             
             + "  <OSPlatform>"   + XmlEncoding( OSPlatform )     + "</OSPlatform>\n"
             + "</ClientInfo>\n"
   return ( RetInfo )
}

function RegUserDeviceInfoList( UserID )
{

	var SoapApplyURL = ServerName.value + SoapAspURL.value		

	var SoapRequestXML = ""
    
	
	SoapRequestXML += '<?xml version="1.0" standalone="no"?>\n'
	SoapRequestXML += '<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http:\/\/schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http:\/\/schemas.xmlsoap.org/soap/envelope/">\n'
	SoapRequestXML += "   <SOAP-ENV:Header xmlns:wsu =\"http:\/\/schemas.xmlsoap.org/ws/2002/07/utility\" "
	SoapRequestXML += "                    xmlns:wsse=\"http:\/\/schemas.xmlsoap.org/ws/2002/07/secext\" >\n"
    SoapRequestXML += GetClientInfo()
	SoapRequestXML += "   </SOAP-ENV:Header>\n"
	SoapRequestXML += "   <SOAP-ENV:Body>\n"
	SoapRequestXML += "     <n:RegUserDeviceInfo xmlns:n=\"http:\/\/e-drivers.cn/soap/\">\n"
    
    
    
    
    SoapRequestXML += GetDeviceListInfoToXml()
    SoapRequestXML += "         <UserID>" + UserID + "</UserID>\n"
	SoapRequestXML += "     </n:RegUserDeviceInfo>\n"
	SoapRequestXML += "   </SOAP-ENV:Body>\n"
	SoapRequestXML += "</SOAP-ENV:Envelope>"

	
    
    var ReturnXML = MyXMLHttpRequest( SoapApplyURL , SoapRequestXML )

    
    
    
    
    

	if (ReturnXML == null || ReturnXML == "")
	{
        DisplayMessage( "" + PromptArray["drvfetch.js_1475_1"] + "[" + DeviceInfo[6] + "]" + PromptArray["drvfetch.js_1475_2"] + "\n" + PromptArray["drvfetch.js_1475_3"] + ":\n" + SoapRequestXML )
        RetInfo["Success"       ] = false
        RetInfo["ErrorInfo"     ] = "" + PromptArray["drvfetch.js_1477_1"] + "[" + DeviceInfo[6] + "]" + PromptArray["drvfetch.js_1477_2"] + ""
		return ( RetInfo )
	}

    var RetInfo = new Array()

    var ErrorInfo = GetInfoByTagFromXml( ReturnXML, SOAP_RET_ERROR_STRING_TAG )
	if ( ErrorInfo ) 
	{
        DisplayMessage( "" + PromptArray["drvfetch.js_1486_1"] + ":\n" + ErrorInfo )
        RetInfo["Success"       ] = false
        RetInfo["ErrorInfo"     ] = ErrorInfo
		return ( RetInfo )
	}
	else
	{
        DisplayMessage( "" + PromptArray["drvfetch.js_1493_1"] + "" )
        var ResultString = GetInfoByTagFromXml( ReturnXML, "Result" )
        RetInfo["Success"       ] = ( ResultString == "Success" ) ? true : false
        RetInfo["ErrorInfo"     ] = ""
		return ( RetInfo )
	}
}
function GetDeviceInfoToXml( DeviceInfo )
{
	var Xml = "<DeviceList>"
	{
		DeviceName = DeviceInfo[6]
		
		
		DeviceName = DeviceName.replace(/(\&)/gi ,"&amp;");
		DeviceName = DeviceName.replace(/(\<)/gi ,"&lt;");
		DeviceName = DeviceName.replace(/(\>)/gi ,"&gt;");

		HardwareID = DeviceInfo[8]
		
		
		HardwareID = HardwareID.replace(/(\&)/gi ,"&amp;");
		HardwareID = HardwareID.replace(/(\<)/gi ,"&lt;");
		HardwareID = HardwareID.replace(/(\>)/gi ,"&gt;");

		CompatibleID = DeviceInfo[9]
		
		
		CompatibleID = CompatibleID.replace(/(\&)/gi ,"&amp;");
		CompatibleID = CompatibleID.replace(/(\<)/gi ,"&lt;");
		CompatibleID = CompatibleID.replace(/(\>)/gi ,"&gt;");

		MatchingDeviceId = DeviceInfo[10]
		
		
		MatchingDeviceId = MatchingDeviceId.replace(/(\&)/gi ,"&amp;");
		MatchingDeviceId = MatchingDeviceId.replace(/(\<)/gi ,"&lt;");
		MatchingDeviceId = MatchingDeviceId.replace(/(\>)/gi ,"&gt;");
		
		DriverDate = DeviceInfo[11]
		
		
		DriverDate = DriverDate.replace(/(\&)/gi ,"&amp;");
		DriverDate = DriverDate.replace(/(\<)/gi ,"&lt;");
		DriverDate = DriverDate.replace(/(\>)/gi ,"&gt;");

		DriverVer = DeviceInfo[12]
		
		
		DriverVer = DriverVer.replace(/(\&)/gi ,"&amp;");
		DriverVer = DriverVer.replace(/(\<)/gi ,"&lt;");
		DriverVer = DriverVer.replace(/(\>)/gi ,"&gt;");

		DriverProvider = DeviceInfo[13]
		
		
		DriverProvider = DriverProvider.replace(/(\&)/gi ,"&amp;");
		DriverProvider = DriverProvider.replace(/(\<)/gi ,"&lt;");
		DriverProvider = DriverProvider.replace(/(\>)/gi ,"&gt;");

		Xml += "\t<DeviceItem>\n"
		Xml += "\t\t<DeviceName>"			+ DeviceName		+ "</DeviceName>\n"
		Xml += "\t\t<DeviceIndex>"			+ DeviceInfo[1]	+ "</DeviceIndex>\n"
		Xml += "\t\t<DeviceClassID>"		+ DeviceInfo[2]	+ "</DeviceClassID>\n"
		Xml += "\t\t<DeviceClassType>"		+ DeviceInfo[3]	+ "</DeviceClassType>\n"
		Xml += "\t\t<DeviceStatus>"			+ DeviceInfo[4]	+ "</DeviceStatus>\n"
		Xml += "\t\t<DeviceProblem>"		+ DeviceInfo[5]	+ "</DeviceProblem>\n"
		Xml += "\t\t<HardwareID>"			+ HardwareID		+ "</HardwareID>\n"
		Xml += "\t\t<CompatibleID>"			+ CompatibleID		+ "</CompatibleID>\n"
		Xml += "\t\t<MatchingDeviceId>"		+ MatchingDeviceId	+ "</MatchingDeviceId>\n"
		Xml += "\t\t<DriverBackupStatus>"	+ DeviceInfo[7]	+ "</DriverBackupStatus>\n"
		Xml += "\t\t<DeviceRow>"			+ DeviceInfo[0]	+ "</DeviceRow>\n"
		Xml += "\t\t<DriverDate>"			+ DriverDate		+ "</DriverDate>\n"
		Xml += "\t\t<DriverVer>"			+ DriverVer			+ "</DriverVer>\n"
		Xml += "\t\t<DriverProvider>"		+ DriverProvider	+ "</DriverProvider>\n"
		Xml += "\t</DeviceItem>\n"
	}
	Xml += "</DeviceList>"
return (Xml)
}

function GetDownloadDrive()
{
    
    
    
    var MaxSpaceLeftDrive = "C:" 
    var MaxSpaceLeft = 0
    var CurDriveFreeSpaceXml
    var CurDrive = ""
    var CurDriveFreeSpace = 0
    
    var LogicalDriveInfoXml = DrvCert.GetLogicalDriveInfo()
    var DriveName = ""
    var DriveType = ""
    var CurDrive  = ""
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
    xmlDoc.async = false
    xmlDoc.loadXML( LogicalDriveInfoXml )
    var objRowDataNode = xmlDoc.selectSingleNode("\/\/DriveInfo")
    if ( objRowDataNode )
    {
        var oNodeList = objRowDataNode.childNodes;
        for (var i=0;i<oNodeList.length ; i++)
        {
            DriveName = GetXmlSingleNodeText( oNodeList(i).xml , "DriveName" )
            DriveType = GetXmlSingleNodeText( oNodeList(i).xml , "DriveType" )
            if ( DriveType == "Fixed" )
            {
                CurDrive = DriveName.substring( 0 , 1 )
                
                
                
                
                if ( CurDrive == "C" || CurDrive == "c" ) continue
                CurDriveFreeSpaceXml = DrvCert.GetDiskFreeSpaceXml( CurDrive + ":" )
                CurDriveFreeSpace    = parseInt( GetXmlSingleNodeText( CurDriveFreeSpaceXml , "FreeBytes" ) )
                
                if ( CurDriveFreeSpace > MaxSpaceLeft )
                {
                    MaxSpaceLeft        = CurDriveFreeSpace
                    MaxSpaceLeftDrive   = CurDrive + ":"
                }
            }
        }
        xmlDoc = null
    }
return ( MaxSpaceLeftDrive )
}

function SubmitUserDownloadDriverPath( UserID , DownloadPath )
{
    var RetInfo = new Array()
    var SoapApplyURL = ServerName.value + SoapAspURL.value		

	var SoapRequestXML = ""
    
	
	SoapRequestXML += '<?xml version="1.0" standalone="no"?>\n'
    
	SoapRequestXML += '<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http:\/\/schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http:\/\/schemas.xmlsoap.org/soap/envelope/">\n'
	SoapRequestXML += "   <SOAP-ENV:Header xmlns:wsu =\"http:\/\/schemas.xmlsoap.org/ws/2002/07/utility\" "
	SoapRequestXML += "                    xmlns:wsse=\"http:\/\/schemas.xmlsoap.org/ws/2002/07/secext\" >\n"
    SoapRequestXML += GetClientInfo()
	SoapRequestXML += "   </SOAP-ENV:Header>\n"
	SoapRequestXML += "   <SOAP-ENV:Body>\n"
	SoapRequestXML += "     <n:SetUserDownloadDriverPath xmlns:n=\"http:\/\/e-drivers.cn/soap/\">\n"
    SoapRequestXML += "         <UserID>"           + UserID                        + "</UserID>\n"
    SoapRequestXML += "         <DownloadPath>"     + XmlEncoding( DownloadPath )   + "</DownloadPath>\n"
    SoapRequestXML += "     </n:SetUserDownloadDriverPath>\n"
	SoapRequestXML += "   </SOAP-ENV:Body>\n"
	SoapRequestXML += "</SOAP-ENV:Envelope>"

	
    
    var ReturnXML = MyXMLHttpRequest( SoapApplyURL , SoapRequestXML )

	if (ReturnXML == null || ReturnXML == "")
	{
        DisplayMessage( "" + PromptArray["drvfetch.js_1652_1"] + "," + PromptArray["drvfetch.js_1652_2"] + ":\n" + SoapRequestXML )
        RetInfo["Success"] = false
        RetInfo["Info"]    = "" + PromptArray["drvfetch.js_1654_1"] + ""
		return ( RetInfo )
	}

	var ErrorInfo = GetInfoByTagFromXml( ReturnXML, SOAP_RET_ERROR_STRING_TAG )
	if (ErrorInfo != null) 
	{
        RetInfo["Success"] = false
        RetInfo["Info"]    = ErrorInfo
		return ( RetInfo )
	}
	else
	{
        var Result = GetInfoByTagFromXml( ReturnXML, "Result" )
        RetInfo["Success"       ] = ( Result == "Success" ) ? true : false
        RetInfo["Info"          ] = ""
		return ( RetInfo )
	}
}


function MyXMLHttpRequest( SoapApplyURL , SoapRequestXML )
{
    var RespXml = ""
    var xmlhttp=false;
    
    
    
    
     try 
     {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     } 
     catch (e) 
     {
        try 
        {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } 
        catch (E) 
        {
            xmlhttp = false;
        }
     }
    
    
    
    
    
    
    
    
    
    
    

    
    
    
    
    
    
    
    
    
    
    if ( !xmlhttp ) 
    {
        
        
        DisplayMessage( "XMLHttpRequest open failed" ) 

        return ( null )
    }

    
    var Flag = GetCookie( "SoapRequestLogFlag" )

    try
    {
        

        
        
        
        

        

        xmlhttp.Open( "POST", "http:\/\/" + SoapApplyURL , false )
        
        
        xmlhttp.setRequestHeader("Content-Type", "text/xml-SOAP" )
        
        
        
        
        
        
        
        

        
        if ( Flag == "true" )
        {
            DrvInst.AppendStringToFileEnd( g_DrvInstLogFilePath , "\r\n" + GetLocalTime() + SoapRequestXML )
        }
        

        xmlhttp.send( SoapRequestXML )    
        
        
        
        
        
        
        
        RespXml = xmlhttp.responseXML





        
        
    }
    catch( err ) 
    {
        var errInfo = "XMLHttpRequest() error - " + err.description + " (0x" + err.number.toString(16) + ")"
        
        
        DisplayMessage( errInfo ) 
    }
    if (typeof(RespXml) == "object")
		RespXml = RespXml.xml

    
    if ( Flag == "true" )
    {
        DrvInst.AppendStringToFileEnd( g_DrvInstLogFilePath , "\r\n" + GetLocalTime() + RespXml )
    }

return ( RespXml )
}



	

		

		

		

		

		

		

		

		

		

		

		

	




function CheckAndModifyDiskInfo( DiskInfoXml )
{
    var NewDiskInfoXml  = ""
    NewDiskInfoXml     += "<DiskInfo>\n"

    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
    xmlDoc.async = false
    xmlDoc.loadXML( DiskInfoXml )

    
    
    
    var DiskModel           = ""
    var DiskSerialNumber    = ""
    
    
    

    
    var DiskType            = ""

    
    var DiskHeads           = ""
    var DiskSectorsPerTrack = ""
    var DiskSize            = ""

    var objRowDataNode = xmlDoc.selectSingleNode("\/\/DiskInfo")
    if ( objRowDataNode )
    {
        var oNodeList = objRowDataNode.childNodes;
        for (var i=0;i<oNodeList.length ; i++)
        {
        
            
            
            
            
            DiskModel           = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "DiskModel" ) )
            DiskSerialNumber    = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "DiskSerialNumber" ) )

            
            
            
            
            DiskType            = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "DiskType" ) )
            

            
            DiskHeads           = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "DiskHeads" ) )
            DiskSectorsPerTrack = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "DiskSectorsPerTrack" ) )
            DiskSize            = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "DiskSize" ) )

            
            
            if ( !DiskModel || !DiskSerialNumber || ( !DiskHeads || !DiskSectorsPerTrack.toString(10) || !DiskSize.toString(10) ) || !DiskType )
            {
                
            }
            
            else
            {
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                DiskType            = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "DiskType" ) )
                
                if ( ( DiskType.toUpperCase().indexOf( "FIXED" ) != -1 ) && ( DiskType != "Fixed" ) )
                {
                    var DiskTypeXmlDoc = new ActiveXObject("Microsoft.XMLDOM")
                    DiskTypeXmlDoc.async = false
                    DiskTypeXmlDoc.loadXML( oNodeList(i).xml )

                    var DiskTypeobjNode = DiskTypeXmlDoc.selectSingleNode("\/\/DiskType" )
                    DiskTypeobjNode.text= "Fixed"
                    NewDiskInfoXml += DiskTypeXmlDoc.xml
                    DiskTypeXmlDoc = null
                }
                else
                {
                    NewDiskInfoXml += oNodeList(i).xml
                }
            }           
        
        }
    }
    else
    {
        
        xmlDoc = null
        return ( DiskInfoXml ) 
    }

    NewDiskInfoXml += "</DiskInfo>\n"

    xmlDoc = null

return ( NewDiskInfoXml )
}


function EnumMachine( EnumMode )
{
    DisplayMessage("" + PromptArray["drvfetch.js_1946_1"] + "...");
    Title.innerHTML = "<br><center>" + PromptArray["drvfetch.js_1947_1"] + "...</center>"
    DrvCert.UIRefresh()

    var RetRegUserInfo = RegUserHardwareInfo()
    
    
    
    
    
    
    
    
    
    
    

    
    if ( !RetRegUserInfo["Success"] )
    {
        
        
        
        
        
        if ( RetRegUserInfo["Info"] == "Unauthorized users" )
        {
            Title.innerHTML = "<br><center>" + PromptArray["drvfetch.js_1973_1"] + "<br><br><a href='../../../login_tw.htm'>" + PromptArray["drvfetch.js_1973_2"] + "</a></center>"
            DrvCert.UIRefresh()
            return false
        }
        
        else if ( RetRegUserInfo["Info"] == "Unauthorized host" )
        {
            Title.innerHTML = "<br><center>" + PromptArray["drvfetch.js_1980_1"] + "<br><br><a href='../../../login_tw.htm'>" + PromptArray["drvfetch.js_1980_2"] + "</a></center>"
            DrvCert.UIRefresh()
            return false
        }
        else
        {
            Title.innerHTML = "<br><center>" + PromptArray["drvfetch.js_1986_1"] + "<br>" + RetRegUserInfo["Info"] + "</center>"
            DrvCert.UIRefresh()
            return false
        }
    }

    g_UserID = RetRegUserInfo["UserID"]
    SetCookie( "UserID" , g_UserID , 1 )

    
    
    
    var DownloadPath = ""
    
    if ( ( RetRegUserInfo["UserType"].toUpperCase() == "NEW" )  || !RetRegUserInfo["DownloadPath"] || RetRegUserInfo["DownloadPath"] == "null" )
    {
        DownloadPath = GetDownloadDrive() + "\\" + DOWNLOAD_PATH
        SubmitUserDownloadDriverPath( g_UserID , DownloadPath )
    }
    
    else
    {
        DownloadPath = RetRegUserInfo["DownloadPath"]
    }
    
    g_DownloadPath = DownloadPath
    
    
    
    
    

    
    if ( RetRegUserInfo["UserType"] == "New" )
    {
        
        DisplayMessage("" + PromptArray["drvfetch.js_2022_1"] + "...");
        RegUserDeviceInfoList( g_UserID )
    }

    
    g_CaseID = RetRegUserInfo["CaseID"]
    DisplayMessage("" + PromptArray["drvfetch.js_2028_1"] + ":" + g_CaseID );

    
    var MainBoardInfoXml = GetMainBoardInfo()
    
    
    
    
    
    
    
    
    
    
    
    
    
    var ComputerMfg      = GetXmlSingleNodeText( MainBoardInfoXml , "ComputerManufacturer" )
    var ComputerModel    = GetXmlSingleNodeText( MainBoardInfoXml , "ComputerModel" )
    var BaseBoardMfg     = GetXmlSingleNodeText( MainBoardInfoXml , "BaseBoardManufacturer" )
    var BaseBoardProduct = GetXmlSingleNodeText( MainBoardInfoXml , "BaseBoardProduct" )
    var BaseBoardVersion = GetXmlSingleNodeText( MainBoardInfoXml , "BaseBoardVersion" )

    var OSInfoXml        = GetOSInfo()
    var OSString         = GetXmlSingleNodeText( OSInfoXml , "OSPlatform" )

    var MachineDescDetail= " ( " + ComputerMfg + " " + ComputerModel + " - " + BaseBoardMfg + " " + BaseBoardProduct + " " + BaseBoardVersion
    MachineDescDetail   += " , " + OSString + " )"

    
    var AccountInfoArray = GetAccountInfoFromServer( g_SessionEmail )
	UserIDTag.innerHTML =   '<table>'
                          + '<tr>'
                          + '<td>' + PromptArray["drvfetch.js_2061_1"] + ':</td><td align=left><span id=AmountValue>' + AccountInfoArray["Amount"] + '</span></td>'
                          + '</tr>'
                          + '</table>'

    Title.innerHTML = "<br><table width=100%><tr><td align=left width=30%><td><center>" + PromptArray["drvfetch.js_2065_1"] + "</center></td>"
                    
                    
                    + "<td align=right width=30%><a href='?' onclick='AddMachine();return false;'>" + PromptArray["drvfetch.js_2068_1"] + "</a>&nbsp;<a href='?' onclick='ImportMachine();return false;'>" + PromptArray["drvfetch.js_2068_2"] + "</a>&nbsp;</td></tr></table>"
                    
    oTableContainer.innerHTML = "<center><br><table><tr onclick='ListMachineDeviceListInfo( g_UserID )'>"
                              + "<td width=1 valign=center><span id='" + g_UserID + "_OpenCloseImgTag' >"
                              + "<img src='img/tree_arrow_close.gif' BORDER=0></span></td>"
                              + "<td width=6%><img src='img/tree_icon_computer.gif' WIDTH=16 HEIGHT=16 BORDER=0></td>"
                              + "<td><span style='color: green;font-style: normal;font-family: " + PromptArray["drvfetch.js_2074_1"] + ";' "
                              + "          onMouseMove='this.style.color=\"red\";this.style.cursor=\"hand\"'"
                              + "          onMouseOut='this.style.color=\"green\";this.style.fontStyle=\"normal\";'>#" 
                              + g_UserID + MachineDescDetail + "</span>"
                              + "</td></tr>"
                              + "<tr><td></td><td></td><td><span id='" + g_UserID + "_DeviceListTag'></span></td></tr></table></center>"
    
    
    
    g_CurMachineID = g_UserID

    
    
    
    var AllMachineIDs = GetCurAccountAllMachineIDs()
    for ( var i=0; i<AllMachineIDs["Rows"] ; i++ )
    {
        
        if ( g_CurMachineID != AllMachineIDs[i] )
        {
            oTableContainer.innerHTML+= "<center><br><table><tr onclick='ListMachineDeviceListInfo( " + AllMachineIDs[i] + ")'>"
                                      + "<td width=1 valign=center><span id='" + AllMachineIDs[i] + "_OpenCloseImgTag' >"
                                      + "<img src='img/tree_arrow_close.gif' BORDER=0></span></td>"
                                      + "<td width=6%><img src='img/tree_icon_computer.gif' WIDTH=16 HEIGHT=16 BORDER=0></td>"
                                      + "<td><span style='color: green;font-style: normal;font-family: " + PromptArray["drvfetch.js_2098_1"] + ";' "
                                      + "          onMouseMove='this.style.color=\"red\";this.style.cursor=\"hand\"'"
                                      + "          onMouseOut='this.style.color=\"green\";this.style.fontStyle=\"normal\";'>#" 
                                      + AllMachineIDs[i] + "</span>"
                                      + "</td></tr>"
                                      + "<tr><td></td><td></td><td><span id='" + AllMachineIDs[i] + "_DeviceListTag'></span></td></tr></table></center>"
        }
    }

}


function AddMachine()
{

    var AddMachineInfoHTML = "<center>&nbsp;&nbsp;" + PromptArray["drvfetch.js_2113_1"] + "<input id='AddMachineID' type=text size=10>&nbsp;&nbsp;<br><br>"
                           + "<input type=button value='" + PromptArray["drvfetch.js_2114_1"] + "' onclick='hideTransientMessage()'>&nbsp;&nbsp;"
                           + "<input type=button value='" + PromptArray["drvfetch.js_2115_1"] + "' onclick='OnAddNewMachine()'>"
                           + "<br></center>"

    DispMessageInfo( AddMachineInfoHTML )
}
function OnAddNewMachine()
{
    var NewMachineID       = 0
    
    NewMachineID=AddMachineID.value

    hideTransientMessage()

    if ( !NewMachineID) return

    var MainBoardInfoXml = ""
    var ComputerMfg      = ""
    var ComputerModel    = ""
    var BaseBoardMfg     = ""
    var BaseBoardProduct = ""
    var BaseBoardVersion = ""
    var MachineDescDetail= ""
    
    oTableContainer.innerHTML+= "<center><br><table><tr onclick='ListMachineDeviceListInfo( " + NewMachineID + ")'>"
                              + "<td width=1 valign=center><span id='" + NewMachineID + "_OpenCloseImgTag' >"
                              + "<img src='img/tree_arrow_close.gif' BORDER=0></span></td>"
                              + "<td width=6%><img src='img/tree_icon_computer.gif' WIDTH=16 HEIGHT=16 BORDER=0></td>"
                              + "<td><span style='color: green;font-style: normal;font-family: " + PromptArray["drvfetch.js_2142_1"] + ";' "
                              + "          onMouseMove='this.style.color=\"red\";this.style.cursor=\"hand\"'"
                              + "          onMouseOut='this.style.color=\"green\";this.style.fontStyle=\"normal\";'>#" 
                              + NewMachineID + MachineDescDetail + "</span>"
                              + "</td></tr>"
                              + "<tr><td></td><td></td><td><span id='" + NewMachineID + "_DeviceListTag'></span></td></tr></table></center>"

    ListMachineDeviceListInfo( NewMachineID )

}





function ListMachineDeviceListInfo( MachineID )
{
    var DeviceListTagName = MachineID + "_DeviceListTag"
    var OpenCloseTagName  = MachineID + "_OpenCloseImgTag"
    
    if ( !document.getElementById( DeviceListTagName ).innerHTML )
    {
        
        
        DisplayMessage("" + PromptArray["drvfetch.js_2166_1"] + "...");

        document.getElementById( DeviceListTagName ).innerHTML = "<center>" + PromptArray["drvfetch.js_2168_1"] + "...</center>"
        DrvCert.UIRefresh()

        var MachineDeviceInfo = GetDeviceListInfoByMachineIDFromDB( MachineID )
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        SaveCurMachineDeviceListInfo( MachineID , MachineDeviceInfo , g_AllMachineDeviceList )

		var stock           = new Array()
		var stock2          = new Array()
        var DeviceInfoArray = new Array()
        var DeviceListHTML  = "<table>"

		for (var i=0; MachineDeviceInfo["Success"] && ( i < MachineDeviceInfo["Rows"] ) ; i++)
		{
            DeviceListHTML += "<tr valign=top align=left><td>"
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            stock[0] = i;
            stock[1] = MachineDeviceInfo[ i + ",DeviceIndex"       ]
            stock[2] = MachineDeviceInfo[ i + ",ClassGUID"         ]
            stock[3] = MachineDeviceInfo[ i + ",HiddenCode"        ]
            stock[4] = MachineDeviceInfo[ i + ",StatusCode"        ]
            stock[5] = MachineDeviceInfo[ i + ",ProblemCode"       ]
            stock[6] = MachineDeviceInfo[ i + ",DeviceDesc"        ]
            stock[7] = MachineDeviceInfo[ i + ",BackupCode"        ]
            stock[8] = MachineDeviceInfo[ i + ",HardwareIDs"       ]
            stock[9] = MachineDeviceInfo[ i + ",CompatibleIDs"     ]
            stock[10]= MachineDeviceInfo[ i + ",MatchingDeviceID"  ]
            stock[11]= MachineDeviceInfo[ i + ",DriverDate"        ]
            stock[12]= MachineDeviceInfo[ i + ",DriverVer"         ]
            stock[13]= MachineDeviceInfo[ i + ",DriverProvider"    ]

			
            SaveDeviceInfoToArray( stock , DeviceInfoArray , i )
            TranslateDeviceInfoToArray(stock2, DeviceInfoArray, i ,i , MachineID );

            DeviceListHTML += stock2[2] + "</td><td>" + stock2[7] + "</td><td>" + stock2[5] + "</td><td>" /*+ stock2[4] + "</td><td>" */
                           + stock2[6] + "</td></tr>"
            
		}
        DeviceListHTML += "</table>"

        document.getElementById( DeviceListTagName ).innerHTML = DeviceListHTML
        document.getElementById( OpenCloseTagName ).innerHTML  = "<img src='img/tree_arrow_open.gif'>"

        
    }
    else
    {
        DisplayMessage("" + PromptArray["drvfetch.js_2246_1"] + "#" + MachineID + "" + PromptArray["drvfetch.js_2246_2"] + "...");

        
        ReleaseCurMachineDeviceListInfo( MachineID , g_AllMachineDeviceList ) 

        
        
        g_AllMatchingDriverList = null
        g_AllMatchingDriverList = new Array()

        document.getElementById( DeviceListTagName ).innerHTML = "" 
        document.getElementById( OpenCloseTagName ).innerHTML  = "<img src='img/tree_arrow_close.gif'>"
    }
return
}







function GetDeviceListInfoByMachineIDFromDB( MachineID )
{
    var RetInfo = new Array()
    var SoapApplyURL = ServerName.value + SoapAspURL.value		

	var SoapRequestXML = ""
    
	
	SoapRequestXML += '<?xml version="1.0" standalone="no"?>\n'
    
	SoapRequestXML += '<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http:\/\/schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http:\/\/schemas.xmlsoap.org/soap/envelope/">\n'
	SoapRequestXML += "   <SOAP-ENV:Header xmlns:wsu =\"http:\/\/schemas.xmlsoap.org/ws/2002/07/utility\" "
	SoapRequestXML += "                    xmlns:wsse=\"http:\/\/schemas.xmlsoap.org/ws/2002/07/secext\" >\n"
    SoapRequestXML += GetClientInfo()
	SoapRequestXML += "   </SOAP-ENV:Header>\n"
	SoapRequestXML += "   <SOAP-ENV:Body>\n"
	SoapRequestXML += "     <n:GetDeviceListInfoByMachineID xmlns:n=\"http:\/\/e-drivers.cn/soap/\">\n"
    SoapRequestXML += "         <MachineID>"           + MachineID                        + "</MachineID>\n"
    SoapRequestXML += "     </n:GetDeviceListInfoByMachineID>\n"
	SoapRequestXML += "   </SOAP-ENV:Body>\n"
	SoapRequestXML += "</SOAP-ENV:Envelope>"

	
    
    var ReturnXML = MyXMLHttpRequest( SoapApplyURL , SoapRequestXML )

	if (ReturnXML == null || ReturnXML == "")
	{
        DisplayMessage( "" + PromptArray["drvfetch.js_2296_1"] + "," + PromptArray["drvfetch.js_2296_2"] + ":\n" + SoapRequestXML )
        RetInfo["Success"] = false
        RetInfo["Info"]    = "" + PromptArray["drvfetch.js_2298_1"] + ""
		return ( RetInfo )
	}

	var ErrorInfo = GetInfoByTagFromXml( ReturnXML, SOAP_RET_ERROR_STRING_TAG )
	if (ErrorInfo != null) 
	{
        RetInfo["Success"] = false
        RetInfo["Info"]    = ErrorInfo
		return ( RetInfo )
	}
	else
	{
        
        
        
        
        
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		

        var ResultString         = GetInfoByTagFromXml( ReturnXML, "Result" )
		{
			var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
			xmlDoc.async = false
			xmlDoc.loadXML( ReturnXML )
			var objRowDataNode = xmlDoc.selectSingleNode("\/\/DeviceList")
			if ( objRowDataNode )
			{
				var oNodeList ;
		
				var oNodeList = objRowDataNode.childNodes;
				for (var i=0;i<oNodeList.length ; i++)
				{
                    
                    
					RetInfo[ i + ",DeviceDesc"        ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "device_desc" ) )
					RetInfo[ i + ",MatchingDeviceID"  ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "device_matchingdeviceid" ) )
					RetInfo[ i + ",HardwareIDs"       ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "device_hardwareids" ) )
					RetInfo[ i + ",CompatibleIDs"     ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "device_compatibleids" ) )
					RetInfo[ i + ",BackupCode"        ] = parseInt( GetXmlSingleNodeText( oNodeList(i).xml , "device_backupcode" ) )
					RetInfo[ i + ",StatusCode"        ] = parseInt( GetXmlSingleNodeText( oNodeList(i).xml , "device_statuscode" ) )
					RetInfo[ i + ",ProblemCode"       ] = parseInt( GetXmlSingleNodeText( oNodeList(i).xml , "device_problemcode" ) )
                    RetInfo[ i + ",HiddenCode"        ] = parseInt( GetXmlSingleNodeText( oNodeList(i).xml , "device_hiddencode" ) ) 
                    RetInfo[ i + ",ClassGUID"         ] = parseInt( GetXmlSingleNodeText( oNodeList(i).xml , "device_classguid" ) ) 
                    RetInfo[ i + ",DeviceIndex"       ] = parseInt( GetXmlSingleNodeText( oNodeList(i).xml , "device_index" ) )
                    RetInfo[ i + ",Device_UI_Row"     ] = parseInt( GetXmlSingleNodeText( oNodeList(i).xml , "device_ui_row" ) )
                    RetInfo[ i + ",DriverDate"        ] = GetXmlSingleNodeText( oNodeList(i).xml , "driver_date" )
                    RetInfo[ i + ",DriverVer"         ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "driver_ver" ) )
                    RetInfo[ i + ",DriverProvider"    ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "driver_provider" ) )
                    RetInfo[ i + ",CreateTime"        ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "create_info_time" ) )
                    
                    
                    if ( RetInfo[ i + ",ProblemCode"] ) RetInfo[ i + ",DriverDate"] = ""

                    RetInfo[ "Rows"     ] = i+1
				}
			}
			RetInfo["Success"       ] = ( ResultString == "Success" ) ? true : false
			RetInfo["ErrorInfo"     ] = ""
            
            
            xmlDoc = null
		}
		return ( RetInfo )
	}
}




































function SaveCurMachineDeviceListInfo( MachineID , MachineDeviceInfo , AllMachineDeviceList )
{
    AllMachineDeviceList[ MachineID             ] = true
    AllMachineDeviceList[ MachineID + ",Rows"   ] = MachineDeviceInfo["Rows"]        

    for ( var i=0; i<MachineDeviceInfo["Rows"]; i++)
    {
        AllMachineDeviceList[ MachineID + "," + i + ",DeviceDesc"        ] = MachineDeviceInfo[ i + ",DeviceDesc"        ]
        AllMachineDeviceList[ MachineID + "," + i + ",MatchingDeviceID"  ] = MachineDeviceInfo[ i + ",MatchingDeviceID"  ]
        AllMachineDeviceList[ MachineID + "," + i + ",HardwareIDs"       ] = MachineDeviceInfo[ i + ",HardwareIDs"       ]
        AllMachineDeviceList[ MachineID + "," + i + ",CompatibleIDs"     ] = MachineDeviceInfo[ i + ",CompatibleIDs"     ]
        AllMachineDeviceList[ MachineID + "," + i + ",BackupCode"        ] = MachineDeviceInfo[ i + ",BackupCode"        ]
        AllMachineDeviceList[ MachineID + "," + i + ",StatusCode"        ] = MachineDeviceInfo[ i + ",StatusCode"        ]
        AllMachineDeviceList[ MachineID + "," + i + ",ProblemCode"       ] = MachineDeviceInfo[ i + ",ProblemCode"       ]
        AllMachineDeviceList[ MachineID + "," + i + ",HiddenCode"        ] = MachineDeviceInfo[ i + ",HiddenCode"        ]
        AllMachineDeviceList[ MachineID + "," + i + ",ClassGUID"         ] = MachineDeviceInfo[ i + ",ClassGUID"         ]
        AllMachineDeviceList[ MachineID + "," + i + ",DeviceIndex"       ] = MachineDeviceInfo[ i + ",DeviceIndex"       ]
        AllMachineDeviceList[ MachineID + "," + i + ",Device_UI_Row"     ] = MachineDeviceInfo[ i + ",Device_UI_Row"     ]
        AllMachineDeviceList[ MachineID + "," + i + ",DriverDate"        ] = MachineDeviceInfo[ i + ",DriverDate"        ]
        AllMachineDeviceList[ MachineID + "," + i + ",DriverVer"         ] = MachineDeviceInfo[ i + ",DriverVer"         ]
        AllMachineDeviceList[ MachineID + "," + i + ",DriverProvider"    ] = MachineDeviceInfo[ i + ",DriverProvider"    ]
        AllMachineDeviceList[ MachineID + "," + i + ",CreateTime"        ] = MachineDeviceInfo[ i + ",CreateTime"        ]
    }
}
function ReleaseCurMachineDeviceListInfo( MachineID , AllMachineDeviceList ) 
{
    AllMachineDeviceList[ MachineID             ] = false
}


























function GetDeviceMatchingDriverList( MachineID , DeviceIndex )
{
    var DeviceTagName = MachineID + "_" + DeviceIndex + "_DeviceTag"
    if ( !document.getElementById( DeviceTagName ).innerHTML )
    {
        DisplayMessage( "" + PromptArray["drvfetch.js_2529_1"] + "[" + g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",DeviceDesc"        ] + "]" + PromptArray["drvfetch.js_2529_2"] + "..." )
        document.getElementById( DeviceTagName ).innerHTML = "<table><tr><td>" + PromptArray["drvfetch.js_2530_1"] + "...</td></tr></table>"
        DrvCert.UIRefresh()
    }

	var SoapApplyURL = ServerName.value + SoapAspURL.value		

	var SoapRequestXML = ""
    
	
	SoapRequestXML += '<?xml version="1.0" standalone="no"?>\n'
	SoapRequestXML += '<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http:\/\/schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http:\/\/schemas.xmlsoap.org/soap/envelope/">\n'
	SoapRequestXML += "   <SOAP-ENV:Header xmlns:wsu =\"http:\/\/schemas.xmlsoap.org/ws/2002/07/utility\" "
	SoapRequestXML += "                    xmlns:wsse=\"http:\/\/schemas.xmlsoap.org/ws/2002/07/secext\" >\n"
    SoapRequestXML += GetClientInfo()
	SoapRequestXML += "   </SOAP-ENV:Header>\n"
	SoapRequestXML += "   <SOAP-ENV:Body>\n"
	SoapRequestXML += "     <n:GetDeviceMatchingDriverList xmlns:n=\"http:\/\/e-drivers.cn/soap/\">\n"
    SoapRequestXML += "         <DeviceInfo>\n"
    SoapRequestXML += "             <DeviceDesc>"           + XmlEncoding( g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",DeviceDesc"        ] ) + "</DeviceDesc>\n"
    SoapRequestXML += "             <MatchingDeviceID>"     + XmlEncoding( g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",MatchingDeviceID"  ] ) + "</MatchingDeviceID>\n"
    SoapRequestXML += "             <HardwareIDs>"          + XmlEncoding( g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",HardwareIDs"       ] ) + "</HardwareIDs>\n"
    SoapRequestXML += "             <CompatibleIDs>"        + XmlEncoding( g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",CompatibleIDs"     ] ) + "</CompatibleIDs>\n"
    SoapRequestXML += "             <BackupCode>"           + ( g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",BackupCode"        ] ) + "</BackupCode>\n"
    SoapRequestXML += "             <StatusCode>"           + ( g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",StatusCode"        ] ) + "</StatusCode>\n"
    SoapRequestXML += "             <ProblemCode>"          + ( g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",ProblemCode"       ] ) + "</ProblemCode>\n"
    SoapRequestXML += "             <ClassGUID>"            + ( g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",ClassGUID"         ] ) + "</ClassGUID>\n"
    SoapRequestXML += "             <DeviceIndex>"          + ( g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",DeviceIndex"       ] ) + "</DeviceIndex>\n"
    SoapRequestXML += "             <Device_UI_Row>"        + ( g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",Device_UI_Row"     ] ) + "</Device_UI_Row>\n"
    SoapRequestXML += "             <DriverDate>"           + XmlEncoding( g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",DriverDate"        ] ) + "</DriverDate>\n"
    SoapRequestXML += "             <DriverVer>"            + XmlEncoding( g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",DriverVer"         ] ) + "</DriverVer>\n"
    SoapRequestXML += "             <DriverProvider>"       + XmlEncoding( g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",DriverProvider"    ] ) + "</DriverProvider>\n"
    SoapRequestXML += "         </DeviceInfo>\n"
    SoapRequestXML += "         <UserID>" + MachineID + "</UserID>\n"
	SoapRequestXML += "     </n:GetDeviceMatchingDriverList>\n"
	SoapRequestXML += "   </SOAP-ENV:Body>\n"
	SoapRequestXML += "</SOAP-ENV:Envelope>"

	
    
    var ReturnXML = MyXMLHttpRequest( SoapApplyURL , SoapRequestXML )

    var RetInfo = new Array()
    RetInfo["Rows"] = 0


	if (ReturnXML == null || ReturnXML == "")
	{
        DisplayMessage( "" + PromptArray["drvfetch.js_2577_1"] + "[" + g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",DeviceDesc"        ] + "]" + PromptArray["drvfetch.js_2577_2"] + "\n" + PromptArray["drvfetch.js_2577_3"] + ":\n" + SoapRequestXML )
        RetInfo["Success"       ] = false
        RetInfo["ErrorInfo"     ] = "" + PromptArray["drvfetch.js_2579_1"] + "[" + g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",DeviceDesc"        ] + "]" + PromptArray["drvfetch.js_2579_2"] + ""
		return ( RetInfo )
	}


    var ErrorInfo = GetInfoByTagFromXml( ReturnXML, SOAP_RET_ERROR_STRING_TAG )
	if ( ErrorInfo ) 
	{
        DisplayMessage( "" + PromptArray["drvfetch.js_2587_1"] + ":\n" + ErrorInfo )
        RetInfo["Success"       ] = false
        RetInfo["ErrorInfo"     ] = ErrorInfo
		return ( RetInfo )
	}
	else
	{
        document.getElementById( DeviceTagName ).innerHTML = "<table><tr><td>" + PromptArray["drvfetch.js_2594_1"] + "</td></tr></table>"
        DrvCert.UIRefresh()
        
        
        
        
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		

        var ResultString = GetInfoByTagFromXml( ReturnXML, "Result" )
		{
			var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
			xmlDoc.async = false
			xmlDoc.loadXML( ReturnXML )
			var objRowDataNode = xmlDoc.selectSingleNode("\/\/DriverList")
			if ( objRowDataNode )
			{
				var oNodeList ;
		
				var oNodeList = objRowDataNode.childNodes;
				for (var i=0;i<oNodeList.length ; i++)
				{
                    
                    
					RetInfo[ i + ",DriverID"            ] =             ( GetXmlSingleNodeText( oNodeList(i).xml , "DriverID"           ) )
					RetInfo[ i + ",UserID"              ] =             ( GetXmlSingleNodeText( oNodeList(i).xml , "UserID"             ) )
					RetInfo[ i + ",DeviceDesc"          ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "DeviceDesc"         ) )
					RetInfo[ i + ",MatchingDeviceID"    ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "MatchingDeviceID"   ) )
					RetInfo[ i + ",HardwareIDCompaIDs"  ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "HardwareIDCompaIDs" ) )
					RetInfo[ i + ",DriverDate"          ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "DriverDate"         ) )
					RetInfo[ i + ",DriverVer"           ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "DriverVer"          ) )
					RetInfo[ i + ",INFName"             ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "INFName"            ) )
                    RetInfo[ i + ",Provider"            ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "Provider"           ) ) 
                    RetInfo[ i + ",ClassName"           ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "ClassName"          ) ) 
                    RetInfo[ i + ",DriverHash"          ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "DriverHash"         ) )
                    RetInfo[ i + ",UploadTime"          ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "UploadTime"         ) )
                    RetInfo[ i + ",DriverSize"          ] =             ( GetXmlSingleNodeText( oNodeList(i).xml , "DriverSize"         ) )
                    RetInfo[ i + ",DriverStatus"        ] =             ( GetXmlSingleNodeText( oNodeList(i).xml , "DriverStatus"       ) )
                    RetInfo[ i + ",Description"         ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "Description"        ) )
                    RetInfo[ i + ",CatValidFlag"        ] =             ( GetXmlSingleNodeText( oNodeList(i).xml , "CatValidFlag"       ) )
                    RetInfo[ i + ",DriverLanguage"      ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "DriverLanguage"     ) )
                    RetInfo[ i + ",ForceInstallFlag"    ] =             ( GetXmlSingleNodeText( oNodeList(i).xml , "ForceInstallFlag"   ) )
                    RetInfo[ i + ",OSPlatformFlag"      ] = XmlDencoding( GetXmlSingleNodeText( oNodeList(i).xml , "OSPlatformFlag"     ) )

                    RetInfo[ "Rows"     ] = i+1
				}
			}
			RetInfo["Success"       ] = ( ResultString == "Success" ) ? true : false
			RetInfo["ErrorInfo"     ] = ""
            
            
            xmlDoc = null
            DisplayMessage( RetInfo["Success"] ? "" + PromptArray["drvfetch.js_2679_1"] + "," + PromptArray["drvfetch.js_2679_2"] + "" + RetInfo[ "Rows" ] + "" + PromptArray["drvfetch.js_2679_3"] + "" : "" + PromptArray["drvfetch.js_2679_4"] + "" )
		}
		return ( RetInfo )
	}
}

function ListDeviceMatchingDriverListInfo( MachineID , DeviceIndex )
{
    var DeviceTagName = MachineID + "_" + DeviceIndex + "_DeviceTag"

    if ( !document.getElementById( DeviceTagName ).innerHTML )
    {
        
        
        DisplayMessage("" + PromptArray["drvfetch.js_2693_1"] + "[" + g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",DeviceDesc"        ] + "]" + PromptArray["drvfetch.js_2693_2"] + "...");

        document.getElementById( DeviceTagName ).innerHTML = "<table><tr><td>" + PromptArray["drvfetch.js_2695_1"] + "...</td></tr></table>"
        DrvCert.UIRefresh()

        var MatchingDriverListInfo = GetDeviceMatchingDriverList( MachineID , DeviceIndex )
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        

        SaveCurMatchingDriverListInfo( MachineID , DeviceIndex , MatchingDriverListInfo , g_AllMatchingDriverList )
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        var DriverListHTML  = "<table>"

		for (var i=0; g_AllMatchingDriverList[ MachineID + "," + DeviceIndex] && ( i < g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + ",Rows"] ) ; i++)
		{
            DriverListHTML += "<tr valign=top><td>" + (i+1) + ".&nbsp;</td><td>"
                            + "<a style='color: green;font-style: normal;font-family: " + PromptArray["drvfetch.js_2750_1"] + ";'"
                            + " VALIGN='top'"
                            + " onClick=ListDriverInfo(" + MachineID + "," + DeviceIndex + "," + i + ")"
                            + " onMouseMove='this.style.color=\"red\";this.style.cursor=\"hand\"'"
                            + " onMouseOut='this.style.color=\"green\";this.style.fontStyle=\"normal\";'"
                            + " >"
            DriverListHTML += g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + i + ",DeviceDesc" ] 
            
            
            
            DriverListHTML += ( g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + i + ",UserID"] == MachineID ) ? "(" + PromptArray["drvfetch.js_2760_1"] + ")" : "" ;
            
            DriverListHTML += "</a>&nbsp;&nbsp;"
                            + "<span id='" + MachineID + "_" + DeviceIndex + "_" + i + "_DriverTag'></span>"
                            + "</td></tr>"
		}
        DriverListHTML += "</table>"

        document.getElementById( DeviceTagName ).innerHTML = ( g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + ",Rows"] ) ? DriverListHTML 
                                                                                                 : "<table><tr><td>" + PromptArray["drvfetch.js_2769_1"] + "</td></tr></table>";

        
    }
    else
    {
        DisplayMessage( "" + PromptArray["drvfetch.js_2775_1"] + "[" + g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",DeviceDesc" ] + "]" + PromptArray["drvfetch.js_2775_2"] + "" )
        document.getElementById( DeviceTagName ).innerHTML = ""

        ReleaseCurMatchingDriverListInfo( MachineID , DeviceIndex , g_AllMatchingDriverList )

        return
    }

return
}

function SaveCurMatchingDriverListInfo( MachineID , DeviceIndex , MatchingDriverListInfo , AllMatchingDriverList )
{
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    AllMatchingDriverList[ MachineID + "," + DeviceIndex             ] = true
    AllMatchingDriverList[ MachineID + "," + DeviceIndex + ",Rows"   ] = 0        

    var j=0

    
    
    
    for ( var i=0; i<MatchingDriverListInfo["Rows"]; i++)
    {
        
        
        
        
        if (  !AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + MatchingDriverListInfo[ i + ",DriverHash"] ] )
        {
            
            
            
            if ( MatchingDriverListInfo[ i + ",UserID"              ] == MachineID )
            {
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",DriverID"            ] = MatchingDriverListInfo[ i + ",DriverID"            ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",UserID"              ] = MatchingDriverListInfo[ i + ",UserID"              ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",DeviceDesc"          ] = MatchingDriverListInfo[ i + ",DeviceDesc"          ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",MatchingDeviceID"    ] = MatchingDriverListInfo[ i + ",MatchingDeviceID"    ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",HardwareIDCompaIDs"  ] = MatchingDriverListInfo[ i + ",HardwareIDCompaIDs"  ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",DriverDate"          ] = MatchingDriverListInfo[ i + ",DriverDate"          ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",DriverVer"           ] = MatchingDriverListInfo[ i + ",DriverVer"           ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",INFName"             ] = MatchingDriverListInfo[ i + ",INFName"             ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",Provider"            ] = MatchingDriverListInfo[ i + ",Provider"            ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",ClassName"           ] = MatchingDriverListInfo[ i + ",ClassName"           ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",DriverHash"          ] = MatchingDriverListInfo[ i + ",DriverHash"          ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",UploadTime"          ] = MatchingDriverListInfo[ i + ",UploadTime"          ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",DriverSize"          ] = MatchingDriverListInfo[ i + ",DriverSize"          ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",DriverStatus"        ] = MatchingDriverListInfo[ i + ",DriverStatus"        ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",Description"         ] = MatchingDriverListInfo[ i + ",Description"         ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",CatValidFlag"        ] = MatchingDriverListInfo[ i + ",CatValidFlag"        ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",DriverLanguage"      ] = MatchingDriverListInfo[ i + ",DriverLanguage"      ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",ForceInstallFlag"    ] = MatchingDriverListInfo[ i + ",ForceInstallFlag"    ]
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",OSPlatformFlag"      ] = MatchingDriverListInfo[ i + ",OSPlatformFlag"      ]
                
                AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + MatchingDriverListInfo[ i + ",DriverHash"] ] = MachineID + "," + DeviceIndex + "," + j
                j++

                AllMatchingDriverList[ MachineID + "," + DeviceIndex + ",Rows"   ] = j
            }
        }
    }

    for ( var i=0; i<MatchingDriverListInfo["Rows"]; i++)
    {
        
        
        
        
        if (  !AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + MatchingDriverListInfo[ i + ",DriverHash"] ] )
        {
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",DriverID"            ] = MatchingDriverListInfo[ i + ",DriverID"            ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",UserID"              ] = MatchingDriverListInfo[ i + ",UserID"              ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",DeviceDesc"          ] = MatchingDriverListInfo[ i + ",DeviceDesc"          ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",MatchingDeviceID"    ] = MatchingDriverListInfo[ i + ",MatchingDeviceID"    ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",HardwareIDCompaIDs"  ] = MatchingDriverListInfo[ i + ",HardwareIDCompaIDs"  ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",DriverDate"          ] = MatchingDriverListInfo[ i + ",DriverDate"          ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",DriverVer"           ] = MatchingDriverListInfo[ i + ",DriverVer"           ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",INFName"             ] = MatchingDriverListInfo[ i + ",INFName"             ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",Provider"            ] = MatchingDriverListInfo[ i + ",Provider"            ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",ClassName"           ] = MatchingDriverListInfo[ i + ",ClassName"           ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",DriverHash"          ] = MatchingDriverListInfo[ i + ",DriverHash"          ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",UploadTime"          ] = MatchingDriverListInfo[ i + ",UploadTime"          ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",DriverSize"          ] = MatchingDriverListInfo[ i + ",DriverSize"          ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",DriverStatus"        ] = MatchingDriverListInfo[ i + ",DriverStatus"        ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",Description"         ] = MatchingDriverListInfo[ i + ",Description"         ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",CatValidFlag"        ] = MatchingDriverListInfo[ i + ",CatValidFlag"        ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",DriverLanguage"      ] = MatchingDriverListInfo[ i + ",DriverLanguage"      ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",ForceInstallFlag"    ] = MatchingDriverListInfo[ i + ",ForceInstallFlag"    ]
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + j + ",OSPlatformFlag"      ] = MatchingDriverListInfo[ i + ",OSPlatformFlag"      ]
            
            AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + MatchingDriverListInfo[ i + ",DriverHash"] ] = MachineID + "," + DeviceIndex + "," + j
            j++

            AllMatchingDriverList[ MachineID + "," + DeviceIndex + ",Rows"   ] = j
        }
    }
}
function ReleaseCurMatchingDriverListInfo( MachineID , DeviceIndex , AllMatchingDriverList )
{
    AllMatchingDriverList[ MachineID + "," + DeviceIndex             ] = false

    for ( var i=0; i< AllMatchingDriverList[ MachineID + "," + DeviceIndex + ",Rows" ] ; i++ )
    {
        AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + i + ",DriverHash"] ] = ""
    }
}

function ListDriverInfo( MachineID , DeviceIndex , DriverIndex )
{
    
    var DriverTagName = MachineID + "_" + DeviceIndex + "_" + DriverIndex + "_DriverTag"

    if ( !document.getElementById( DriverTagName ).innerHTML )
    {
        
        
        DisplayMessage("" + PromptArray["drvfetch.js_2913_1"] + "[" + g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",DeviceDesc"        ] + "]" + PromptArray["drvfetch.js_2913_2"] + "#" + DriverIndex + "" + PromptArray["drvfetch.js_2913_3"] + "...");

        document.getElementById( DriverTagName ).innerHTML = "<table><tr><td>" + PromptArray["drvfetch.js_2915_1"] + "...</td></tr></table>"
        DrvCert.UIRefresh()

        var DriverInfoHTML  = "<table width=100%>"

        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        

        var DriverDescriptionString = g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + DriverIndex + ",Description"      ]
        var CurPath = DrvCert.GetFolderPath( 32 )
        
        
        CurPath     = CurPath.substring( 0 , CurPath.lastIndexOf( "\\" ) )    
        CurPath     = CurPath + "\\Temp"
        var TmpFileName = CurPath + "\\DrvImp.TMP"
        DrvCert.DeleteFile( TmpFileName )
        
        if ( DriverDescriptionString && ( DriverDescriptionString != "null" ) )
        {
            DrvCert.SaveBASE64ToBinFile( DriverDescriptionString , TmpFileName )
            DriverDescriptionString = DrvCert.GetStringFromFile( TmpFileName )
            DrvCert.DeleteFile( TmpFileName )
        }

        DriverInfoHTML += "<tr valign=top><td>" + PromptArray["drvfetch.js_2958_1"] + "</td><td>&nbsp;</td><td>" + g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + DriverIndex + ",DriverID"         ] + "</td></tr>"
                        + "<tr valign=top><td>" + PromptArray["drvfetch.js_2959_1"] + "</td><td></td><td>" + g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + DriverIndex + ",UserID"           ] + "</td></tr>"
                        + "<tr valign=top><td>" + PromptArray["drvfetch.js_2960_1"] + "</td><td></td><td>" + g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + DriverIndex + ",DeviceDesc"       ] + "</td></tr>"
                        + "<tr valign=top><td>" + PromptArray["drvfetch.js_2961_1"] + "</td><td></td><td>" + g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + DriverIndex + ",MatchingDeviceID" ] + "</td></tr>"
                        + "<tr valign=top><td>" + PromptArray["drvfetch.js_2962_1"] + "</td><td></td><td>" + g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + DriverIndex + ",DriverDate"       ] + "</td></tr>"
                        + "<tr valign=top><td>" + PromptArray["drvfetch.js_2963_1"] + "</td><td></td><td>" + g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + DriverIndex + ",DriverVer"        ] + "</td></tr>"
                        + "<tr valign=top><td>" + PromptArray["drvfetch.js_2964_1"] + " " + PromptArray["drvfetch.js_2964_2"] + " " + PromptArray["drvfetch.js_2964_3"] + "</td><td></td><td>" + g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + DriverIndex + ",Provider"         ] + "</td></tr>"
                        + "<tr valign=top><td>" + PromptArray["drvfetch.js_2965_1"] + "</td><td></td><td>" + g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + DriverIndex + ",ClassName"        ] + "</td></tr>"
                        + "<tr valign=top><td>" + PromptArray["drvfetch.js_2966_1"] + "</td><td></td><td>" + g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + DriverIndex + ",DriverSize"       ] + "</td></tr>"
                        + "<tr valign=top><td>" + PromptArray["drvfetch.js_2967_1"] + "</td><td></td><td>" + DriverDescriptionString + "</td></tr>"
                        + "<tr valign=top><td>" + PromptArray["drvfetch.js_2968_1"] + "</td><td></td><td>" + g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + DriverIndex + ",CatValidFlag"     ] + "</td></tr>"
                        + "<tr valign=top><td>" + PromptArray["drvfetch.js_2969_1"] + "    " + PromptArray["drvfetch.js_2969_2"] + "</td><td></td><td>" + g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + DriverIndex + ",DriverLanguage"   ] + "</td></tr>"
                        + "<tr valign=top><td>" + PromptArray["drvfetch.js_2970_1"] + "</td><td></td><td>" + g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + DriverIndex + ",OSPlatformFlag"   ] + "</td></tr>"
        var hostname        = ServerName.value + SoapAspURL.value
        
        
        var DownloadURL = hostname + "?mode=downloaddrv&driverid=" + g_AllMatchingDriverList[ MachineID + "," + DeviceIndex + "," + DriverIndex + ",DriverID"         ]
        var DownloadDriverHtml  = "<a href='?' onclick='DownloadDriverByUserClick( \"" + DownloadURL + "\" );return false'>" + PromptArray["drvfetch.js_2975_1"] + "</a>"
        
        DriverInfoHTML  += "<tr valign=top><td>" + DownloadDriverHtml + "</td><td colspan=2></td></tr>"
        DriverInfoHTML  += "</table>"

        document.getElementById( DriverTagName ).innerHTML = DriverInfoHTML

        
    }
    else
    {
        DisplayMessage( "" + PromptArray["drvfetch.js_2986_1"] + "[" + g_AllMachineDeviceList[ MachineID + "," + DeviceIndex + ",DeviceDesc" ] + "]" + PromptArray["drvfetch.js_2986_2"] + "#" + DriverIndex + "" + PromptArray["drvfetch.js_2986_3"] + "" )
        document.getElementById( DriverTagName ).innerHTML = ""

        return
    }

return
}

function SubmitCaseInfoToServer( UserID , CaseID , OSInfoXml , BrowseInfo )
{

	var SoapApplyURL = ServerName.value + SoapAspURL.value		

	var SoapRequestXML = ""
    
	
    SoapRequestXML += '<?xml version="1.0" standalone="no"?>\n'
    
	SoapRequestXML += '<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http:\/\/schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http:\/\/schemas.xmlsoap.org/soap/envelope/">\n'
	SoapRequestXML += "   <SOAP-ENV:Header xmlns:wsu =\"http:\/\/schemas.xmlsoap.org/ws/2002/07/utility\" "
	SoapRequestXML += "                    xmlns:wsse=\"http:\/\/schemas.xmlsoap.org/ws/2002/07/secext\" >\n"
    SoapRequestXML += GetClientInfo()
	SoapRequestXML += "   </SOAP-ENV:Header>\n"
	SoapRequestXML += "   <SOAP-ENV:Body>\n"
	SoapRequestXML += "     <n:SubmitUserDeviceOSBrowseInfoLog xmlns:n=\"http:\/\/e-drivers.cn/soap/\">\n"
    SoapRequestXML += "     <UserID>"       + UserID + "</UserID>\n"
    SoapRequestXML += "     <CaseID>"       + CaseID + "</CaseID>\n"
    
    SoapRequestXML += "     <CaseStepStatus>DrvPatch</CaseStepStatus>\n"
    
    SoapRequestXML += OSInfoXml             + "\n"
    SoapRequestXML += "     <BrowseInfo>"   + XmlEncoding( BrowseInfo ) + "</BrowseInfo>\n"
	SoapRequestXML += "     </n:SubmitUserDeviceOSBrowseInfoLog>\n"
	SoapRequestXML += "   </SOAP-ENV:Body>\n"
	SoapRequestXML += "</SOAP-ENV:Envelope>"


    var RetInfo = new Array()
    var ErrorInfo = ""

    
    DisplayMessage( "" + PromptArray["drvfetch.js_3028_1"] + "..." )
    
	
    var ReturnXML = MyXMLHttpRequest( SoapApplyURL , SoapRequestXML )
    

	
    
    if ( !ReturnXML )
	{
        {
            ErrorInfo = "" + PromptArray["drvfetch.js_3039_1"] + "" + ServerName.value + "" + PromptArray["drvfetch.js_3039_2"] + ""
            DisplayMessage( "" + PromptArray["drvfetch.js_3040_1"] + "\n" + PromptArray["drvfetch.js_3040_2"] + "" + ServerName.value + "" + PromptArray["drvfetch.js_3040_3"] + "," + PromptArray["drvfetch.js_3040_4"] + "\n" + SoapRequestXML)
        }
        RetInfo["Success"] = false
        RetInfo["Info"]    = ErrorInfo
        RetInfo["UserID"]  = ""
		return ( RetInfo )
	}

	ErrorInfo = GetInfoByTagFromXml( ReturnXML, SOAP_RET_ERROR_STRING_TAG )

	if (ErrorInfo != null) 
	{
        RetInfo["Success"] = false
        RetInfo["Info"]    = ErrorInfo
        RetInfo["UserID"]  = ""
        DisplayMessage( "" + PromptArray["drvfetch.js_3055_1"] + ":\n" + ErrorInfo )
		return ( RetInfo )
	}
	else
	{
        var UserID           = GetInfoByTagFromXml( ReturnXML, "UserID" )

        RetInfo["Success"         ]  = true
        RetInfo["Info"            ]  = "" + PromptArray["drvfetch.js_3063_1"] + "" 
        RetInfo["UserID"          ]  = UserID
        DisplayMessage( "" + PromptArray["drvfetch.js_3065_1"] + "" )
		return ( RetInfo )
	}
}

function GetCurAccountAllMachineIDs()
{

    var MachineIDInfoArray = new Array()

    MachineIDInfoArray["Rows"] = 0

	var SoapApplyURL = ServerName.value + SoapAspURL.value

	var SoapRequestXML = ""
    SoapRequestXML += '<?xml version="1.0" standalone="no"?>\n'
    
	SoapRequestXML += '<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http:\/\/schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http:\/\/schemas.xmlsoap.org/soap/envelope/">\n'
	SoapRequestXML += "   <SOAP-ENV:Header xmlns:wsu =\"http:\/\/schemas.xmlsoap.org/ws/2002/07/utility\" "
	SoapRequestXML += "                    xmlns:wsse=\"http:\/\/schemas.xmlsoap.org/ws/2002/07/secext\" >\n"
	SoapRequestXML += "   </SOAP-ENV:Header>\n"
	SoapRequestXML += "   <SOAP-ENV:Body>\n"
	SoapRequestXML += "     <n:GetCurAccountAllMachineIDs xmlns:n=\"http:\/\/e-drivers.cn/soap/\">\n"
	SoapRequestXML += "     </n:GetCurAccountAllMachineIDs>\n"
	SoapRequestXML += "   </SOAP-ENV:Body>\n"
	SoapRequestXML += "</SOAP-ENV:Envelope>"


    var ErrorInfo = ""

    var ReturnXML = MyXMLHttpRequest( SoapApplyURL , SoapRequestXML )
    
    if ( !ReturnXML )
	{
        ErrorInfo = "" + PromptArray["drvfetch.js_3099_1"] + "" + ServerName.value + "" + PromptArray["drvfetch.js_3099_2"] + ""
        alert( ErrorInfo )
        return ( MachineIDInfoArray )
	}

	ErrorInfo = GetTextByTagFromXml( ReturnXML, SOAP_RET_ERROR_STRING_TAG )

	if (ErrorInfo != null) 
	{
        alert( ErrorInfo )
        return ( MachineIDInfoArray )
	}
	else
	{
        var Rows = GetTextByTagFromXml( ReturnXML , "Rows" )
        MachineIDInfoArray["Rows"] = Rows

        for ( var i=0; i<parseInt( Rows ); i++)
        {
            MachineIDInfoArray[ i ] = GetTextByTagFromXml( ReturnXML , "RowItem" + i )
        }
        return ( MachineIDInfoArray )
	}
}

function ImportMachine()
{

    var ImportMachineInfoHTML = "<center>&nbsp;&nbsp;" + PromptArray["drvfetch.js_3127_1"] + "<input id='ImportNewMachineFile' type=text size=30>&nbsp;&nbsp;<br><br>"
                           + "<input type=button value='" + PromptArray["drvfetch.js_3128_1"] + "' onclick='hideTransientMessage()'>&nbsp;&nbsp;"
                           + "<input type=button value='" + PromptArray["drvfetch.js_3129_1"] + "' onclick='OnImportNewMachine()'>"
                           + "<br></center>"

    DispMessageInfo( ImportMachineInfoHTML )
}

function OnImportNewMachine()
{
    
    var ImportNewMachineFileName = ImportNewMachineFile.value

    hideTransientMessage()

    if ( !ImportNewMachineFileName ) return

	var FileNameXml = DrvCert.FindFileInPath( ImportNewMachineFileName )
	var FileName = GetXmlSingleNodeText( FileNameXml , "FileItem0" )

    if ( !FileName ) 
    {
        alert( "" + PromptArray["drvfetch.js_3149_1"] + "" )
        return 
    }
    
    
    
    
    
    var NormalString = DrvCert.GetStringFromFile( ImportNewMachineFileName )
    NormalString = DrvCert.StringBASE64Decoding( NormalString )
    DisplayMessage( NormalString )

	var SoapApplyURL = ServerName.value + SoapAspURL.value		

    
    DisplayMessage( "" + PromptArray["drvfetch.js_3164_1"] + "..." )
    
	
    var ReturnXML = MyXMLHttpRequest( SoapApplyURL , NormalString )
    
    if ( !ReturnXML )
	{
        if (!g_CanUserConnectToServer)
        {
            ErrorInfo = "" + PromptArray["drvfetch.js_3173_1"] + ""
            DisplayMessage( "" + PromptArray["drvfetch.js_3174_1"] + "," + PromptArray["drvfetch.js_3174_2"] + "" )
            
        }
        else
        {
            ErrorInfo = "" + PromptArray["drvfetch.js_3179_1"] + "" + ServerName.value + "" + PromptArray["drvfetch.js_3179_2"] + ""
            DisplayMessage( "" + PromptArray["drvfetch.js_3180_1"] + "\n" + PromptArray["drvfetch.js_3180_2"] + "" + ServerName.value + "" + PromptArray["drvfetch.js_3180_3"] + "," + PromptArray["drvfetch.js_3180_4"] + "\n" + SoapRequestXML)
        }
		return false
	}

	var ErrorInfo = GetInfoByTagFromXml( ReturnXML, SOAP_RET_ERROR_STRING_TAG )

	if (ErrorInfo != null) 
	{
        DisplayMessage( "" + PromptArray["drvfetch.js_3189_1"] + ":\n" + ErrorInfo )
		return false
	}
	else
	{
        var UserID           = GetInfoByTagFromXml( ReturnXML, "UserID" )
        
        var UserType         = GetInfoByTagFromXml( ReturnXML, "RegType" )
        
        var DownloadPath     = GetInfoByTagFromXml( ReturnXML, "DownloadPath" )
        
        var HostSerialNumber = GetInfoByTagFromXml( ReturnXML, "HostSerialNumber" )
        
        var CaseID           = GetInfoByTagFromXml( ReturnXML, "CaseID" )

        
	}

    var MainBoardInfoXml = ""
    var ComputerMfg      = ""
    var ComputerModel    = ""
    var BaseBoardMfg     = ""
    var BaseBoardProduct = ""
    var BaseBoardVersion = ""
    var MachineDescDetail= ""
    
    oTableContainer.innerHTML+= "<center><br><table><tr onclick='ListMachineDeviceListInfo( " + UserID + ")'>"
                              + "<td width=1 valign=center><span id='" + UserID + "_OpenCloseImgTag' >"
                              + "<img src='img/tree_arrow_close.gif' BORDER=0></span></td>"
                              + "<td width=6%><img src='img/tree_icon_computer.gif' WIDTH=16 HEIGHT=16 BORDER=0></td>"
                              + "<td><span style='color: green;font-style: normal;font-family: " + PromptArray["drvfetch.js_3219_1"] + ";' "
                              + "          onMouseMove='this.style.color=\"red\";this.style.cursor=\"hand\"'"
                              + "          onMouseOut='this.style.color=\"green\";this.style.fontStyle=\"normal\";'>#" 
                              + UserID + "</span>"
                              + "</td></tr>"
                              + "<tr><td></td><td></td><td><span id='" + UserID + "_DeviceListTag'></span></td></tr></table></center>"

    ListMachineDeviceListInfo( UserID )
}
