ASC.apply(Page, {
	callDirectionView:function(dealerCode)
	{
		var cfg = {renderTo:"directionComp",dealerCode:dealerCode};
		var directionView = new ASC.Chrysler.FAD.DirectionView(cfg);
		ASC.Chrysler.trackPageMetrics('/en/dealer_locator/directions_requested');	
		ASC.Chrysler.trackLinkMetrics('content','get_directions_'+dealerCode);
		ASC.getEl("listViewComp").setDisplayed("none");
		ASC.getEl("mapViewComp").setDisplayed("none");
		ASC.getEl("page_desc").setDisplayed("none");
		ASC.getEl("directionComp").setDisplayed("block");
		ASC.getEl("startAddress").setValue("");
		if( this.viewType && this.viewType !== "direction")
			this.previousView = this.viewType;
		this.viewType = "direction";
		this.showDirectionResult = false;
		var dealer = this.getDealer(dealerCode);
		this.directionDealer = dealer;
		this.callGoogleMap();
	},
	directionViewCallBack:function(){
		var dealer = this.directionDealer;
		var tempArray = new Array();
		tempArray.push(dealer);
		this.directionView		= new ASC.Chrysler.FAD.MapView(
				{
				 dealerList:tempArray,
				 renderTo:"directionDealer",
				 showAlphabet:true,
				 pageIndex:1,
				 pageSize:this.mapPageSize
				});
        this.directionMap = new ASC.Chrysler.FAD.DealersMap({
			
			renderTo: "directionMap",

			dealerList: null,
					
			lat:dealer.latitude,

			lng: dealer.longitude,

			zoom:8,
			controls: [new GLargeMapControl(),new GMapTypeControl()]
		});
        this.directionMap.setDirectinMarker(dealer);
		this.directionMap.directionDealer = dealer;
        var endAddress = this.capitalize(dealer.address1)+" "+this.capitalize(dealer.city)+","+dealer.state+" "+ASC.util.formatZipPostalCode(dealer.zip);
        ASC.getEl("endAddress").setValue(endAddress);
	},
	capitalize: function(str){
		str = str.toLowerCase();
		str = str.replace(/\b\w+\b/g, function(word) {
               return word.substring(0,1).toUpperCase()+word.substring(1);
           });
		return str;
	},
	getDealer:function(dealerCode)
	{
		var dealers = this.dealersList.dealers;
		var len =dealers.length;
		
		for(var i=0;i<len;i++)
		{
			if(dealers[i].dealerCode == dealerCode)
			{
				return dealers[i];
			}
		}
	},
	getDirection:function(dealerCode)
	{
		ASC.Chrysler.trackLinkMetrics('content','get_directions_button_'+this.directionDealer.dealerCode);
		var elName = "direction_view_button_"+dealerCode;
		//ASC.getEl(elName).dom.className = "direction_view_button_active";
		this.direction_view_button_id = elName;
		ASC.getEl("search_error").setDisplayed("none");	 
	    if( this.directionDealer)
	    {
		  var sourceAddr = ASC.getEl("startAddress").getValue();
		  var dealer = this.directionDealer;
		  var directionMap = new ASC.Chrysler.FAD.DealersMap({
				renderTo: "directionMap",
				dealerList: null,		
				lat:dealer.latitude,
				lng: dealer.longitude,
				zoom:8,
				controls: [new GLargeMapControl(),new GMapTypeControl()]
			});
		  this.direction = new ASC.Chrysler.FAD.DrivingDirection({
				map:directionMap.map,
				lat:this.directionDealer.latitude,
				lng:this.directionDealer.longitude,
				original:  sourceAddr,
			    destination:this.directionDealer.latitude+","+this.directionDealer.longitude,	
				directionsDesc:'DirectionsDesc',
				brand:this.brand
			});
		    this.direction.clear();
		    this.direction.on("checkSuccess",this.ontestSuccess,Page);
		    this.direction.on("checkError",this.ontestError,Page);
		    this.direction.on("convertAddress",this.onConvertAddress,Page);
		    this.direction.convertAddressToLatLng(this.direction.originalCoordinate);
			    
	    }
	 },
		onConvertAddress:function(point)
 		{
 		   if(point)
 		   {
 			  this.direction.originalCoordinate = point.lat()+","+point.lng();
 			  this.ontestSuccess();
 		   }
 		   else
 		   {
 			   this.ontestError();
 		   }
 		},
 		ontestSuccess:function()
 		{
 		    this.directionMap.clearAllMarker();
 			this.direction.on("error",this.handleErrors,Page);
			this.direction.on("success",this.handleSuccess,Page);
			this.direction.getDrivingDirection();
			ASC.Chrysler.trackPageMetrics('/en/dealer_locator/directions_provided');	
	 	},
 		ontestError:function()
 		{
 			ASC.getEl("search_error").setDisplayed("block");
 			this.direction = null;
	 	},
		handleSuccess:function(options)
		{
	 		this.showDirectionResult = true;
		},
		
		handleErrors:function(options)
		{
            ASC.getEl("search_error").setDisplayed("block");
            this.direction = null;
		}
});


