	// Setting HTML needed for make and show result lists
	Site.Searcher.Route_html_list_start='<div id="listLevel" style="display: block; position: relative;"><ul id="list" style="display: block;">';
	Site.Searcher.Route_html_list_titleFROM=function(fromto, text_item, text_js_action){
		var html;
			html='<li class="listRowTemplate_template" onclick="' + text_js_action + '" style=" height:30px;background-color:#6b89af;cursor:pointer;"  style="visibility: visible;">';
			html+='<div class="rowTitleDiv_template"><div class="rowTitleTable_template "><div style="color:white;" class="rowTitle_template">'+text_item+'</div></div></div></li>';
		return html;
		}
	Site.Searcher.Route_html_list_item=function(id, text_objectid, text_item, text_js_action,text_js_otheractions){
		var html;
			html='<li class="listRowTemplate_template" '+text_js_otheractions+' onclick="javascript:' + text_js_action + '" style="cursor:pointer;"  style="visibility: visible;">';
			html+='<div class="rowTitleDiv_template"><div class="rowTitleTable_template "><div class="rowTitle_template">'+text_item+'</div></div></div><div class="rowArrow_template"></div></li>';
		return html;
		}
	Site.Searcher.Route_html_list_itemNotFound=function(id, text_objectid, text_item, text_js_action,text_js_otheractions){
		var html;
			html='<li class="listRowTemplate_templateNotFound" '+text_js_otheractions+' onclick="javascript:' + text_js_action + '" style="cursor:pointer;"  style="visibility: visible;">';
			html+='<div class="rowTitleDiv_template"><div class="rowTitleTable_template "><div class="rowTitle_template">'+text_item+'</div></div></div></li>';
		return html;
		}
	
	Site.Searcher.Route_html_shadow='<div class="shadow" />';	
	Site.Searcher.Route_html_list_end='</ul></div>'+Site.Searcher.Route_html_shadow;
	Site.q;
	Site.route;
	Site.drawnRoute=false;
	Site.RouteFromIdStreet;
	Site.RouteFromLon;
	Site.RouteFromLat;
	Site.RouteFromOk=false;
	Site.RouteToIdStreet;
	Site.RouteToLon;
	Site.RouteToLat;
	Site.RouteToOk=false;
	Site.RouteFromText;
	Site.RouteToText;
	Site.RouteTransit=false;
	
	/********************
	   Searching for Addresses, get list and markers
	/* FUNCTION SEARCHADDRESS
		 Returns list of coincident addresses and show markers on the map
	*/
	Site.switchWalkingDriving=function(yesno){	
		if(yesno == 1) {
			Site.RouteTransit=false;	
			}
		else {
			Site.RouteTransit=true;
			}	
		
		if(Site.RouteFromOk==true && Site.RouteToOk==true){
			Site.DrawRoute();
			}
	}
  
	Site.SearchAddressforRoute = function(json,product,service,ul_id){
		Site.q=json;var puntos=0;var ul=Site.get(ul_id);var html;var marker;var showpopup=false;
		var add_i_to_text='';var iconH;var iconW;var offX=0;var offY=0;
		var CurrenLayer;
		var color_icon;
		var title;
		var fromto;
		var tmp;
		var id_route_=0;
		
		if(ul_id=='RouteListFROM') {
			//VM
			//Site.Map.map.removeAllFeatures();
			/*if(typeof Site.markers_global != "undefined")
			{
				Site.markers_global.destroy();
			}
			if(typeof Site.AddresPopupMarkers != "undefined")
			{
			  for(cont_i=0;cont_i < Site.AddresPopupMarkers.length;cont_i++)
			  {
			  	if(typeof Site.AddresPopupMarkers[cont_i] != "undefined")
			  	{
			  		Site.AddresPopupMarkers[cont_i].destroy();
			  	}
			  }
			}
			if(typeof Site.AddresPopupMarkersRoute != "undefined")
			{
			  for(cont_i=0;cont_i < Site.AddresPopupMarkersRoute.length;cont_i++)
			  {
			  	if(typeof Site.AddresPopupMarkersRoute[cont_i] != "undefined")
			  	{
			  		Site.AddresPopupMarkersRoute[cont_i].destroy();
			  	}
			  }
			}
				if(typeof Site.CommercesPopupMarkers != "undefined")
				{
				  for(cont_i=0;cont_i < Site.CommercesPopupMarkers.length;cont_i++)
				  {
				  	if(typeof Site.CommercesPopupMarkers[cont_i] != "undefined")
				  	{
				  		Site.CommercesPopupMarkers[cont_i].destroy();
				  	}
				  }
				}*/
				if(typeof Site.markers_global =='undefined')
				{
					Site.limpiarMarcadores();
					Site.markers_global = new OpenLayers.Layer.Markers("points_dir");
					Site.Map.map.olMap.addLayer(Site.markers_global);
					Site.AddresPopupMarkersRoute = new Array(2);
					Site.RouteFromOk=false;
					Site.RouteToOk=false;
				}
 

				/**/
			
			id_route_=0;
			CurrentLayer=Site.RouteFromLayer;
			Site.ShowObject('RouteListFROM',true);
			Site.putHTML('RouteListFROM','');
			Site.putHTML('RouteItemFROM','')
			color_icon='green-star.png';
			Site.RouteFromLayer.removeAllMarkers();
			title=Site.Locale.get('lbl_from').toUpperCase();	
			fromto='from';
			}
		if(ul_id=='RouteListTO') {	
				if(typeof Site.markers_global =='undefined')
				{
					Site.limpiarMarcadores();
					Site.markers_global = new OpenLayers.Layer.Markers("points_dir");
					Site.Map.map.olMap.addLayer(Site.markers_global);
					Site.AddresPopupMarkersRoute = new Array(2);
					Site.RouteFromOk=false;
					Site.RouteToOk=false;
				}

				
			id_route_=1;
			CurrentLayer=Site.RouteToLayer;
			Site.ShowObject('RouteListTO',true);
			Site.putHTML('RouteListTO','');
			Site.putHTML('RouteItemTO','')
			color_icon='blue-star.png';
			Site.RouteToLayer.removeAllMarkers();
			title=Site.Locale.get('lbl_to').toUpperCase();
			fromto='to';
			}
	
		if (Site.q.totalCount>0){
			Site.AddressMarkers = Array(Site.q.totalCount);
			Site.AddresPopupMarkers = Array(Site.q.totalCount);
			var SearchType = product+'/'+service;
			var addr;
			switch(SearchType){
			case 'geocoding/searchstreet':// FIND BY ADDRESS
					if(Site.q.totalCount>0 && Site.q.searchstreet[0].lon){
						// add head info to the list
						html=Site.Searcher.Route_html_list_start;
						if(Site.q.totalCount==1){	
							html+=Site.Searcher.Route_html_list_titleFROM('',title,'');
							if(Site.q.searchstreet[0].number!=null){tmp=' ' +Site.q.searchstreet[0].number}else{tmp=''}	
							addr=Site.q.searchstreet[0].classStreet.toUpperCase()+' '+
										 Site.q.searchstreet[0].name.toUpperCase() + tmp+', '+
										 Site.q.searchstreet[0].district.toUpperCase();
							Site.Searcher.SetRoute(fromto,addr, Site.q.searchstreet[0].lon,Site.q.searchstreet[0].lat,Site.q.searchstreet[0].idArc);
						}else{
							if(fromto=='from'){
								Site.RouteFromOk=false;
							}
							if(fromto=='to'){
								Site.RouteToOk=false;
							}
							var tit=title+	' (' +Site.Locale.get('lbl_selectoption') + ' ' + Site.q.totalCount+ ' ' + Site.Locale.get('lbl_options') +')';
							html+=Site.Searcher.Route_html_list_titleFROM('',tit,'');
						}
						
						for (var i=0;i<Site.q.totalCount;i++){
							if (Site.q.searchstreet[i].lon && Site.q.searchstreet[i].lat){
								if (Site.q.totalCount == 1) {
									marker			= '/img/markers/'+color_icon; 
									showpopup		= false; 
									add_i_to_text	= '';
									iconH			= 40;
									iconW			= 33;
									offX			= -12;
									offY			= -30;
									tit				= title
									Site.putHTML('RouteListTitle', Site.Locale.get('lbl_findroute'));
									} 
								else {
									marker			= '/img/markers/'+color_icon; 
									showpopup		= false; 
									add_i_to_text	= ''; //(i+1)+') ';
									iconH			= 40;
									iconW			= 33;
									offX			= -12;
									offY			= -30;
									Site.putHTML('RouteListTitle', Site.Locale.get('lbl_findroute'));
									}
							
								if(Site.q.searchstreet[0].number!=null) {
									tmp = ' ' +Site.q.searchstreet[0].number;
									}
								else {
									tmp = '';
									}	
								
								addr = Site.q.searchstreet[i].classStreet.toUpperCase() 
										+ ' ' + Site.q.searchstreet[i].name.toUpperCase() 
										+ tmp + ', '
										+ Site.q.searchstreet[i].district.toUpperCase();
								html += Site.Searcher.Route_html_list_item(i
																		   ,'address'+i
																		   ,add_i_to_text+addr
																		   ,'Site.Map.CenterandZoomRoute('	+ Site.q.searchstreet[i].lon + ','
																										+ Site.q.searchstreet[i].lat +
																										',13);Site.Searcher.SetRoute(\''+fromto+'\',\''+addr+'\','
																										+ Site.q.searchstreet[i].lon + ','
																										+ Site.q.searchstreet[i].lat + ','
																										+ Site.q.searchstreet[i].idArc + ');');
								var html_popup_content = '<div  class="popupAddressTit"><b>' 
														+ title
														+ '</b></div><br><div class="popupAddressText" onclick="Site.Searcher.SetRoute(\''
														+ fromto + '\',\'' + addr + '\','
														+ Site.q.searchstreet[i].lon + ',' + Site.q.searchstreet[i].lat
														+ ',' + Site.q.searchstreet[i].idArc+');">'
														+ Site.q.searchstreet[i].classStreet.toUpperCase() + ' ' 
														+ Site.q.searchstreet[i].name.toUpperCase() 
														+ tmp + '<br>'
														+ Site.q.searchstreet[i].district.toUpperCase()
														+ '</div>';
												
								Site.LastSearched = 	Site.Locale.get('tit_address')+": "+Site.q.searchstreet[i].classStreet.toUpperCase()+' '+
																	Site.q.searchstreet[i].name.toUpperCase()+
																	tmp+'<br>'+
																	Site.q.searchstreet[i].district.toUpperCase();
																	//VM CreateIconMarkerRoute //CreateIconMarker
								Site.Map.CreateIconMarkerRoute(id_route_,
											  Site.q.searchstreet[i].lon,
											  Site.q.searchstreet[i].lat,
											  marker,
											  iconW,iconH,    // icon size
											  CurrentLayer,
											 html_popup_content,
											  showpopup,
											  offX,offY // offset
											  );
								}				
							}
						html+=Site.Searcher.Route_html_list_end;
						Site.get(ul).dom.innerHTML=html;
						}
					else { 
						html=Site.Searcher.Route_html_list_start;
						html+=Site.Searcher.Route_html_list_titleFROM('',title,'');
						html+=Site.Searcher.Route_html_list_itemNotFound(0,'address0', Site.Locale.get('lbl_noaddressfound'),'');
						html+=Site.Searcher.Route_html_list_end;
						Site.putHTML(ul,html);
						Site.ShowLoading('loadingglobal',false);
						}
					break;
				case 'geocoding/searchintersection':             // FIND BY INTERSECTION
						Site.putHTML('RouteListTitle', Site.Locale.get('lbl_findroute'));
							html=Site.Searcher.Route_html_list_start;
							
							if(Site.q.totalCount==1){	
									html+=Site.Searcher.Route_html_list_titleFROM('',title,'');
									
									 addr=Site.q.searchintersection[0].classStreet1.toUpperCase()+' '+
												Site.q.searchintersection[0].nameStreet1.toUpperCase()+' / '+
												Site.q.searchintersection[0].classStreet2.toUpperCase()+' '+
												Site.q.searchintersection[0].nameStreet2.toUpperCase();
									
									
									Site.Searcher.SetRoute(fromto,addr, Site.q.searchintersection[0].lon,Site.q.searchintersection[0].lat,0);
									
									
								}else{
									
									if(fromto=='from'){
										Site.RouteFromOk=false;
									}
									if(fromto=='to'){
										Site.RouteToOk=false;
									}
									
									var tit=title+	' (' +Site.Locale.get('lbl_selectoption') + ' ' + Site.q.totalCount+ ' ' + Site.Locale.get('lbl_options') +')';
									html+=Site.Searcher.Route_html_list_titleFROM('',tit,'');
								}
						
						
								for (var i=0;i<Site.q.totalCount;i++){
									
								   var  htmlpopup='<div  class="popupAddressTit"><b>' +title + ' ' + Site.Locale.get('tit_intersection')+
												'</b></div><br><div class="popupAddressText" onclick="Site.Map.CenterandZoomRoute('+
												Site.q.searchintersection[i].lon+','+ Site.q.searchintersection[i].lat+',12);">'+
												Site.q.searchintersection[i].classStreet1.toUpperCase()+' '+
												Site.q.searchintersection[i].nameStreet1.toUpperCase()+' '+Site.Locale.get('lbl_with')+'<br>'+
												Site.q.searchintersection[i].classStreet2.toUpperCase()+' '+
												Site.q.searchintersection[i].nameStreet2.toUpperCase()+'</div>';
																						
				   
									 var sinter=Site.q.searchintersection[i].classStreet1.toUpperCase()+' '+
												Site.q.searchintersection[i].nameStreet1.toUpperCase()+' / '+
												Site.q.searchintersection[i].classStreet2.toUpperCase()+' '+
												Site.q.searchintersection[i].nameStreet2.toUpperCase();
									
										
										Site.LastSearched = Site.Locale.get('tit_intersection') +': ' + sinter;
	
									
										html+=Site.Searcher.Route_html_list_item(i,'address'+i,
																		  sinter,"Site.Map.CenterandZoomRoute("+ Site.q.searchintersection[i].lon+","+ Site.q.searchintersection[i].lat+
																						",12);");
										
											if (Site.q.totalCount==1){
															//Only obtain one address 			
															// set marker style
															marker='/img/markers/'+color_icon; 
															showpopup=false; add_i_to_text='';
															iconH=40;iconW=33;
															offX=-12;offY=-30;
															
															//Site.putHTML('RouteListTitle', Site.Locale.get('tit_address'));
							
															
													}else{
															//Get more than one related address							
															// set marker style
															//marker= '/img/estrellaD'+(i+1)+'.gif'; 
															marker='/img/markers/'+color_icon; 
															showpopup=false; add_i_to_text=(i+1)+') ';
															iconH=40;iconW=33;
															offX=-12;offY=-30;
															
															//Site.putHTML('RouteListTitle', Site.Locale.get('tit_addresses'));
							
													}
																	
										Site.Map.CreateIconMarker(i,
													  Site.q.searchintersection[i].lon,
													  Site.q.searchintersection[i].lat,
													  marker,
													  iconW,iconH,    // icon size
													  CurrentLayer,
													  htmlpopup,
													  showpopup,
													  offX,offY // offset
													  );
																			
											}
						html+=Site.Searcher.Route_html_list_end;
						Site.get(ul).dom.innerHTML=html;
						break;
				default:	                                                 // OTHER RESULTS
				alert('default');
						break;
			} //End Switch
		} // If there is more than one record...
	if(Site.RouteFromOk==true && Site.RouteToOk==true){
		Site.DrawRoute();
		}
	}; // End search address function

	Site.Searcher.SetRoute = function(str_fromto,addr,lon,lat,idstreet){
		var routelist='RouteList'+str_fromto.toUpperCase();
		var routeitem='RouteItem'+str_fromto.toUpperCase();
		var title;
		
		if (str_fromto=='from'){
			title=Site.Locale.get('lbl_from').toUpperCase();
			Site.ShowObject('RouteListFROM',false);
			Site.RouteFromIdStreet = idstreet;
			Site.RouteFromLon=lon;
			Site.RouteFromLat=lat;
			Site.RouteFromOk=true;
			Site.RouteFromText=addr;
		}else{
			title=Site.Locale.get('lbl_to').toUpperCase();
			Site.ShowObject('RouteListTO',false);
			Site.RouteToIdStreet = idstreet;
			Site.RouteToLon=lon;
			Site.RouteToLat=lat;
			Site.RouteToOk=true;
			Site.RouteToText=addr;
		}

		Site.ShowObject(routelist,false);
		html=Site.Searcher.Route_html_list_start;
		html+=Site.Searcher.Route_html_list_titleFROM('',title,'');
		html+=Site.Searcher.Route_html_list_item(i,'address'+i, addr,'Site.Map.CenterandZoomRoute('+ lon+','+ lat+',13);');
		html+=Site.Searcher.Route_html_list_end;
		Site.putHTML(routeitem,html);
		Site.ShowLoading('loadingglobal',false);
		if(Site.RouteFromOk==true && Site.RouteToOk==true){
			//alert("paso con datos"+Site.RouteToLon+","+Site.RouteToLat+" -- "+Site.RouteFromLon+","+Site.RouteFromLat+"");
				Site.DrawRoute();
		}
	
	}
	
	
