// support/js/driver.js

function enableAccept(obj){
	if(obj.checked){
		$('acceptEula-btn').disabled = false;
	}else{
		$('acceptEula-btn').disabled = true;
	}
}
function acceptEula(){
	var itemid = $('item_id').value;
	new Ajax.Request(
		'/driver/ajax/', {
			method: 'get',
			parameters: Form.serialize('eulaForm'),
			onSuccess: function(transport){
				var resp = transport.responseText.evalJSON();
				if(resp[0]==1){
					downloadFile(itemid);
				}
			},
			onFailure: function() {
				alert("There was an error with the connection(0)");
			}
  	}
  );
}

function loadVersion(){
	
	// clear opsys & driverContainer
	$('opsys').disabled = true;
	$('opsys').update(null);
	$('driverContainer').hide();
	
	var prod = $('product').value;
	params = 'func=get_version&product_id='+prod;
	new Ajax.Request(
		'/driver/ajax/', {
			method: 'get',
			parameters: params,
			onSuccess: loadVersionHandler,
			onFailure: function() {
				alert("There was an error with the connection(1)");
			}
  	}
  );
}
function loadVersionHandler(transport){
	var version_options = transport.responseText;
	if(version_options.length){
		$('version').disabled = false;
		$('version').update(version_options);
	}else{
		$('version').disabled = true;
		$('version').update(null);
	}
}

function loadOpsys(){
	
	// clear driverContainer
	$('driverContainer').hide();
	
	var bucket = $('version').value;
	params = 'func=get_opsys&bucket_id='+bucket;
	new Ajax.Request(
		'/driver/ajax/', {
			method: 'get',
			parameters: params,
			onSuccess: loadOpsysHandler,
			onFailure: function() {
				alert("There was an error with the connection(2)");
			}
  	}
  );
}
function loadOpsysHandler(transport){
	var opsys_options = transport.responseText;
	if(opsys_options.length){
		$('opsys').disabled = false;
		$('opsys').update(opsys_options);
	}else{
		$('opsys').disabled = true;
		$('opsys').update(null);
	}
}

function loadDriver(){
	var opsys = $('opsys').value;
	var bucket = $('version').value;
	params = 'func=get_driver&bucket_id='+bucket+'&opsys='+opsys;
	new Ajax.Request(
		'/driver/ajax/', {
			method: 'get',
			parameters: params,
			onSuccess: loadDriverHandler,
			onFailure: function() {
				alert("There was an error with the connection(3)");
			}
  	}
  );
}
function loadDriverHandler(transport){
	var driver_options = transport.responseText;
	if(driver_options.length){
		$('driverContainer').show();
		$('driverContainer').update(driver_options);
	}else{
		$('driverContainer').hide();
		$('driverContainer').update(null);
	}
}

function downloadClick(event) {
  var element = event.element();
  var itemid = element.target;
  Event.stop(event);
  downloadFile(itemid);
}

function downloadFile(itemid){
	params = 'func=download_file&item_id='+itemid;
	new Ajax.Request(
		'/driver/ajax/', {
			method: 'get',
			parameters: params,
			onSuccess: function(transport){
				var resp = transport.responseText.evalJSON();
				if(resp[0]==1){
					loadDriver();
					$('dload').src= '/driver/download/?f='+resp[1];
				}else{
					$('driverContainer').update(resp[1]);
				}
			},
			onFailure: function() {
				alert("There was an error with the connection(4)");
			}
  	}
  );
}

function agreeWarning(){	// handle warningForm eula agreement
	var itemid = $('item_id').value;
	new Ajax.Request(
		'/driver/ajax/', {
			method: 'get',
			parameters: Form.serialize('warningForm'), // make sure form includes: func=agree_warning & item_id
			onSuccess: function(transport){
				var resp = transport.responseText.evalJSON();
				if(resp[0]==1){
					loadDriver();
					$('dload').src= '/driver/download/?f='+resp[1];
				}else{
					downloadFile(itemid);
				}
			},
			onFailure: function() {
				alert("There was an error with the connection(5)");
			}
  	}
  );
}

function resetOptions(){
	$('product').value='';
	$('version').disabled = true;
	$('version').update(null);
	$('opsys').disabled = true;
	$('opsys').update(null);
	$('driverContainer').hide();
	$('driverContainer').update(null);
}