OpenLayers.Control.TrafficControl = OpenLayers.Class(OpenLayers.Control.SelectFeature, 
  {
	
	hover:true,
	box:false,
	clickout:false,
	multiple:false,
	
	initialize: function (trafficLayer, options){
		OpenLayers.Control.SelectFeature.prototype.initialize.apply(this, [trafficLayer,options]);
	},
	
	
	prepareMold:function(mold_expr){
		var mold = $(mold_expr).html();
		return mold.split("xxx ").join("<span></span>&nbsp;").split("xxx").join("<span></span>");
	},
	
	insertDescriptionText:function(content_div,report){
		
		
		var q = $("div",content_div);
		
		
		if(report.from.length > 0 ){
		
			if(report.from == report.to){

				q.html(this.prepareMold("#map_traffic_tooltips .traffic_tooltip_area_mold"));
				$("span",q).eq(0).text(report.from);
				$("span",q).eq(1).text(report.at);
			}
			else{
			
				q.html(this.prepareMold("#map_traffic_tooltips .traffic_tooltip_area_nodes_mold"));
				$("span",q).eq(0).text(report.from);
				$("span",q).eq(1).text(report.to);
				$("span",q).eq(2).text(report.at);
				
			}
		}
		else{
		
			if(report.street == report.city){
				q.html(this.prepareMold("#map_traffic_tooltips .traffic_tooltip_area_city_no_street_mold"));
				$("span",q).eq(0).text(report.city);
				
				
			}
			else{
				q.html(this.prepareMold("#map_traffic_tooltips .traffic_tooltip_area_city_mold"));
				$("span", q).eq(0).text(report.street);
				$("span", q).eq(1).text(report.city);
				
				
			}
		
		}
		
		
		if(this.map.zoom>=5){
		
			$(".duration span", q).text(report.duration);
			$(".duration",q).show();
			
		}
		
		
	},
	
	select:function(feature){
	
		if(feature.popup)
			return;
			
		//var lonlat = feature.geometry.getBounds().getCenterLonLat();
		var lonlat = this.map.lastMouseLonlat;
		var height = 60;
		if(this.map.zoom>=5){
			height = 90;
		}
		
		feature.popup = new OpenLayers.Popup(null,lonlat,new OpenLayers.Size(100,height),"<div></div>",false);
		feature.popup.panMapIfOutOfView = true;
		this.map.addPopup(feature.popup);
		this.insertDescriptionText(feature.popup.div,feature.description);
		$(feature.popup.div).addClass("trafficTooltip");
		//feature.popup.setBackgroundColor("#ff2626");
		
		if(feature.style.strokeColor  == "#fff21c")
			$(feature.popup.div).css("color","#000");
		
		
		feature.popup.setBackgroundColor(feature.style.strokeColor);
	
		feature.popup.padding = "5px";
		feature.popup.panMapIfOutOfView = true;
		feature.popup.setOpacity(0.9);
		feature.popup.setBorder("1px solid #000");
		
	},
	
	
	unselect:function(feature){
		
		if(!feature.popup)
			return;
			
		var ctrl = this;
		
		window.setTimeout(function(){
		
			if(!feature.popup)
				return;
				
			ctrl.map.removePopup(feature.popup);
			feature.popup.destroy();
			feature.popup = null;
		},500);
		
		return;
	},
	
	CLASS_NAME: "OpenLayers.Control.TrafficControl"
	
});