﻿/* vehicle insert type selection scripts */
var IVSCNamingContainer, IVSCpending, IVSCPendingImg, IVSCLastChanged, IVSCHideOnResultID;
var IVSCddStatus, IVSCStatus,
    IVSCddTypeCode, IVSCTypeCode,
		IVSCddMakeDesc, IVSCMakeDesc,
		IVSCddLicMonth, IVSCLicMonth,
		IVSCddLicYear, IVSCLicYear,
		IVSCddModelDesc, IVSCModelDesc,
		IVSCddFuel, IVSCFuel,
		IVSCddBody, IVSCBody,
		IVSCddStyleCode,
		IVSCTimeoutText,
		IVSCTimeoutTime,
		IVSCTypeCount,		
		IVSCTypeList, IVSCHint;

var IVSCDefaultTimeout = 10000,
	IVSCTimerID = 0;

function IVSCInit(namingcontainer)
{
	IVSCNamingContainer = namingcontainer;

	IVSCddStatus = document.getElementById(IVSCNamingContainer + 'StatusID');
	IVSCddTypeCode = document.getElementById(IVSCNamingContainer + 'TypeCodeInput');
	IVSCddMakeDesc = document.getElementById(IVSCNamingContainer + 'MakeDesc');
	IVSCddLicMonth = document.getElementById(IVSCNamingContainer + 'LicenseMonth');
	IVSCddLicYear = document.getElementById(IVSCNamingContainer + 'LicenseYear');
	IVSCddModelDesc = document.getElementById(IVSCNamingContainer + 'ModelDesc');
	IVSCddFuel = document.getElementById(IVSCNamingContainer + 'FuelType');
	IVSCddBody = document.getElementById(IVSCNamingContainer + 'BodyDesc');
	IVSCddStyleCode = document.getElementById('StyleSelect');
	IVSCTypeList = document.getElementById('TypeList');
	IVSCHint= document.getElementById('Hint');
	IVSCTimeoutText = document.getElementById('TimeoutText');
	IVSCPendingImg = document.getElementById('PendingImg');
	IVSCTimeoutTime = IVSCDefaultTimeout;
	IVSCTypeCount = document.getElementById('TypeCount');
	
	IVSCpending = false;
}

function IVSCLogic(item)
{
	if (IVSCpending) return false;
	IVSCLastChanged = item;
	IVSCTimeoutText.style.visibility = 'hidden';

	if (item == 'stylecode') {
	  IVSCddLicMonth.disabled = IVSCddLicYear.disabled = IVSCddMakeDesc.disabled = IVSCddFuel.disabled = IVSCddBody.disabled = IVSCddModelDesc.disabled = 'disabled';
	  IVSCddLicMonth.selectedIndex = IVSCddLicYear.selectedIndex = 0;
	  IVSCChangedFill(IVSCddMakeDesc, '<Makes></Makes>', 'Makes');
	  IVSCChangedFill(IVSCddModelDesc, '<Models></Models>', 'Models');
	  IVSCddFuel.selectedIndex = 0;
	  IVSCddBody.selectedIndex = 0;
	  IVSCTypeList.innerHTML = '';
	  IVSCMakeDesc = '';
	  IVSCModelDesc = '';
	  IVSCFuel = '';
	  if (IVSCddBody.selectedIndex != -1) IVSCBody = '';
	  if (IVSCHint != null) IVSCHint.className = '';
	} else if (item == 'typecode') {
	  IVSCddMakeDesc.disabled = IVSCddFuel.disabled = IVSCddBody.disabled = IVSCddModelDesc.disabled = 'disabled';
//	  IVSCddLicMonth.selectedIndex = IVSCddLicYear.selectedIndex = 0;
	  IVSCChangedFill(IVSCddMakeDesc, '<Makes></Makes>', 'Makes');
	  IVSCChangedFill(IVSCddModelDesc, '<Models></Models>', 'Models');
	  IVSCddFuel.selectedIndex = 0;
	  IVSCddBody.selectedIndex = 0;
	  IVSCTypeList.innerHTML = '';
	  IVSCMakeDesc = '';
	  IVSCModelDesc = '';
	  IVSCFuel = '';
	  if (IVSCddBody.selectedIndex != -1) IVSCBody = '';
	  if (IVSCHint != null) IVSCHint.className = '';
	  IVSCTypeCode = IVSCddTypeCode.value;
	} else {
	  IVSCStatus = IVSCddStatus.options[IVSCddStatus.selectedIndex].value;
	  // if newcar unselect and disable license
	  if (IVSCStatus == '2') {
	    IVSCddLicMonth.selectedIndex = IVSCddLicYear.selectedIndex = 0;
	    IVSCddLicMonth.disabled = IVSCddLicYear.disabled = 'disabled';
	  } else {
	    IVSCddLicMonth.disabled = IVSCddLicYear.disabled = '';
	  }
	  // if status changed, disable and clear make, model, fuel, body, types
	  if (item == 'status') {
	    IVSCddMakeDesc.disabled = IVSCddFuel.disabled = IVSCddBody.disabled = IVSCddModelDesc.disabled = 'disabled';
	    IVSCChangedFill(IVSCddMakeDesc, '<Makes></Makes>', 'Makes');
	    IVSCChangedFill(IVSCddModelDesc, '<Models></Models>', 'Models');
	    IVSCddFuel.selectedIndex = 0;
	    IVSCddBody.selectedIndex = 0;
	    IVSCTypeList.innerHTML = '';
	    if (IVSCHint != null) IVSCHint.className = '';
	  }

	  // if make changed, clear model
	  if (item == 'make') {
	    IVSCChangedFill(IVSCddModelDesc, '<Models></Models>', 'Models');
	    IVSCTypeList.innerHTML = '';
	    if (IVSCHint != null) IVSCHint.className = '';
	  }

	  // if model changed, clear fuel
	  if (item == 'model') {
	    IVSCChangedFill(IVSCddFuel, '<Fuels></Fuels>', 'Fuels');
	    IVSCTypeList.innerHTML = '';
	    if (IVSCHint != null) IVSCHint.className = '';
	  }

	  IVSCLicMonth = IVSCddLicMonth.options[IVSCddLicMonth.selectedIndex].value;
	  IVSCLicYear = IVSCddLicYear.options[IVSCddLicYear.selectedIndex].value;

	  // focus on non callback
	  if ((item == 'status') && (!IVSCddLicMonth.disabled)) IVSCddLicMonth.focus();
	  if (item == 'licmonth') IVSCddLicYear.focus()

	  // if status requires license and this is not complete, disable, clear make and model and return
	  if ((IVSCStatus != '2') && ((IVSCLicMonth == '') || (IVSCLicYear == ''))) {
	    IVSCddMakeDesc.disabled = IVSCddModelDesc.disabled = 'disabled';
	    IVSCChangedFill(IVSCddMakeDesc, '<Makes></Makes>', 'Makes');
	    IVSCChangedFill(IVSCddModelDesc, '<Models></Models>', 'Models');
	    IVSCTypeList.innerHTML = '';
	    if (IVSCHint != null) IVSCHint.className = '';
	    return false;
	  }

	  IVSCMakeDesc = IVSCddMakeDesc.options[IVSCddMakeDesc.selectedIndex].value;
	  IVSCModelDesc = IVSCddModelDesc.options[IVSCddModelDesc.selectedIndex].value;
	  IVSCFuel = IVSCddFuel.options[IVSCddFuel.selectedIndex].value;
	  if (IVSCddBody.selectedIndex != -1) IVSCBody = IVSCddBody.options[IVSCddBody.selectedIndex].value;
	}
	
	// disable all controls while fetching data
	IVSCddStatus.disabled = IVSCddMakeDesc.disabled = IVSCddLicMonth.disabled = IVSCddLicYear.disabled = IVSCddModelDesc.disabled = IVSCddFuel.disabled = IVSCddBody.disabled = 'disabled';

	IVSCpending = true;
	IVSCPendingImg.style.visibility='visible';
	IVSCTimerID = window.setTimeout("IVSCTimeoutReceived('timeout')",IVSCTimeoutTime);

	return true;
}
		
function IVSCChangedReceiver(returnValue, context) 
{
	if (!IVSCpending) return;
	if (IVSCTimerID != 0) {
		window.clearTimeout(IVSCTimerID);
		IVSCTimerID = 0;
	}

  // replace and refill controls
	if (returnValue.indexOf('<StyleCode>') >= 0) ReplaceDiv(IVSCddStyleCode, returnValue, 'StyleCode');
	if (returnValue.indexOf('<Makes>') >= 0) IVSCChangedFill(IVSCddMakeDesc, returnValue, 'Makes', IVSCMakeDesc);
  if (returnValue.indexOf('<Models>') >= 0) IVSCChangedFill(IVSCddModelDesc,returnValue,'Models',IVSCModelDesc);
  if (returnValue.indexOf('<Fuels>') >= 0) IVSCChangedFill(IVSCddFuel, returnValue, 'Fuels', IVSCFuel);
  IVSCChangedFill(IVSCddBody,returnValue,'Bodies',IVSCBody);
  ReplaceDiv(IVSCTypeCount, returnValue, 'TypeCount');
  if (ReplaceDiv(IVSCTypeList, returnValue, 'Types'))
  {
 	  if (IVSCHint != null) IVSCHint.className = 'SkipLink';
 	}
  
  // set behaviour (enabled, disabled) of the controls
 	IVSCddStatus.disabled = '';
 	if (IVSCStatus == '2') {
    IVSCddMakeDesc.disabled='';IVSCddLicMonth.selectedIndex=0;IVSCddLicYear.selectedIndex=0;IVSCddLicMonth.disabled='disabled';IVSCddLicYear.disabled='disabled';
  } else { 
		IVSCddLicMonth.disabled='';IVSCddLicYear.disabled='';
		if ((IVSCddLicMonth.selectedIndex > 0) && (IVSCddLicYear.selectedIndex > 0)) {
			IVSCddMakeDesc.disabled=''}else{IVSCddMakeDesc.disabled='disabled';
		}
	}
 	
  if (IVSCMakeDesc != '') {
		IVSCddModelDesc.disabled='';
	} else {
		IVSCddModelDesc.disabled='disabled';IVSCddFuel.disabled='disabled';IVSCddBody.disabled='disabled'
	}
  if (IVSCModelDesc != '') {
		IVSCddFuel.disabled='';IVSCddBody.disabled=''
	} else {
		IVSCddFuel.disabled='disabled';IVSCddBody.disabled='disabled'
	}
	
	// focus on callback
	if ((context == 'status') && (IVSCStatus == '2')) IVSCddMakeDesc.focus();
	if (context == 'licyear') IVSCddMakeDesc.focus();
	if (context == 'make') IVSCddModelDesc.focus();
	if (context == 'model') IVSCddFuel.focus();
	if (context == 'fuel') IVSCddBody.focus();

  IVSCpending = false;
  IVSCPendingImg.style.visibility = 'hidden';
  if (IVSCHideOnResultID != undefined) IVSCHideOnResultID.style.visibility = 'hidden';
}

function IVSCChangedFill(item, values, tag, sel) 
{
  for (i = item.options.length - 1; i >= 1; i--) item.options[i] = null;
  b = values.indexOf('<'+tag+'>', 0) + 2 + tag.length;
  e = values.indexOf('</'+tag+'>', b);
  for (i=1;b<e;i++) {
		 j = values.indexOf('|', b);
		 s = values.substr(b, j - b);
		 b = j + 1;
		 o = new Option(s,s,false,false);
		 item.options[i] = o;
		 if (s == sel) item.selectedIndex = i;
  }
}

function ReplaceDiv(item, values, tag)
{
  b = values.indexOf('<'+tag+'>', 0) + 2 + tag.length;
  e = values.indexOf('</'+tag+'>', b);
	if (b<=e) {
		item.innerHTML = values.substr(b, e - b);
		return true;
	}
	return false;
}

function IVSCTimeoutReceived(context)
{
	if (context == 'timeout') {
		if (IVSCpending) {
			// do as if received an empty result
			IVSCChangedReceiver('', 'context');
			IVSCTimeoutText.style.visibility = 'visible';
		} else {
			IVSCTimeoutTime = IVSCDefaultTimeout;
		}
	}
}

function IVSCRetry()
{
	IVSCTimeoutTime = 2 * IVSCTimeoutTime;
	IVSCChanged(IVSCLastChanged);
}