function fnInitialize()
{
	vmpLoaded = 1;
	fnPlaceObjects();
}

function resetColors()
{
// Base Color COnfiguration
	// Embroidery
		changeColor('Silver', 'Emb Yoke Base');
		changeColor('Smoke', 'Emb Yoke R');
		changeColor('Black', 'Emb Yoke Outline');
		changeColor('Silver', 'Emb Left Sidebody Base');
		changeColor('Gold', 'Emb Left Sidebody R');
		changeColor('Smoke', 'Emb Left Sidebody Outline');
		changeColor('Silver', 'Emb Right Sidebody Base');
		changeColor('Gold', 'Emb Right Sidebody R');
		changeColor('Smoke', 'Emb Right Sidebody Outline');
		
	// Materials
		changeColor('Gold', 'Backpad');
		changeColor('Black', 'BOC Pouch');
		changeColor('Gold', 'Cutaway');
		changeColor('Black', 'Hackey');
		changeColor('Black', 'Legpads');
		changeColor('Black', 'Panel 1');
    changeColor('Black', 'Panel 1a');
    changeColor('Black', 'Panel 1b');
		changeColor('Smoke', 'Panel 2');
		changeColor('Black', 'Panel 3a');
		changeColor('Black', 'Panel 3b');
		changeColor('Gold', 'Panel 4');
    changeColor('Black', 'Panel 5');
    changeColor('Gold', 'Panel S1');
    changeColor('Gold', 'Panel S2');
		changeColor('Black', 'Pinstripe 1a');
		changeColor('Black', 'Pinstripe 1b');
		changeColor('Gold', 'Pinstripe S1');
		changeColor('Gold', 'Pinstripe S2');
		changeColor('Gold', 'Riser Color');
		changeColor('Smoke', 'Trim Tape');
		changeColor('Smoke', 'Harness Color');
}

function changeColor(sColor, sPart)
{
	var arColor = new Array();
	var arMat = new Array();
	
	switch(sColor.toLowerCase())
	{
		case "black":
		// Define Color
			arColor[0] = 0;
			arColor[1] = 0;
			arColor[2] = 0;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "burgundy":
		// Define Color
			arColor[0] = 0.5976;
			arColor[1] = 0.1992;
			arColor[2] = 0.3984;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "forest green":
		// Define Color
			arColor[0] = 0;
			arColor[1] = 0.1992;
			arColor[2] = 0;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "gold":
		// Define Color
			arColor[0] = 1;
			arColor[1] = 0.7968;
			arColor[2] = 0;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "jade":
		// Define Color
			arColor[0] = 0.1992;
			arColor[1] = 0.5976;
			arColor[2] = 0.3984;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "kelly green":
		// Define Color
			arColor[0] = 0;
			arColor[1] = 0.5;
			arColor[2] = 0;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "light blue":
		// Define Color
			arColor[0] = 0.5976;
			arColor[1] = 0.7968;
			arColor[2] = 1;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "magenta":
		// Define Color
			arColor[0] = 1;
			arColor[1] = 0;
			arColor[2] = 1;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "navy":
		// Define Color
			arColor[0] = 0;
			arColor[1] = 0;
			arColor[2] = 0.5;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "neon blue":
		// Define Color
			arColor[0] = 0.1992;
			arColor[1] = 0.3984;
			arColor[2] = 1;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "neon green":
		// Define Color
			arColor[0] = 0.5976;
			arColor[1] = 0.7968;
			arColor[2] = 0;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "neon orange":
		// Define Color
			arColor[0] = 1;
			arColor[1] = 0.5976;
			arColor[2] = 0;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "neon pink":
		// Define Color
			arColor[0] = 1;
			arColor[1] = 0;
			arColor[2] = 1;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "neon purple":
		// Define Color
			arColor[0] = 0.5;
			arColor[1] = 0;
			arColor[2] = 0.5;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "neon yellow":
		// Define Color
			arColor[0] = 1;
			arColor[1] = 1;
			arColor[2] = 0;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "orange":
		// Define Color
			arColor[0] = 1;
			arColor[1] = 0.3984;
			arColor[2] = 0;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "purple":
		// Define Color
			arColor[0] = 0.7968;
			arColor[1] = 0.5976;
			arColor[2] = 1;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "red":
		// Define Color
			arColor[0] = 1;
			arColor[1] = 0;
			arColor[2] = 0;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "royal":
		// Define Color
			arColor[0] = 0;
			arColor[1] = 0;
			arColor[2] = 1;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "silver":
		// Define Color
			arColor[0] = 0.75;
			arColor[1] = 0.75;
			arColor[2] = 0.75;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "smoke":
		// Define Color
			arColor[0] = 0.5;
			arColor[1] = 0.5;
			arColor[2] = 0.5;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "white":
		// Define Color
			arColor[0] = 1;
			arColor[1] = 1;
			arColor[2] = 1;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
		case "yellow":
		// Define Color
			arColor[0] = 1;
			arColor[1] = 1;
			arColor[2] = 0.5976;
			
		// Get Part Material Name
			arMat = getMaterialName(sPart);
			
		// Make Changes to Model
			appendModel(arColor, arMat);
			break;
	}
}

function getMaterialName(sPart)
{
	var arMat = new Array();
	
	switch(sPart.toLowerCase())
	{
	// Embroidery
		case "emb yoke base":
		// Define Material Names
			arMat[0] = "output_MATERIAL_11";
		
		// Return Array of Materials
			return arMat;
			break;
		case "emb yoke outline":
		// Define Material Names
			arMat[0] = "output_MATERIAL_12";
		
		// Return Array of Materials
			return arMat;
			break;
		case "emb yoke r":
		// Define Material Names
			arMat[0] = "output_MATERIAL_13";
		
		// Return Array of Materials
			return arMat;
			break;
		case "emb left sidebody base":
		// Define Material Names
			arMat[0] = "output_MATERIAL_5";
		
		// Return Array of Materials
			return arMat;
			break;
		case "emb left sidebody outline":
		// Define Material Names
			arMat[0] = "output_MATERIAL_6";
		
		// Return Array of Materials
			return arMat;
			break;
		case "emb left sidebody r":
		// Define Material Names
			arMat[0] = "output_MATERIAL_7";
		
		// Return Array of Materials
			return arMat;
			break;
		case "emb right sidebody base":
		// Define Material Names
			arMat[0] = "output_MATERIAL_8";
		
		// Return Array of Materials
			return arMat;
			break;
		case "emb right sidebody outline":
		// Define Material Names
			arMat[0] = "output_MATERIAL_9";
		
		// Return Array of Materials
			return arMat;
			break;
		case "emb right sidebody r":
		// Define Material Names
			arMat[0] = "output_MATERIAL_10";
		
		// Return Array of Materials
			return arMat;
			break;
	
	// Materials
		case "backpad":
		// Define Material Names
			arMat[0] = "output_MATERIAL_1";
			arMat[1] = "output_MATERIAL_15";
		
		// Return Array of Materials
			return arMat;
			break;
		case "boc pouch":
		// Define Material Names
			arMat[0] = "output_MATERIAL_0";
      arMat[1] = "output_MATERIAL_3";
		
		// Return Array of Materials
			return arMat;
			break;
		case "cutaway":
		// Define Material Names
			arMat[0] = "output_MATERIAL_4";
		
		// Return Array of Materials
			return arMat;
			break;
		case "hackey":
		// Define Material Names
			arMat[0] = "output_MATERIAL_14";
		
		// Return Array of Materials
			return arMat;
			break;
		case "legpads":
		// Define Material Names
			arMat[0] = "output_MATERIAL_16";
		
		// Return Array of Materials
			return arMat;
			break;
    case "panel 1":
    // Define Material Names
      arMat[0] = "output_MATERIAL_20";
    
    // Return Array of Materials
      return arMat;
      break;
    case "panel 1a":
    // Define Material Names
      arMat[0] = "output_MATERIAL_18";
    
    // Return Array of Materials
      return arMat;
      break;
    case "panel 1b":
    // Define Material Names
      arMat[0] = "output_MATERIAL_19";
    
    // Return Array of Materials
      return arMat;
      break;
		case "panel 2":
		// Define Material Names
			arMat[0] = "output_MATERIAL_21";
		
		// Return Array of Materials
			return arMat;
			break;
		case "panel 3a":
		// Define Material Names
			arMat[0] = "output_MATERIAL_22";
		
		// Return Array of Materials
			return arMat;
			break;
		case "panel 3b":
		// Define Material Names
			arMat[0] = "output_MATERIAL_23";
		
		// Return Array of Materials
			return arMat;
			break;
    case "panel 4":
    // Define Material Names
      arMat[0] = "output_MATERIAL_24";
    
    // Return Array of Materials
      return arMat;
      break;
    case "panel 5":
    // Define Material Names
      arMat[0] = "output_MATERIAL_25";
    
    // Return Array of Materials
      return arMat;
      break;
		case "panel s1":
		// Define Material Names
			arMat[0] = "output_MATERIAL_26";
		
		// Return Array of Materials
			return arMat;
			break;
		case "panel s2":
		// Define Material Names
			arMat[0] = "output_MATERIAL_27";
		
		// Return Array of Materials
			return arMat;
			break;
		case "pinstripe 1a":
		// Define Material Names
			arMat[0] = "output_MATERIAL_28";
		
		// Return Array of Materials
			return arMat;
			break;
		case "pinstripe 1b":
		// Define Material Names
			arMat[0] = "output_MATERIAL_29";
		
		// Return Array of Materials
			return arMat;
			break;
		case "pinstripe s1":
		// Define Material Names
			arMat[0] = "output_MATERIAL_30";
		
		// Return Array of Materials
			return arMat;
			break;
		case "pinstripe s2":
		// Define Material Names
			arMat[0] = "output_MATERIAL_31";
		
		// Return Array of Materials
			return arMat;
			break;
		case "riser color":
		// Define Material Names
			arMat[0] = "output_MATERIAL_32";
		
		// Return Array of Materials
			return arMat;
			break;
		case "trim tape":
		// Define Material Names
			arMat[0] = "output_MATERIAL_2";
		
		// Return Array of Materials
			return arMat;
			break;
		case "harness color":
		// Define Material Names
			arMat[0] = "output_MATERIAL_33";
		
		// Return Array of Materials
			return arMat;
			break;
	}
}

function appendModel(arColor, arMat)
{
	for(i=0; i<arMat.length; i++)
	{
		if(loadTexture)
		{
			vmp.SetProperty('MTSMaterial.' + arMat[i], 'rmod', '12', 'mts_int');
		} else 
		{
			vmp.SetProperty('MTSMaterial.' + arMat[i], 'rmod', '10', 'mts_int');

		}
		vmp.SetProperty('MTSMaterial.' + arMat[i], 'difc', arColor[0] + ' ' + arColor[1] + ' ' + arColor[2]);
		vmp.Render();
	}
}

function fnHyperview(){
	if(hotKeysEnabled == true){
		var hyperView = vmp.GetProperty('MTSBaseComponent','smod','mts_int');
		
		if(hyperView == 1) {
			vmp.SetProperty('MTSBaseComponent','smod','0','mts_int');
			//vmp.SetProperty("hypv_widget_hyperview", "visb", "0");
			//vmp.SetProperty("hypv_btn_Hyperview", "visb", "0");
			
			//vmp.SetProperty("btn_Hyperview", "visb", "1");
			//vmp.SetProperty("btn_PartyStripes", "visb", "1");
			//vmp.SetProperty("widget_LegendSmall", "visb", "1");
		} else {
			//vmp.SetProperty("btn_Hyperview", "visb", "0");
			//vmp.SetProperty("btn_PartyStripes", "visb", "0");
			//vmp.SetProperty("widget_LegendSmall", "visb", "0");
			vmp.SetProperty('MTSBaseComponent','smod','1','mts_int');
			//vmp.SetProperty("hypv_widget_hyperview", "visb", "1");
			//vmp.SetProperty("hypv_btn_Hyperview", "visb", "1");
		}
	}
}