var txtVinSaab,txtVinSaabUpper;

function Decode ()
	{
		txtVinSaab=document.frmDecode.txtVin_Input.value;
		txtVinSaabUpper=txtVinSaab.toUpperCase();	
				
		if  (txtVinSaabUpper.length < 17)
			     window.alert ("Please enter a correct number consists of  17 digits."),0,"Error";
		else
			 Vin_Decode()  
	}

function Vin_Decode()
	{
	var Manufacturer;
	var Product_Line; 
	var Body_Type;
	var Gear_Box;
	var Engine_Type;
	var Model_Year;
	var Assembly_Plant; 
	var Serial_Number; 
	var Result;  
	var Control_Symbol;
	var Airbag;	 		
		
		Manufacturer = txtVinSaabUpper.substr (0, 3);
		Product_Line = txtVinSaabUpper.substr (3, 1);
		Airbag = txtVinSaabUpper.substr (4, 1);
		Body_Type = txtVinSaabUpper.substr (5, 1);
		Gear_Box = txtVinSaabUpper.substr (6, 1);
		Engine_Type = txtVinSaabUpper.substr (7, 1);
		Model_Year = txtVinSaabUpper.substr (9, 1);
		Assembly_Plant =txtVinSaabUpper.substr (10, 1);
		Serial_Number = txtVinSaabUpper.substr (11, 6);
		Control_Symbol=txtVinSaabUpper.substr (8, 1);
		
  		txtVin= txtVinSaabUpper;
 		txtAirbag="none";	
		
 	switch (Manufacturer) 
 		{
   		case "YS3": 
			txtManufacturer="Saab Automobile AB";
   			break;
   		case "JF4":
   			txtManufacturer="Japan, Fuji Heavy Industries, Saab Passenger Car";
   			break;
   		case "5S3":
   			txtManufacturer="US Built, Saab";
   			break;
   		default: 
   			txtManufacturer="VIN incorrect!";     
		} 	 
	
	switch (Product_Line)
   		{
		case "A":
    	    txtProduct_Line="SAAB 900";
    		break;
    	case "B":
       		txtProduct_Line="SAAB 99/90";
    		break;
    	case "C":
       		txtProduct_Line="SAAB 9000";
    		break;
    	case "D":
       		if (Model_Year=="X"||Model_Year=="Y"||Model_Year=="0"||Model_Year=="1"||Model_Year=="2"||Model_Year=="3"||Model_Year=="4"||Model_Year=="5"||Model_Year=="6"||Model_Year=="7"||Model_Year=="8"||Model_Year=="9"||Model_Year=="A")
       			txtProduct_Line="SAAB 9-3";
       		else
       			txtProduct_Line="SAAB 900 2nd generation";
	   		break;
	   	case "E":
       		txtProduct_Line="SAAB 9-5";
       		break;
    	case "F":
    		txtProduct_Line="SAAB 9-3 Sport Sedan";
    		break;
    	case "G":
    		txtProduct_Line="SAAB 9-2X";
    		break;
    	default:
       		txtProduct_Line="VIN incorrect!"; 
		}
	
	if (Model_Year=="S"||Model_Year=="T"||Model_Year=="V"||Model_Year=="W"||Model_Year=="X"||Model_Year=="Y"||Model_Year=="0"||Model_Year=="1"||Model_Year=="2"||Model_Year=="3"||Model_Year=="4"||Model_Year=="5"||Model_Year=="6"||Model_Year=="7"||Model_Year=="8"||Model_Year=="9"||Model_Year=="A")
			switch (Airbag)
				{
				case "A":
					switch (Product_Line)
						{
						case "E"://9-5
							txtAirbag="Driver's airbag, 9-5 Linear";	
							break;
					default:
					txtAirbag="Model range I, Driver's airbag";	
						}
				break;
				case "B":
					switch (Product_Line)
						{
						case "E"://9-5
							txtAirbag="Driver's and passenger airbag, 9-5 Linear";	
							break;
						case "F"://9-3 sedan
							txtAirbag="9-3 Linear";
							break;
					default:
					txtAirbag="Model range I, Driver's and passenger airbag";	
						}
				break;
				case "C":
					switch (Product_Line)
						{
						case "C":// 9000
							if (Body_Type=="4")
								txtAirbag="Model range II, Driver's airbag, 9000CD";	
							else
								txtAirbag="Model range II, Driver's airbag, 9000CS";
							break;
						case "E":// 9-5
							txtAirbag="Driver's airbag, 9-5 Arc";	
							break;
						default:// 900
							txtAirbag="Model range II, Driver's airbag, 900CS";
						}
				break;
				case "D":
					switch (Product_Line)
						{
						case "C":// 9000
							if (Body_Type=="4")
								txtAirbag="Model range II, Driver's and passenger airbag, 9000CD";	
							else
								txtAirbag="Model range II, Driver's and passenger airbag, 9000CS";
							break;
						case "D":// 9-3
							txtAirbag="w/Dual Airbags, 9-3";
							break;
						case "E":// 9-5
							if (Model_Year=="2"||Model_Year=="3"||Model_Year=="4")
								txtAirbag="w/Dual Airbags, 9-5 Arc";
							else	
								txtAirbag="w/Dual Airbags, 9-5";
							break;
						case "F"://9-3 sedan
							txtAirbag="9-3 Arc";
							break;
						default:// 900
							txtAirbag="Model range II, Driver's and passenger airbag, 900CS or 9-3";
						}
				break;
				case "E":
					switch (Product_Line)
						{
						case "C":// 9000
							if (Body_Type=="4")
								txtAirbag="Model range III, Driver's airbag, 9000CDE";	
							else
								txtAirbag="Model range III, Driver's airbag, 9000CSE";
							break;
						case "E":// 9-5
							txtAirbag="Driver's airbag, 9-5 Vector";
							break;
						default:// 900
							txtAirbag="Model range III, Driver's airbag, 900SE";
						}
				break;
				case "F":
					switch (Product_Line)
						{
						case "C":// 9000
							if (Body_Type=="4")
								txtAirbag="Model range III, Driver's and passenger airbag, 9000CDE";	
							else
								txtAirbag="Model range III, Driver's and passenger airbag, 9000CSE";
							break;
						case "D":// 9-3
							txtAirbag="Dual Airbags, 9-3SE";
							break;
						case "E":// 9-5
							if (Model_Year=="2"||Model_Year=="3"||Model_Year=="4")	
								txtAirbag="Dual Airbags, 9-5 Vector";
							else
								txtAirbag="Dual Airbags, 9-5 SE";
							break;
						case "F"://9-3 sedan
							txtAirbag="9-3 Vector";
							break;
						default:// 900
							txtAirbag="Model range III, Driver's and passenger airbag, 900SE or 9-3";
						}
					break;
				case "G":
						switch (Product_Line)
						{
						case "E":// 9-5
							txtAirbag="Driver's airbag, 9-5 AERO";
							break;
						default:
							txtAirbag="Model range IV, Driver's airbag, AERO";	
						}				
					break;
				case "H":
						switch (Product_Line)
						{
						case "E":// 9-5
							txtAirbag="Driver's and passenger airbag, 9-5 Aero";
							break;
						case "F"://9-3 sedan
							txtAirbag="9-3 Aero";
							break;
						default:
							txtAirbag="Model range IV, Driver's and passenger airbag, AERO";	
						}
					break;
				case "K":
					txtAirbag="Model range V, Driver's airbag, GRIFFIN";	
					break;
				case "M":
					txtAirbag="Model range V, Driver's and passenger airbag, GRIFFIN";	
					break;
				case "P":
					txtAirbag="Viggen";	
					break;

				}
	
	switch (Body_Type)
		{
    	case "2":
			txtBody_Type="2-door Sedan";
    		break;
    	case "3":
			txtBody_Type="3-door Hatchback";
    		break;
    	case "4":
			txtBody_Type="4-door Sedan";
    		break;
    	case "5":
			switch (Product_Line)
			{
			case "D":// 9-3
				txtBody_Type="5-door Hatchback";
    			break;
    		case "E":// 9-5
   				txtBody_Type="5-door Wagon";
    			break;
   			default:
   				txtBody_Type="5-door Combi Coupe";
			}
    		break;
    	case "6":
			if (Product_Line=="C")
				txtBody_Type="5-door CS (9000)";
			else
				txtBody_Type="4-door Sedan (900CD)";
    		break;
    	case "7":
			txtBody_Type="2-door Convertible (CV)";
    		break;
    	case "G":// 9-2X
			txtBody_Type="5-door Hatchback";
    		break;
    		
    	default:
			txtBody_Type="VIN incorrect!";
		}

	switch (Gear_Box)
		{
	case "1":
			txtGear_Box="6-Speed Automatic";
    		break;

	case "4":
			txtGear_Box="4-Speed Manual";
    		break;
    	case "5":
			txtGear_Box="5-Speed Manual";
    		break;
    	case "6":
			if (Product_Line=="F" || Product_Line=="E")//9-3 sport sedan or 9-5
				txtGear_Box="6-Speed Manual";
			else
				txtGear_Box="3-Speed Automatic";
    		break;
    	case "8":
			txtGear_Box="4-Speed Automatic";
    		break;
    	case "9":
			txtGear_Box="5-Speed Automatic";
    		break;
	   	default:
			txtGear_Box="VIN incorrect!";
		}

	switch (Engine_Type)
		{    
	case "A":
    	    if (Product_Line=="F" || Product_Line=="E")//9-3 sport sedan or 9-5
    			txtEngine_Type="B235L";
    	    else
    			txtEngine_Type="B206I - 2.0L 16V, 131 hp";
    		break;
	case "B":
    	    if (Product_Line=="F")//9-3 sedan
    			txtEngine_Type="1.8i , 122 hp";
    		else
    			txtEngine_Type="B234 - 2.3L 16V, 150 hp";
    		break;
    	case "C":
    	    if (Product_Line=="E"||Product_Line=="D")
    			txtEngine_Type="B205E LPT, 150 hp";
    		else
    			txtEngine_Type="B201c";
    		break;
    	case "D":
    	    if (Product_Line=="D"||Product_Line=="F")
    			txtEngine_Type="2.2 TiD , 125 hp";
    		else
    			txtEngine_Type="B202 16V";
    		break;
    	case "E":
    	    if (Product_Line=="E")
    			txtEngine_Type="B235E LPT";
    	    	else
    			txtEngine_Type="B212 - 2.1L 16V";
    		break;
    	case "F"://9-3 sedan
    		txtEngine_Type="1.8t ,150 hp";
    		break;
    	case "G":
    	    txtEngine_Type="B235R High Output Turbo";
    		break;
    	case "H":
    	    txtEngine_Type="2.0 Turbo, 185 hp";
    		break;
    	case "J":
    	    if (Product_Line=="C"||Product_Line=="D")
    			txtEngine_Type="B204I";
    	    else
    			txtEngine_Type="B201 8V";
    		break;
    	case "K":
    	    txtEngine_Type="2.0 Turbo, 205 hp";
    		break;
    	case "L":
    	    if (Product_Line=="E")
    			if (Model_Year=="2"||Model_Year=="3"||Model_Year=="4")
    			txtEngine_Type="3.0 TiD";
    			else
       			txtEngine_Type="B235L normal turbo";
    	    else
    			txtEngine_Type="B202 16V turbo with intercooler";
    		break;
    	case "M":
    	    txtEngine_Type="B234L - 2.3L turbo, 200 hp";
    		break;
    	case "N":
    	    txtEngine_Type="B204L - 2.0L turbo with intercooler";
    		break;
    	case "P":
    	    if (Product_Line=="D")// new 9-3
    			txtEngine_Type="B204R - 2.0L high output turbo";
    	    else
    			txtEngine_Type="B204S - 2.0L turbo without charge cooler";
    		break;
    	case "R":
    	    txtEngine_Type="B234R - 2.3L turbo, 225 hp";
    		break;
    	case "S":
    	    if (Model_Year=="G"||Model_Year=="H"||Model_Year=="J"||Model_Year=="K")
    			 txtEngine_Type="B201 8V turbo";
    	    else
    			if (Product_Line=="F")//9-3 sport sedan
    				if (Model_Year=="5"||Model_Year=="6"||Model_Year=="7"||Model_Year=="8"||Model_Year=="9"||Model_Year=="A")
    					txtEngine_Type="2.0 lpt , 207L";// new engine
    				else
    					txtEngine_Type="2.0t , 175 hp";
    			else
    				txtEngine_Type="B202S - 2.0L";
    		break;
    	case "U": 
	    if (Product_Line=="F")//9-3 sport sedan 
    			txtEngine_Type="2.8 t, 6-cyl";
    	    else
    			txtEngine_Type="B234E - 2.3L turbo LPT, 170 hp";
    		break;
	case "T":
    	    txtEngine_Type="B204E - 2.0L turbo LPT, 150 hp";
    		break;
    	case "V":
    	    if (Product_Line=="F")//9-3 sport sedan 
    			txtEngine_Type="1.9 Diesel 8 valves";
    	    else
    			txtEngine_Type="B258I - 2.5L V6";
    		break;
    	case "W":
	    if (Product_Line=="F")//9-3 sport sedan 
    			txtEngine_Type="1.9 Diesel 16 valves";
    	    else
    	    		txtEngine_Type="B308I - 3.0L V6, 210 hp";
    		break;
    	case "Y"://9-3 sport sedan
    		if (Model_Year=="5"||Model_Year=="6"||Model_Year=="7"||Model_Year=="8"||Model_Year=="9"||Model_Year=="A")
    			txtEngine_Type="2.0 hpt , 207R";// new engine
    		else
    			txtEngine_Type="2.0T, 210 hp";
    		break;
    	case "Z":
    	    txtEngine_Type="B308E - 3.0L V6 turbo LPT, 200 hp";
    		break;
       	default:
    	    txtEngine_Type="VIN incorrect!";
		}

	switch (Model_Year)
   		{
		case "F":
			txtModel_Year="1985";
   			break;
		case "G":
			txtModel_Year="1986";
   			break;
   		case "H":
			txtModel_Year="1987";
   			break;
   		case "J":
			txtModel_Year="1988";
   			break;
   		case "K":
			txtModel_Year="1989";
   			break;
   		case "L":
			txtModel_Year="1990";
   			break;
   		case "M":
			txtModel_Year="1991";
   			break;
   		case "N":
			txtModel_Year="1992";
   			break;
   		case "P":
			txtModel_Year="1993";
   			break;
   		case "R":
			txtModel_Year="1994";
   			break;
   		case "S":
			txtModel_Year="1995";
   			break;
   		case "T":
			txtModel_Year="1996";
   			break;
   		case "V":
			txtModel_Year="1997";
   			break;
   		case "W":
			txtModel_Year="1998";
   			break;
   		case "X":
			txtModel_Year="1999";
   			break;
   		case "Y":
			txtModel_Year="2000"
   			break;
   		case "1":
			txtModel_Year="2001"
   			break;
   		case "2":
			txtModel_Year="2002"
   			break;
   		case "3":
			txtModel_Year="2003"
   			break;
   		case "4":
			txtModel_Year="2004"
   			break;
   		case "5":
			txtModel_Year="2005"
   			break;
   		case "6":
			txtModel_Year="2006"
   			break;
   		case "7":
			txtModel_Year="2007"
   			break;
   		case "8":
			txtModel_Year="2008"
   			break;
   		case "9":
			txtModel_Year="2009"
   			break;
   		case "A":
			txtModel_Year="2010"
   			break;
   		default:
			txtModel_Year="VIN incorrect!";
		}

	switch (Assembly_Plant)
    	{
	case "1":
			txtAssembly_Plant="Trollhattan, Sweden, line A or B";
    		break;
    	case "2":
			txtAssembly_Plant="Trollhattan, Sweden, line A or B";
   			break;
   	case "3":
			txtAssembly_Plant="Trollhattan line B or Arlov, Sweden";
    		break;
    	case "4":
			txtAssembly_Plant="No data";
    		break;
    	case "5":
			txtAssembly_Plant="Malmo, Sweden";
    		break;
    	case "6":
			if (Product_Line=="F")//9-3 sport sedan 
				txtAssembly_Plant="Graz, Austria";
			else
				txtAssembly_Plant="Nystad, Finland";
    		break;
    	case "7":
			txtAssembly_Plant="Nystad, Finland";
    		break;
    	case "8":
			txtAssembly_Plant="Trollhattan, Sweden, line C";
    		break;
    	case "9":
			txtAssembly_Plant="Trollhattan, Sweden, line C (9-3)";
    		break;
    	default:
			txtAssembly_Plant="VIN incorrect!";
		}
		txtSerial_Number=Serial_Number;
				
if (Control_Symbol==CheckSymbol())
	txtControl_Symbol="Passed";
else
	if (CheckSymbol()==10 && Control_Symbol=="X")
		txtControl_Symbol="Passed";
	else	
		txtControl_Symbol="VIN incorrect!";	
		frmAnswer.innerHTML="<blockquote>" + "<b>VIN: </b>"+ txtVin +"<BR>"+ "<b>Manufacturer: </b>" + txtManufacturer +"<BR>"+ "<b>Product line: </b>" + txtProduct_Line + "<BR>"+ "<b>Body type: </b>" + txtBody_Type + "<BR>"+ "<b>Gear box: </b>" + txtGear_Box + "<BR>"+ "<b>Engine type: </b>" + txtEngine_Type + "<BR>"+ "<b>Model year: </b>" + txtModel_Year+ "<BR>"+ "<b>Assembly plant: </b>" + txtAssembly_Plant +"<BR>"+ "<b>Serial number: </b>" + txtSerial_Number + "<BR>"+ "<b>Control symbol: </b>" + txtControl_Symbol + "<BR>"+ "<b>SRS: </b>" + txtAirbag + "<blockquote>";

}
function CheckSymbol()
	{
	var i;
	var SymbolTemp;
	var SumSymbol;
	SumSymbol=0;
	for (i=1; i<=17; i++) 
		{
			if (i==9)
				i++;
		SymbolTemp=txtVinSaabUpper.substr (i-1, 1);
		if (isNaN(SymbolTemp))
			SymbolTemp=Symbol2Numeric(SymbolTemp);
		if (SymbolTemp==-1)
			return(-1)
		SumSymbol=MultiplyNumeric(i,SymbolTemp)+SumSymbol		
		}
		
	return(SumSymbol%11)
	
	}

function Symbol2Numeric(txt)
	{
	switch (txt)
		{
		case "A":
			return(1)
		case "J":
			return(1)
		case "B":
			return(2)
		case "K":
			return(2)
		case "S":
			return(2)	
		case "C":
			return(3)
		case "L":
			return(3)
		case "T":
			return(3)	
		case "D":
			return(4)
		case "M":
			return(4)
		case "U":
			return(4)	
		case "E":
			return(5)
		case "N":
			return(5)
		case "V":
			return(5)
		case "F":
			return(6)
		case "W":
			return(6)
		case "G":
			return(7)		
		case "P":
			return(7)
		case "X":
			return(7)
		case "H":
			return(8)
		case "Y":
			return(8)
		case "R":
			return(9)
		case "Z":
			return(9)		
		default:
			return(-1)
		}
	}
function MultiplyNumeric(I,txt)
	{
	switch (I)
		{
		case 1:
			return(txt*8)
		case 2:
			return(txt*7)
		case 3:
			return(txt*6)
		case 4:
			return(txt*5)
		case 5:
			return(txt*4)
		case 6:
			return(txt*3)
		case 7:
			return(txt*2)
		case 8:
			return(txt*10)
		case 11:
			return(txt*8)
		case 12:
			return(txt*7)
		case 13:
			return(txt*6)
		case 14:
			return(txt*5)
		case 15:
			return(txt*4)
		case 16:
			return(txt*3)
		case 17:
			return(txt*2)
		case 10:
			return(txt*9)
		default:
			return(-1)	
		}
	}