
//******* Handles the image updates when a new model is selected from the drop down list ******

function update_image(theForm, theSelect) {
 var vehicleID = theForm.elements[theSelect].options[theForm.elements[theSelect].selectedIndex].value;
 document.images.carImage.src = "../resources/images/ddImages/" + vehicleID + ".jpg";
 document.images.carImage.onerror = function (evt) {	
	 document.images.carImage.src = "../resources/images/ddImages/noImage.jpg";
 }
 var modelClass = getModelClass(vehicleID);
 imageHREF =  "javascript:newWindow('http://www.mbusa.com/mercedes/#/vehiclesMenu/classOverview/?vc=" + modelClass + "')"; 
 document.getElementById('iHREF').href = imageHREF;
}

function getModelClass(vehicleId){
	var modelClass = '';
	var i = 0;
	if(vehicleId != ''){
		var len = vehicleId.length;		
		for(i=0 ; i < len; i++){		 
		  if(isNaN(vehicleId.charAt(i)))
		  {
		  	modelClass = modelClass + vehicleId.charAt(i);
		  }else{
		  	break;
		  }		  
		}
		return modelClass; 
	}
}

// ****************  End of Image Updates ********


// ****************  The following functions Parse the url parameters for Side By Side Calculator  ************

function parseQueryString (str) { 
	str = str ? str : location.search; 
	var query = str.charAt(0) == '?' ? str.substring(1) : str; 
	var args = new Object(); 
	if (query) { 
		var fields = query.split('&'); 
		for (var f = 0; f < fields.length; f++) { 
			var field = fields[f].split('='); 
		args[unescape(field[0].replace(/\+/g, ' '))] = unescape(field[1].replace(/\+/g, ' '));
		 }
	 } 
	return args; 
}


//Sets the options based on the url parameters.  Used when the Models by Payment page links to the side-by-side calculator.
function setLists() { 

	var args = parseQueryString ();

	// set Models
	setDefault(document.forms.sideCalculatorForm,'modelName', args['model']);	

  	// set miles
	setDefault(document.forms.sideCalculatorForm,'leaseCalculator.annualMiles', args['annualMiles']);	

	// set Retail Rate  
	setDefault(document.forms.sideCalculatorForm,'retailCalculator.interestRate', args['retail_rate']);		
	
	// set Balloon Rate
	setDefault(document.forms.sideCalculatorForm,'balloonCalculator.interestRate', args['balloon_rate']);			

	// set Lease Term
	setDefault(document.forms.sideCalculatorForm,'leaseCalculator.term', args['lease_term']);			
 	
	// set Retail Term
	setDefault(document.forms.sideCalculatorForm,'retailCalculator.term', args['retail_term']);				

	// set Balloon Term
	setDefault(document.forms.sideCalculatorForm,'balloonCalculator.term', args['balloon_term']);					
}

// ****************  End of Side By Side for url parameter parser  ************


// *****************  The following code is for the Models by Payment to place the vehicles on the grid.****

function parseString (str) { 
	var query = str.charAt(0) == '?' ? str.substring(1) : str; 
	var args = new Object(); 
	if (query) { 
		var fields = query.split('|'); 
		for (var f = 0; f < fields.length; f++) { 
			var field = fields[f].split('='); 
		args[unescape(field[0].replace(/\+/g, ' '))] = unescape(field[1].replace(/\+/g, ' '));
		 }
	 } 
	return args; 
}

function getLeft (payment) { 
	var chartWidth = 650;
	var left;
	var pmtLowerLimit = 350;		
	var pmtUpperLimit = 1475;	
	var pxPerDollar = chartWidth/(pmtUpperLimit - pmtLowerLimit);
	var pxOffset = (pmtLowerLimit * pxPerDollar) - 55;  // pmts starts at $350 not zero so we need to shift to the left
	
	left = (pxPerDollar * payment) - pxOffset ;
	
	if (left > (chartWidth - 10))
	{
		left = (chartWidth + 5);
	}
		
	//alert (left);
	
	return left;
}

function getTop (vehicleClass) { 
	var top =0;
	var topHeight = 51;
	var startpos = 63;
	var classList = new Array();
	var pxTopOffset = 5;  
	var classPosition = new Array();
	classList[0] = 'C';
	classList[1] = "E";
	classList[2] = "S";
	classList[3] = "CLK";
	classList[4] = "CL";	
	classList[5] = "SLK";	
	classList[6] = "SL";	
	classList[7] = "ML";
	classList[8] = "GLK";		
	classList[9] = "G";
	classList[10] = "GL";	
	classList[11] = "CLS";	
	classList[12] = "R";	
	
	classPosition[0] = 0;
	classPosition[1] = 1;
	classPosition[2] = 2;
	classPosition[3] = 3;
	classPosition[4] = 4;	
	classPosition[5] = 5;	
	classPosition[6] = 6;	
	classPosition[7] = 7;	
	classPosition[8] = 8;
	classPosition[9] = 9;
	classPosition[10] = 10;
	classPosition[11] = 11;	
	classPosition[12] = 12;	
	
	for(t=0;t<classList.length;t++)
	{
		if (vehicleClass == classList[t])
		{
			top = startpos + (topHeight * classPosition[t]) + pxTopOffset;
		}
	}
  	//alert('top: ' + top + 'for class: ' + vehicleClass + 'class position: ' + classPosition[t]);
	return top;
}

function removeFormat(payment) { 

	var pos;
	var rPayment;
	
	
	pos = payment.indexOf(",");
	if (pos != -1)
	{
		rPayment = (payment.substring(1,pos) + payment.substring(pos+1,payment.length));
		//alert(payment.substring(1,pos));		
		//rpayment = (payment.substring(1,pos) + payment.substring(pos+1,payment.length));
		//alert(rPayment);
	}
	else
	{
		rPayment = payment.substring(1,payment.length);
	}

	return rPayment;

}	

function parse(model) {
  if (model == null || model == "")
  	return "";
  
  var numIndex = 0;
  var i = 0;
  for (i = 0; i < model.length; i++) {
  	if (parseInt(model.charAt(i)) >= 0)
		break;
  }	
  
  return model.substring(0, i);
}


function displayVehicles() { 
	var args;
	var str;
	var output1;
	var output2;
	var output3;
	var output4;
	var output;
	var pmt;
	var numPayment;
	var diff;	
	var leftArray = new Array();
	var topArray = new Array();	
	var pmtArray = new Array();
	var modelArray = new Array();
	var msrpArray = new Array();
	var nameArray = new Array();
	var imageArray = new Array();	
	var height = 32;

	//  Load up the vehicle information in arrays. Please note we have 52 vehicles as of 3/22/05.
	for(i=0;i < 60; i++)
	{
		if (document.getElementById(i)!= null) 
		{
	            str  = document.getElementById(i).innerHTML;
			args = parseString (str); 
			rPayment = removeFormat(args['payment']);
			//alert(rPayment);
			leftArray[i] = getLeft(rPayment);
		  	topArray[i] = getTop(parse(args['vClass']));
		  	//alert(topArray[i]);
			pmtArray[i] = args['payment'];
			modelArray[i] = args['model'];			
			msrpArray[i] = args['msrp'];			
			nameArray[i] = args['name'];						
			imageArray[i] = new Image();
			imageArray[i].src = '../resources/images/models/' + modelArray[i] + '.gif';			

		}
	}

	var iModel;		
	var popOffset;	       // used to define where to pop the vehicle image on mouseover.
	var chartWidth = 650;	
	var maxOverlay = 22;  // this is used to determine when to move a vehicle image to the next row to avoid overlap.


	// check to see if any of the images overlay another.  If they do then move the vehicle image to the next line.	
	for(l=0;l < leftArray.length; l++)
	{
		for (x=0;x < leftArray.length; x++)
		{
			if (x != l)
			{
				if (topArray[x] == topArray[l]) 
				{
					diff = Math.abs(leftArray[x] - leftArray[l]);
					if (diff <= maxOverlay)
					{
						topArray[x] = topArray[x] + (height / 2);
					}
				}
			}
		}

		
		if (leftArray[l] > chartWidth - 70)
		{
			popOffset = (-115);
		}
		else
		{
			popOffset = 38;
		}			

		//Handle models that return an embedded space
		iModel = modelArray[l].indexOf(" ", 0);
		if (iModel != -1)
		{
			modelArray[l] = modelArray[l].substring(0, iModel);
		}

		document.getElementById(l).style.left = leftArray[l];
		document.getElementById(l).style.top = topArray[l];
		document.getElementById(l).style.visibility = 'visible';
		hr = "'preparePaymentEstimator.do";
		tar = "'base'";
		wParms = '?ft=Y&modelName=' + modelArray[l] + "'";
		wOpen ='onclick="window.open' + '('   + hr + wParms + ',' + tar + '); window.close();"';
		  output1 = '<a href="#" ' + wOpen + ' ';		
		  output2 = 'onMouseOver="rollOverImage(' + topArray[l] + ',' + (leftArray[l] + popOffset) + ',' + "'" + modelArray[l]+ "'"  + ',' + "'"  + nameArray[l] + "'" + ',' + "'" + pmtArray[l] + "/Month'" + ');" onmouseout="rollOffImage();"';
		  output3 = '>';
		  output4 = '<img src="' + '../resources/images/models/' + modelArray[l] +'.gif" border="0" height="21" width="42" alt=""></a>';
		  output = output1 + output2 + output3 + output4;
 		  //alert(output);		
		  document.getElementById(l).innerHTML = output;			  	
	}

}


// *****************  End of Models by Payment.****


// *****************  All Calculator Pages .****

//Appends "%" sign to interest rate
function setRate(theElement)
{	
	for (var i = 0; i < theElement.length; i++) {      
		theElement.options[i].text = theElement.options[i].text + "%"; 
	}
}
