var map = null;
var geocoder = new GClientGeocoder();
var geo_locations = null;
var dealer_list = null;
var avaliable_dealer = null;
var geo_center = null;
var state_geo = {
		'ACT':{'lat':-35.44500852,'lon':149.0432739,'zoom':9,'km':0,'city':'ACT'},
		'NSW':{'lat':-33.83391995,'lon':146.6015625,'zoom':5,'km':0,'city':'NSW'},
		'NT':{'lat':-12.95102922,'lon':131.72607421,'zoom':5,'km':0,'city':'NT'},
		'QLD':{'lat':-20.63278425,'lon':145.2832031,'zoom':4,'km':0,'city':'QLD'},
		'SA':{'lat':-32.97180378,'lon':137.2412109,'zoom':5,'km':0,'city':'SA'},
		'TAS':{'lat':-41.9676592,'lon':146.5136719,'zoom':6,'km':0,'city':'TAS'},
		'VIC':{'lat':-36.35052701,'lon':144.5800781,'zoom':5,'km':0,'city':'VIC'},
		'WA':{'lat':-25.32416653,'lon':122.4316406,'zoom':4,'km':0,'city':'WA'}
				};	

function setState(st)
{
	$('#input_state').attr('value',st);
	
	var km = $('#input_distance').attr('value');
	var a = {'search':st,'suburb':state_geo[st],'km':km,'lon':state_geo[st].lon,'lat':state_geo[st].lat};
	
	$('#input_lat').attr('value', state_geo[st].lat);
	$('#input_lon').attr('value', state_geo[st].lon);
	

	if($('#input_lat').attr('value')=='' ||  $('#input_lon').attr('value')=='')
	{
		$('#result_error').show().fadeOut(4000);	
	}
	getDealerList(a,st);

}

  
 function isPostcode(code){
    var s = parseInt(code);
    var r = false;
    if(code.length==4 && typeof(s)=='number'){
        r = true;
    }
    return r;
}



$(document).ready(function(){
		

		
		$('#input_city').bind('focus',function(){
			$('#input_city_error').css('display','none');
		});
		
		$("#content-slider-left").slider({
		slide: function(e,ui)
		{
			$("#content-slider-left>a").html(ui.value+'km');
			$('#input_distance').val(ui.value);
		},
		stop:function(e,ui)
		{
			if(geo_locations!=null)
			{
				updateDealerByDistance(ui.value);
			}
			var city = $('#input_city').attr('value');
			var km = $('#input_distance').attr('value');
			
			if(city!='' && isPostcode(city))
			{
				getSuburbs(city,km);
			}else{
				$('#input_city_error').show().fadeOut(4000);
				$('#input_city').attr('value','');
				
			}
			
		},
		min:5,
		max:300,
		step: 5,
		value:150
	  });
	
	
	
	$('.input').focus(function(){
		$(this).css({'color':'#555555','backgroundColor':'#FFFFFF'}).attr('value','');
		
	});
	$('.input').blur(function(){
		$(this).css('backgroundColor','#FFF6BF');
		/*
		if($(this).attr('value')=='')
				{
					$(this).next("span").fadeIn('fast').fadeOut(4000);
				}
		*/
	});
	$('#fd_btn').bind('click', function(e){
		var city = $('#input_city').attr('value');
		var km = $('#input_distance').attr('value');
	
		if(city!='' && isPostcode(city))
		{
			getSuburbs(city,km);
			//geo_locations = {'search':'2090', 'city':'2090, Australia','lat':'-33.795238','lon':'151.287369','km':'15'};
			//getDealerList(geo_locations);
		}else{
			$('#input_city_error').show().fadeOut(4000);
			$('#input_city').attr('value','');
			
		}
		return false;
	});
});

function updateDealerByDistance()
{
	
}

 function getSuburbs(city,km){
    geocoder = new GClientGeocoder();
    if (geocoder) {
        geocoder.getLocations(
          city+", Australia",
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {
                var pl = point['Placemark'].length;
				var tttt = [];
				for(var j =0;j<pl;j++){
					tttt [j]={'search':city,'suburb':point['Placemark'][j]['address'],'km':km,'lon':point['Placemark'][j]['Point']['coordinates'][0],'lat':point['Placemark'][j]['Point']['coordinates'][1]};
            	
				}
				geo_locations = tttt[0];
				
				if(tttt.length==1)
				{
					getDealerList(geo_locations,0);
					
				}
            }
          });
      }

}


function getDealerByState(state)
{
	var str='';
	$.each(dealers_all,function(i,dealer){
		
		if(dealer.Dealer.state==state)
		{
			str+=writeDealer(dealer.Dealer, 0);
		}
		
	})
	if (str != '') {
			$('#dealer_list_div').html(str);
		}
		else {
			$('#result_error').show().fadeOut(4000);
	}
}



function getDealerList(geo_locations,state)
{
	//var u='json_dealer_location/'+geo_locations.lat+';'+geo_locations.lon+';'+geo_locations.km+';'; //
	var str = '';
	$.ajax({
		  type: "POST",
		  url: curURL+'dealers/json_dealer_location',
		  data: 'lat='+geo_locations.lat+'&lon='+geo_locations.lon+'&km='+geo_locations.km+((state!=0)?('&state='+state):''),
		  dataType: "json",
		  success: function(data){
		  	avaliable_dealer = data;
			setDealers(geo_locations, avaliable_dealer);
			

		} ,
		  error:function(){$('#result_error').show().fadeOut(4000);}
		 
	});
}

	
function setDealers(geo_locations, avaliable_dealer)
{
	if(avaliable_dealer.length!=0)
	{
		 geo_center = new google.maps.LatLng(geo_locations.lat, geo_locations.lon);
		
		 map.setCenter(geo_center, 5);
		 map.clearOverlays();
		 var bounds = new GLatLngBounds();
		 var str = '';
		 
	  	$.each(avaliable_dealer, function(i,item){
		 	$.each(dealers_all,function(j,dealer){
				if(dealer.Dealer.id==item.id && item.lat!='NULL')
				{
					
					str+=writeDealer(dealer.Dealer,item.distance);
					var infoWindowText = '<span style="color:red">'+dealer.Dealer.name+'</span>     '
								+((item.distance!=0)?(item.distance+"KM"):"")+"<br />"
								+dealer.Dealer.address+"<br />"
								+dealer.Dealer.suburb+" "+dealer.Dealer.state+" "+dealer.Dealer.postcode+" <br />"
								+dealer.Dealer.workPhone+" <br />"
								+((dealer.Dealer.url!='')?('<a href="http://'+dealer.Dealer.url+'" class="red" target="_blank">'+dealer.Dealer.url+'</a>'):'');
					var point = new google.maps.LatLng(avaliable_dealer[i].lat, avaliable_dealer[i].lon);
					bounds.extend(point);
					var gMarker1 = new GMarker(point,markerOptions);
					GEvent.addListener(gMarker1, 'click', function() {
						gMarker1.openInfoWindowHtml(infoWindowText);
					});
					map.addOverlay(gMarker1);
				}
			});
		
		 });
		 if(str!='')
		 {
		 	$('#state_flash').css('display','none');
			$('#map_canvas').css('visibility','visible');
		 	document.getElementById('dealer_list_div').innerHTML = str;
		 }else{
		 	$('#result_error').show().fadeOut(4000);
		 }
		 var z = map.getBoundsZoomLevel(bounds);
	     z = z>10?5:z;
	     map.setZoom(z);
	}


}


	function toDealerSelector()
	{
		var city = $('#input_city').attr('value');
		var km = $('#input_distance').attr('value');

		if (city=='') {
			$('#input_city_error').show().fadeOut(3000);
			$('#input_city').attr('value', '');
		}else{
			setLatLon(city, km);
			
			//
		}
		return false;
		
	}
	
	function setLatLon(city, km)
	{
	    if (geocoder) {
	        geocoder.getLocations(
	          city+", Australia",
	          function(point) {
			  
	            if (!point) {
	              alert(address + " not found");
	            } else {
	                var pl = point['Placemark'].length;
					var tttt = [];
					for(var j =0;j<pl;j++){
						tttt [j]={'search':city,'suburb':point['Placemark'][j]['address'],'km':km,'lon':point['Placemark'][j]['Point']['coordinates'][0],'lat':point['Placemark'][j]['Point']['coordinates'][1]};
	            		
					}
					
					if(tttt.length==1)
					{
						
						$('#input_lat').attr('value', tttt[0].lat);
						$('#input_lon').attr('value', tttt[0].lon);
						
						if($('#input_lat').attr('value')!='' && $('#input_lon').attr('value')!='')
						{
							document.getElementById('search-dealer-form').submit();
						}
					}else{
							
						$('#result_error').show().fadeOut(4000);
					}
	                    
	            }
	          });
	      }
	}
function writeDealer(dealer,distance )
{
	 var d = (distance!=0)?('<span class="sm distance">'+distance+' KM</span>'):'';
	 str = '<div class="table" id="dealer_div_'+dealer.id+'">';
	 str += '<div class="row">';
	 //str += '<input type="checkbox" value="'+item.Dealer.id+'" name="dealer.ID" id="dealer_'+item.Dealer.id+'" class="dealer"/>';
	str += '<div class="tb_title">';
	 str += '	<table width="100%">';
	 str += '			<tr>';
	 str += '				<td style="width:90%">';
	 str += '					<h2>'+dealer.name+'</h2>'; //+((dealer.isAssuranceDealer==1)?' <span class="sm">Assurance Dealer</span>':'')
	 str += '				</td>';
	 str += '				<td algin="right" >'+d+'</td>';
	 str += '			</tr>';
	 str += '		</table>';
	  str += '		</div>';
	
	 str += '<div class="tb_col1"><ul>';
	 str += '<li class="th">address</li>';
	
	  str += '<li>'+dealer.address+', ' +dealer.suburb+', '+dealer.state+', '+dealer.postcode+'</li>';
	
	 str += '</ul></div>';
	 
	 str += '<div class="tb_col2"><ul>';
	 str += '<li class="th">phone / fax</li>';
	 str += '<li><span style="color: #AF2325; font-weight:bold;">T: </span>'+dealer.workPhone+'</li>';
	 str += '<li><span style="color: #AF2325; font-weight:bold;">F: </span>'+dealer.fax+'</li>';
	 str += '</ul></div>';
	 str += '<div class="tb_col3"><ul>';
	 str += '<li class="th">opening hours</li>';
	 str += '<li><span style="color: #AF2325; font-weight:bold;">Sales</span><br />'+((dealer.openingHour!=null)?dealer.openingHour:'N/A')+'</li>';
	 str += '</ul></div>';
	 
	 str += '<div class="tb_col4"><ul>';
	 str += '<li class="th">website</li>';
	 str += (dealer.url!='')?('<li><a href="http://'+dealer.url+'" target="_blank">'+dealer.url+'</a></li>'):'';
	 str += '</ul></div>';
	 
	 str += '<div class="tb_col5"><ul>';
	// str += ' <img src="/app/webroot/images/button_1.gif" />';
	  str += '<button class="test-drive" onclick="gotoTestDrive('+dealer.id+')"></button></div>';
	 str += '</ul></div>';
	 
	 
	 //if((dealer.serviceAddress !='' && dealer.serviceAddress !="NULL" ) && dealer.serviceAddress!=dealer.address){
	 if(dealer.serviceAddress !='' && dealer.serviceAddress !="NULL" ){
	  str += '<div class="tb_subtitle">';
		 str += '<span class="sm">Service Center</span>';
    	 str += '<div class="tb_col1">';
        	 str += '<ul>';
              str += '<li>'+dealer.serviceAddress+', ' +dealer.serviceSuburb+', '+dealer.serviceState+', '+dealer.servicePostcode+'</li>';
             str += '</ul>';
         str += '</div><!--/tb_col1-->';
         str += '<div class="tb_col2">';
        	 str += '<ul>';
			 if(dealer.serviceWorkPhone!=null){
				 str += '<li><span style="color: #AF2325; font-weight:bold;">T: </span>'+dealer.serviceWorkPhone+'</li>';
			  }
             str += '</ul>';
         str += '</div><!--/tb_col2-->';
         str += '<div class="tb_col3">';
             str += '<ul>';
              str += '<li><span style="color: #AF2325; font-weight:bold;">Service</span><br />'+((dealer.serviceHour!=null)?dealer.serviceHour:'N/A')+'</li>';
			 str += '<li><span style="color: #AF2325; font-weight:bold;">Parts</span><br />'+((dealer.partsHour!=null)?dealer.partsHour:'N/A')+'</li>';
             str += '</ul>';
         str += '</div><!--/tb_col3-->';
         str += '<div class="tb_col4">';
             str += '<ul style="margin:0px"><li>';
             str += (dealer.url!=null)?('<a href="http://'+dealer.url+'" target="_blank">'+dealer.url+'</a>'):'';
             str += '</li></ul>';
         str += '</div><!--/tb_col4-->';
        str += ' <hr>';
	 str += '</div><!--/tb_subtitle-->';
	 }
	 
	 
	 str += '</div>';
	 str += '</div>';
	 return str;
}

function gotoTestDrive(id)
{
	window.location =curURL+'testdrive/step3/45/'+id;
}		