/**
 * 
 * Copyright (c) 2009, NVIDIA Corporation.  All rights reserved.
 *
 * THE INFORMATION CONTAINED HEREIN IS PROPRIETARY AND CONFIDENTIAL TO
 * NVIDIA, CORPORATION.  USE, REPRODUCTION OR DISCLOSURE TO ANY THIRD PARTY
 * IS SUBJECT TO WRITTEN PRE-APPROVAL BY NVIDIA, CORPORATION.
 * 
 * @author shaworth
 */

Prototype.Scan = Class.create({
	
	initialize: function(options) {
		this.scanOptions = options;
		this.scanSHIM;
		this.indicator;
		this.scanTool;
		this.scanParams = new Array();
		this.scanComplete = false;
		this.isNforce = false;
	},
	
	startScan: function() {
		setTimeout("scanner.checkProgress()", 2000);
	},
	
	checkProgress: function() {
		this.scanTool = $('scanApplet');
		if (this.scanTool.scanComplete == true) {
			this.scanSHIM = this.scanTool.getHardwareObject();
			if (this.isNforce) {
				this.processBetaNforceScan();
			} else {
				this.processBetaScan();
			}
		} else {
			this.startScan();
		}
	},
	
	processBetaNforceScan: function() {
		var os64 = this.scanSHIM.os64bit == "false" ? "0" : "1";
		var url = "processScannForce.aspx?";
		url += "status=" + document.Form1.hidStatus.value;
		url += "&brd=" + this.scanSHIM.motherboardsouthbridge + ' / ' + this.scanSHIM.motherboardnorthbridge;
		url += "&dv=" + this.scanSHIM.driverversion1;
		url += "&osv=" + this.scanSHIM.osversion; //+ '.' + this.scanSHIM.osbuildnumber;
		url += "&os64=" + os64;
		url += "&lid=" + this.scanSHIM.language;
		url += "&did=" + this.scanSHIM.motherboardchipsetuid;
		url += "&lang=" + $('hidPageLanguage').value;
		new Ajax.Request(url, 
			{
				method: 'get', 
				onComplete: function(response)
				{
					$('tblStartScan').style.display = "none";
					$('tdResults').innerHTML += response.responseText;
					$('tblScanResults').style.display = "";
					$('betaScanMessage').innerHTML = '<TABLE cellSpacing=0 cellPadding=4 width="100%" align=center border=0><TBODY><TR><TD id=tdMessage><SPAN id=lblMessage style="FONT-WEIGHT: bold; COLOR: red"></SPAN><SPAN id=lblSubMessage><B>The NVIDIA Smart Scan tool is a BETA release. We welcome your feedback <A href="http://surveys.nvidia.com/index.jsp?pi=6812b56466e433dbc58fc6623a9c18cb" target=_blank>here</A>.</B></SPAN>'
				}
			}
		);
	},
	
	processBetaScan: function() {
		var os64 = this.scanSHIM.os64bit == "false" ? "No" : "Yes";
		var sli = (this.scanSHIM.slicableinstalled1 == 0 || this.scanSHIM.slicableinstalled1 == null) ? "No" : "Yes";
		var url = "processScan.aspx";
		url += "?process=1";
		url += "&lang=" + $('hidPageLanguage').value;
		url += "&fwv=" + this.scanSHIM.driverversion1;
		url += "&osv=" + this.scanSHIM.osversion + '.' + this.scanSHIM.osbuildnumber;
		url += "&os64=" + os64;
		url += "&lid=" + this.scanSHIM.language;
		url += "&gpu1n=" + this.scanSHIM.videoname1;
		url += "&gpu1devid=" + this.scanSHIM.deviceid1;
		url += "&gpu1vid=" + this.scanSHIM.vendorid1;
		url += "&gpu1svid=" + this.scanSHIM.subvendorid1;
		url += "&gpu1ssid=" + this.scanSHIM.subsystemid1;
		url += "&gpu2n=" + (this.scanSHIM.videoname2 != null) ? this.scanSHIM.videoname2 : "";
		url += "&gpu2devid=" + (this.scanSHIM.deviceid2 != null) ? this.scanSHIM.deviceid2 : "";
		url += "&sli=" + sli;
		url += "&islp=" + "No"; // Need to look at this one, for beta it's ok	
		new Ajax.Request(url,
			{
				method: 'get', 
				onComplete: function(response)
				{
					$('tblStartScan').style.display = "none";
					$('tdResults').innerHTML += response.responseText;
					$('tblScanResults').style.display = "";
					$('betaScanMessage').innerHTML = '<TABLE cellSpacing=0 cellPadding=4 width="100%" align=center border=0><TBODY><TR><TD id=tdMessage><SPAN id=lblMessage style="FONT-WEIGHT: bold; COLOR: red"></SPAN><SPAN id=lblSubMessage><B>The NVIDIA Smart Scan tool is a BETA release. We welcome your feedback <A href="http://surveys.nvidia.com/index.jsp?pi=6812b56466e433dbc58fc6623a9c18cb" target=_blank>here</A>.</B></SPAN>'
				}
			}
		);
	},
	
	deployApplet: function() {
		var attributes;
		var parameters;
		var version;
		var appletCode;
		attributes = {
			id: 'scanApplet',
			style: 'height: 1px; width: 1px;',
            code:'ScanApplet.class',
            archive:'resources/bin/NVScan.jar'
		};
		version = '1.6';
		appletCode = deployJava.runApplet(attributes, parameters, version)
		$('scanContainer').innerHTML = appletCode;
		this.startScan();
	},
	
	getQueryParameter: function(variable) {
		var query = window.location.search.substring(1);
		var queryObject = $H(query.toQueryParams());
		var returnVar = queryObject.get(variable);
		if (returnVar != undefined)
			return returnVar;
		else
			return '';
	}
});
