/**
 * COMPARE FOR CAMRY 2012
 *
 * @author Michael Boucher (iCrossing)
 */


(function() {

	// Wait until DOM is loaded
	document.observe( "dom:loaded" , function() {
		
		/**
		 * Maps trim @id to "Select Trim" links and holds trim feature list
		 * features @type 1 "Standard" , 2 "Available"
		 */
		var trimMap = { 'L'			: { id: '102981053'
									   ,image: 'l.jpg'
									   ,features: [ { type: 'standard' , data: "Ten airbags"}
									   			   ,{ type: 'standard' , data: 'BLU Logic<span class="sup">&reg;</span> <span class="sup"><a href="javascript:;" onclick="TMSSite.disclaimerHotlink(\'/disclaimers/blu_logic.html\');">[3]</a></span> Hands Free System'}
									   			  ]
									  }
									  
					  , 'LE'		: { id: '102980636'
					  				   ,image: 'le.jpg'
					  				   ,features: [ { type: 'standard' , data: "Ten airbags"}
									   			   ,{ type: 'standard' , data: "6.1-in. touch-screen display"}
									   			   ,{ type: 'standard' , data: '<em>Bluetooth</em><span class="sup">&reg;</span> <span class="sup"><a href="javascript:;" onclick="TMSSite.disclaimerHotlink(\'/disclaimers/bluetooth.html\');">[4]</a></span> wireless technology'}
									   			  ]
									  }
									  
					  , 'SE 4-cyl.' : { id: '102977838'
					  				   ,image: 'se.jpg'
					  				   ,features: [ { type: 'standard' , data: "Ten airbags"}
									   			   ,{ type: 'available' , data: "Entune&trade; multimedia system"}
									   			   ,{ type: 'standard' , data: "6.1-in. touch-screen display"}
									   			   ,{ type: 'standard' , data: '<em>Bluetooth</em><span class="sup">&reg;</span> <span class="sup"><a href="javascript:;" onclick="TMSSite.disclaimerHotlink(\'/disclaimers/bluetooth.html\');">[4]</a></span> wireless technology'}
									   			   ,{ type: 'available' , data: "Backup camera"}
									   			   ,{ type: 'available' , data: "Smart Key System with Push Button Start"}
									   			  ]
									  }
									  
					  , 'SE V6'		: { id: '102978562'
					  				   ,image: 'se.jpg'
					  				   ,features: [ { type: 'standard' , data: "Ten airbags"}
									   			   ,{ type: 'standard' , data: "Entune&trade; multimedia system"}
									   			   ,{ type: 'standard' , data: "6.1-in. touch-screen display"}
									   			   ,{ type: 'standard' , data: '<em>Bluetooth</em><span class="sup">&reg;</span> <span class="sup"><a href="javascript:;" onclick="TMSSite.disclaimerHotlink(\'/disclaimers/bluetooth.html\');">[4]</a></span> wireless technology'}
									   			   ,{ type: 'available' , data: "Backup camera"}
									   			   ,{ type: 'standard' , data: "Smart Key System with Push Button Start"}
									   			  ]
					  				  }
					  , 'XLE 4-cyl.': { id: '102978953'
					  				   ,image: 'xle.jpg'
					  				   ,features: [ { type: 'standard' , data: "Ten airbags"}
									   			   ,{ type: 'available' , data: "Entune&trade; multimedia system"}
									   			   ,{ type: 'standard' , data: "6.1-in. touch-screen display"}
									   			   ,{ type: 'standard' , data: '<em>Bluetooth</em><span class="sup">&reg;</span> <span class="sup"><a href="javascript:;" onclick="TMSSite.disclaimerHotlink(\'/disclaimers/bluetooth.html\');">[4]</a></span> wireless technology'}
									   			   ,{ type: 'available' , data: "Backup camera"}
									   			   ,{ type: 'available' , data: "Smart Key System with Push Button Start"}
									   			   ,{ type: 'available' , data: "Blind Spot Monitor (BSM)"}
									   			  ]
					  				  }
					  , 'XLE V6'	: { id: '102977373'
					  				   ,image: 'xle.jpg'
					  				   ,features:  [ { type: 'standard' , data: "Ten airbags"}
									   			   ,{ type: 'standard' , data: "Entune&trade; multimedia system"}
									   			   ,{ type: 'standard' , data: "6.1-in. touch-screen display"}
									   			   ,{ type: 'standard' , data: '<em>Bluetooth</em><span class="sup">&reg;</span> <span class="sup"><a href="javascript:;" onclick="TMSSite.disclaimerHotlink(\'/disclaimers/bluetooth.html\');">[4]</a></span> wireless technology'}
									   			   ,{ type: 'standard' , data: "Backup camera"}
									   			   ,{ type: 'standard' , data: "Smart Key System with Push Button Start"}
									   			   ,{ type: 'available' , data: "Blind Spot Monitor (BSM)"}
									   			  ]
					  				  }
					  				  
					  , 'Hybrid LE' : { id: '99995'
					  				   ,image: 'hybrid-le.jpg'
					  				   ,features: [ { type: 'standard' , data: "Ten airbags"}
									   			   ,{ type: 'standard' , data: 'BLU Logic<span class="sup">&reg;</span> <span class="sup"><a href="javascript:;" onclick="TMSSite.disclaimerHotlink(\'/disclaimers/blu_logic.html\');">[3]</a></span> Hands Free System'}
									   			   ,{ type: 'standard' , data: "Smart Key System with Push Button Start"}
									   			  ]
					  				  }
					  				 	
					  , 'Hybrid XLE': { id: '99996'
					  				   ,image: 'hybrid-xle.jpg'
					  				   ,features: [ 
									   			   { type: 'standard' , data: "Ten airbags"}
									   			   ,{ type: 'available' , data: "Entune&trade; multimedia system"}
									   			   ,{ type: 'standard' , data: "6.1-in. touch-screen display"}
					  				   				,{ type: 'standard' , data: '<em>Bluetooth</em><span class="sup">&reg;</span> <span class="sup"><a href="javascript:;" onclick="TMSSite.disclaimerHotlink(\'/disclaimers/bluetooth.html\');">[4]</a></span> wireless technology'}
									   			   ,{ type: 'available' , data: "Backup camera"}
									   			   ,{ type: 'standard' , data: "Smart Key System with Push Button Start"}
									   			   ,{ type: 'available' , data: "Blind Spot Monitor (BSM)"}
									   			  ]
					  				  }
					   }
		// FIXME Update with correct URL to JSON Service
		/**
		 * URL to JSON Trim Data
		 */
		var trimDataUrl = '/js/vehicle/2012/camry/trim.json'; // 'http://www.toyota.com/configws/static/modelTrims?lang=en&region=10011&brand=toyota&zzc=20111005022636&format=JSON&modelSeries=3&return=index'; //   // 
		
		/**
		 * trimData Object loaded via trimDataUrl
		 */
		var trimData;
		
		/**
		 * Compare Prototype Templates
		 */
		var templates;
		
		/**
		 * Array of Compare Containers
		 */
		var compareContainers = $$(".compareContainer");
		
		// Hide Compare Containers until after AJAX call
		compareContainers.each(Element.hide);
		
		
		new Ajax.Request( trimDataUrl , { onSuccess: function( resp ) { 
			
			trimData = resp.responseJSON.tmsServiceResponse.content;
			
			
			// Process compareContainers
			compareContainers.each( function( compCont ) {
				
				// Get Trim Selection Links
				var trimOptions = compCont.down(".trimOptions").childElements();
				
				// Set templates based on HTML
				if(!templates) {
					templates = {};
					
					templates.price		= new Template( compCont.down(".price").innerHTML);
					templates.milage	= new Template( compCont.down(".milage").innerHTML );
					templates.hp		= new Template( compCont.down(".hp").innerHTML );					
				}
				
				// Set default selections for containers
				switchTrim( trimOptions[0].innerHTML , compareContainers[0] );
				switchTrim( trimOptions[1].innerHTML , compareContainers[1] );				
				
				// Show the containers
				compCont.show();
				
				// Attach behavior to trim selection links
				trimOptions.each( function( option ) {
					
					option.observe('click' , function() {						
					
						// Hide trim options flyout
						this.up().hide();
						
						// Set the active container for this behavior
						var container = this.up(".compareContainer");
						
						// Switch Trim Data for container
						switchTrim( this.innerHTML , container );						
						
					});
					
				});
				
			} );
			
			$$('.featureHighlights')[0].setStyle({'height':'auto'});
			$$('.featureHighlights')[1].setStyle({'height':'auto'});
			setContentHeight();
			
		} });
		
		
		/**
		 * Gets the data for the specified trim and displays it inside of the specified container
		 */
		function switchTrim( trim , container ) {			
						
			// Holder for trim details
			var details = getTrimDetails( trimMap[trim].id );
			
			// Change the trim display name
			container.down(".selModel").innerHTML = trim;
			
			
			// Pricing Template
			var priceObj = { msrp: details.msrp.toString().substring(0,2)+","+details.msrp.toString().substring(2) };
			container.down(".price").innerHTML = templates.price.evaluate(priceObj);
			
			// Milage Template
			var milageObj = { mpgc: details.cityMpg , mpgh: details.highwayMpg };
			container.down(".milage").innerHTML = templates.milage.evaluate(milageObj);
			
			// HP Template
			var hpObj = { hp: details.horsePower };
			container.down(".hp").innerHTML = templates.hp.evaluate(hpObj);
			
			// Image
			container.down(".modelImage").src = "/img/vehicles/2012/camry/landing/compare/"+trimMap[trim].image;
			container.down(".modelImage").alt = details.name;
			
			// Features List
			var featureUL = container.down("ul");
			var featureHTML = "";
			trimMap[trim].features.each( function(feat) {
				featureHTML += '<li class="'+feat.type+'">'+feat.data+'</li>';
			});
			
			featureUL.innerHTML = featureHTML;
			
			$$('.featureHighlights')[0].setStyle({'height':'auto'});
			$$('.featureHighlights')[1].setStyle({'height':'auto'});
			setContentHeight();			
		}
		
		function setContentHeight(){
			var compareCntLeft; var compareCntRight; var maxHeight;
			compareCntLeft = $$('.featureHighlights')[0].getStyle('height');
			compareCntRight = $$('.featureHighlights')[1].getStyle('height');			
			maxHeight = Math.max(parseFloat(compareCntLeft), parseFloat(compareCntRight));			
			$$('.featureHighlights')[0].setStyle({'height': maxHeight +'px'});
			$$('.featureHighlights')[1].setStyle({'height': maxHeight +'px'});
		}
		
		function getTrimDetails( id ) {
			var ret = trimData.modelTrimList.modelTrim.detect( function(n) {
				return n['@id'] == id;
			});
			
			return ret;			
		}
		
	});
	
	
	
})();

