
ASC.apply(Page, {
	template : {
		printDirection :0,
		printDealerInfo :1,
		moreDealerInfo : 2
	},
	dealerInfoOption : {
		New_Vehicle_Sales :0,
		Used_Vehicle_Sales :1,
		Service_Parts :2
	}
});

ASC.namespace('ASC.Chrysler.dealerHours');
ASC.Chrysler.dealerHours = ASC.extend(Ext.util.Observable,
		{
	renderTo:null,
	dealerInfo:null,

	constructor: function (cfg)
	{
		ASC.Chrysler.dealerHours.superclass.constructor.apply(this);
		
		this.addEvents({"render":true});
		
		
		if(cfg.renderTo)
		this.renderTo = cfg.renderTo;
		
		if(cfg.template!=null)
		{
		   switch(cfg.template)
		  {
		  case Page.template.printDealerInfo:
		  case Page.template.printDirection:
		    this.initPrintTemplates();
		   break;
		  case Page.template.moreDealerInfo:
			    this.initDealerInfoTemplates();
			   break;
		  }
		}
	},
	render:function()
	{
		if(this.dealerInfo)
		{
			this.dealerHoursTpl.overwrite(this.renderTo,{info:this.recombineDealerHour()});
			this.fireEvent("render");
		}
	},
	
	applyTemplateHtml:function(dealerInfoOption){
		if(this.dealerInfo)
		{
			return this.dealerHoursTpl.applyTemplate({dealerHours:this.recombineDealerHour()[dealerInfoOption].dealerHours});	
		}
	},

	recombineDealerHour:function()
	{

		if(this.dealerInfo){
			var dealerHourArray = new Array();
			var newVehicleSales = new Object();
			newVehicleSales.description = this.getMessage("newVehicleSales");
			if(this.dealerInfo.dealer.salesPhone && this.dealerInfo.dealer.salesPhone.trim() == '')
			{
				newVehicleSales.phone       = this.fomatPhone(this.dealerInfo.dealer.phone);
			}
			else
			{
				newVehicleSales.phone       = this.fomatPhone(this.dealerInfo.dealer.salesPhone);
			}
			newVehicleSales.dealerHours = this.groupServiceHours(this.getDealerHour('Showroom'));
			dealerHourArray[Page.dealerInfoOption.New_Vehicle_Sales]=newVehicleSales;
			//dealerHourArray.push(newVehicleSales);
			
			var usedVehicleSales = new Object();
			usedVehicleSales.description = this.getMessage("usedVehicleSales");
			if(this.dealerInfo.dealer.salesPhone && this.dealerInfo.dealer.salesPhone.trim() == '')
			{
				usedVehicleSales.phone       = this.fomatPhone(this.dealerInfo.dealer.phone);
			}
			else
			{
				usedVehicleSales.phone       = this.fomatPhone(this.dealerInfo.dealer.salesPhone);
			}
			usedVehicleSales.dealerHours = this.groupServiceHours(this.getDealerHour('Used'));
			dealerHourArray[Page.dealerInfoOption.Used_Vehicle_Sales]=usedVehicleSales;
			//dealerHourArray.push(usedVehicleSales);
			
			var serviceSales     = new Object();
			serviceSales.description   =  this.getMessage("servicesParts");
			if(this.dealerInfo.dealer.servicePhone && this.dealerInfo.dealer.servicePhone.trim() == '')
			{
				serviceSales.phone         =  this.fomatPhone(this.dealerInfo.dealer.phone);
			}
			else
			{
				serviceSales.phone         =  this.fomatPhone(this.dealerInfo.dealer.servicePhone);
			}
			serviceSales.dealerHours   =  this.groupServiceHours(this.getDealerHour('Service'));
			dealerHourArray[Page.dealerInfoOption.Service_Parts]=serviceSales;
			//dealerHourArray.push(serviceSales);
			
			return dealerHourArray;
		}
		return ;
	},
	initPrintTemplates: function ()
	{
		this.dealerHoursTpl = new Ext.XTemplate(
				'<tpl for="info"><tpl if="values.dealerHours.length&gt;0"><div class="DealerInfHeadContentRight">',
				'<span class="DealerInfHeadContentRightSpan">{values.description}</span>',
				'<div><span class="DealerInfHeadContentRightSpan">{[ASC.Chrysler.formatPhoneNumberUseHyphen(values.phone)]}</span></div>',
				'<div><table cellpadding="0" cellspacing="0" class="timetext"><tpl for="values.dealerHours">',
				
				'<tr><td class="time_week">{startDay}{[this.getInfo(values.startDay,values.endDay,"-")]}{[this.getInfo(values.startDay,values.endDay,"")]}</td>',
				  '<td class="time_morning">{openTime}</td>',
				  '<td class="time_to">{[this.getInfo(values.openTime,values.closedTime,"to")]}</td>',
				  '<td class="time_morning">{[this.getInfo(values.openTime,values.closedTime,"")]}</td>',
				'</tr>',
				
				'</tpl></table></div>',
				'</div>',
				'</tpl>',
				'</tpl>',{			
					translate: function (key)
					{
						return ASC.message(key);
					},
					getInfo:function(star,end,info){
						var infoReturn = "&nbsp;";
						if(star!=end){
							if(info!=""){
								if(info!="-")
									infoReturn = this.translate(info);
								else
									infoReturn = info;
							}else{									
								infoReturn = end;
							}
						}
						return infoReturn;
					}
				}
				);
	},
	initDealerInfoTemplates:function(){
		this.dealerHoursTpl = new Ext.XTemplate(
				'<table cellpadding="0" cellspacing="0"><tpl for="values.dealerHours">',

                '<tr><td class="time_week">{startDay}</td><td class="time_underline">',
                '{[this.getInfo(values.startDay,values.endDay,"-")]}',
            	'</td><td class="time_week">',
            	'{[this.getInfo(values.startDay,values.endDay,"")]}',			                    	
            	'</td><td class="time_morning">{openTime}<td class="time_to">',
            	'{[this.getInfo(values.openTime,values.closedTime,"fad_findDealers_to")]}',	
            	'</td><td class="time_morning">',
            	'{[this.getInfo(values.openTime,values.closedTime,"")]}',	
            	'</td></tr>',		
                
                '</tpl></table>',{					
					translate: function (key)
					{
						return ASC.message(key);
					},
					getImgLocalePath: function(){
						return ASC.cfg.getImgLocalePath();
					},
					getInfo:function(star,end,info){
						var infoReturn = "&nbsp;";
						if(star!=end){
							if(info!=""){
								if(info!="-")
									infoReturn = this.translate(info);
								else
									infoReturn = info;
							}else{									
								infoReturn = end;
							}
						}
						return infoReturn;
					}
				});
		this.dealerHoursTpl.compile();	
	},
	update:function(dealerInfo)
	{
		if(dealerInfo)
		{
			this.dealerInfo=dealerInfo;
			this.render();
		}
	},
	getDealerHour:function(indexofStr)
	{
		var dealerHours = this.dealerInfo.dealerHours;
		
		for(var i=0;i<dealerHours.length;i++)
		{
			if(dealerHours[i].department.indexOf(indexofStr)>-1)
			{
				return dealerHours[i];
			}
		}
	}
	,
	getDealerHoursTemplate:function(department){
		if(!this.dealerInfo) return "";
		if(this.DealerHoursTemplate == null ){
			this.DealerHoursTemplate = new Ext.XTemplate(
					'<tpl for="values.dealerHours">',
					'<tpl if="startDay == endDay">',
					'<div><span class="timetext">{startDay}</span><span class="timetext">{openTime}</span><span class="timetext">{[ASC.message("to")]}</span><span class="timetext">{closedTime}</span>',
					'</div>',
					'</tpl>',
					'<tpl if="startDay != endDay">',
					'<div><span class="timetext">{startDay}</span>-<span class="timetext">{endDay}</span><span class="timetext">{openTime}</span><span class="timetext">{[ASC.message("to")]}</span><span class="timetext">{closedTime}</span>',
					'</div>',
					'</tpl>',
					'</tpl>'
			);
			this.DealerHoursTemplate.compile();
		}
		return this.DealerHoursTemplate.apply({ 
			dealerHours: this.groupServiceHours(this.getDealerHour(department)) 
		});
	},
	groupServiceHours: function(dealerHour)
    {
    	var hourInfoArray = new Array();
    	if(dealerHour)
    	{
    	var open = dealerHour.mondayOpen;
    	var closed = dealerHour.mondayClosed;
    	var start = this.getMessage("monday");
    	var end = this.getMessage("monday");
    	var to = this.getMessage("to");
    	
        if(open!=dealerHour.tuesdayOpen||closed!=dealerHour.tuesdayClosed)
        {
        	if(open!=''&&closed!='')
        	{
        	
        		var hour = new Object();
        		hour.startDay = start;
        		hour.endDay = end;
        		hour.openTime = open;
        		hour.closedTime = closed;
        		hourInfoArray.push(hour);
        	}
        	open =dealerHour.tuesdayOpen;
        	closed = dealerHour.tuesdayClosed;
        	start =  this.getMessage("tuesday");
        	end = this.getMessage("tuesday");
        }
        else
        {
        	end = this.getMessage("tuesday");
        }
    	
       
        if(open!=dealerHour.wednesdayOpen||closed!=dealerHour.wednesdayClosed)
        {
        	if(open!=''&&closed!='')
        	{
        		var hour = new Object();
        		hour.startDay = start;
        		hour.endDay = end;
        		hour.openTime = open;
        		hour.closedTime = closed;
        		hourInfoArray.push(hour);
        	}
        	open =dealerHour.wednesdayOpen;
        	closed = dealerHour.wednesdayClosed;
        	start =  this.getMessage("wednesday");
        	end = this.getMessage("wednesday");
        }
        else
        {
        	end = this.getMessage("wednesday");
        }
        
       
        if(open!=dealerHour.thursdayOpen||closed!=dealerHour.thursdayClosed)
        {
        	if(open!=''&&closed!='')
        	{
        		var hour = new Object();
        		hour.startDay = start;
        		hour.endDay = end;
        		hour.openTime = open;
        		hour.closedTime = closed;
        		hourInfoArray.push(hour);
        	}
        	open =dealerHour.thursdayOpen;
        	closed = dealerHour.thursdayClosed;
        	start =  this.getMessage("thursday");
        	end = this.getMessage("thursday");
        }
        else
        {
        	end = this.getMessage("thursday");
        }
        
       
        	if(open!=dealerHour.fridayOpen||closed!=dealerHour.fridayClosed)
        	{
        		if(open!=''&&closed!='')
            	{
        			var hour = new Object();
            		hour.startDay = start;
            		hour.endDay = end;
            		hour.openTime = open;
            		hour.closedTime = closed;
            		hourInfoArray.push(hour);
            	}
        	    open =dealerHour.fridayOpen;
        	    closed = dealerHour.fridayClosed;
        	    start =  this.getMessage("friday");
        	    end = this.getMessage("friday");
        	}
        	 else
             {
             	end = this.getMessage("friday");
             }
        
      
        	if(open!=dealerHour.saturdayOpen||closed!=dealerHour.saturdayClosed)
        	{
        		if(open!=''&&closed!='')
            	{
        			var hour = new Object();
            		hour.startDay = start;
            		hour.endDay = end;
            		hour.openTime = open;
            		hour.closedTime = closed;
            		hourInfoArray.push(hour);
            	}
        	     open =dealerHour.saturdayOpen;
        	     closed = dealerHour.saturdayClosed;
        	     start =  this.getMessage("saturday");
        	     end = this.getMessage("saturday");
        	}
        	 else
             {
             	end = this.getMessage("saturday");
             }
        
       
        	if(open!=dealerHour.sundayOpen||closed!=dealerHour.sundayClosed)
        	{
        		if(open!=''&&closed!='')
            	{
        			var hour = new Object();
            		hour.startDay = start;
            		hour.endDay = end;
            		hour.openTime = open;
            		hour.closedTime = closed;
            		hourInfoArray.push(hour);
            	}
        	     open =dealerHour.sundayOpen;
        	    closed = dealerHour.sundayClosed;
        	     start =  this.getMessage("sunday");
        	     end = this.getMessage("sunday");
        	}
        	 else
             {
             	end = this.getMessage("sunday");
             }
        	
        	if(open!=''&&closed!='')
        	{
        		var hour = new Object();
        		hour.startDay = start;
        		hour.endDay = end;
        		hour.openTime = open;
        		hour.closedTime = closed;
        		hourInfoArray.push(hour);
        	}
    	}
        	return hourInfoArray;
     },
    getMessage:function(key)
    {
    	return ASC.message(key);
    },
    fomatPhone: function(phone)
    {
    	return ASC.Chrysler.formatPhoneNumberUseHyphen(phone);
    }
});