var map = null;
var geocoder = null;
var geo_locations = null;
var dealer_list = null;
var available_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':7,'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'}
};

$(document).ready(function(){
	 $("#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)
		{
			var city = $('#input_city').attr('value');
			var km = $('#input_distance').attr('value');
			
			$('#from_search_form').attr('value',1);
			
			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');
	});
	$('#fd_btn').bind('click', function(e){
		$('#from_search_form').attr('value',1);
		
		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','');
			
		}
		return false;
	})
});

function setState(st) {
	$('#input_state').attr('value',st);
	$('#from_search_form').attr('value',0);
	
	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;
}

 function getSuburbs(city,km){
    geocoder = new GClientGeocoder();
    if (geocoder) {
        geocoder.getLocations(
          city+", Australia",
          function(point) {
            if (!point || point['Placemark'].length >1) {
            	$('#postcode_error').show().fadeOut(4000);
            } 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 getDealerList(geo_locations,state)
{
	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):'')+'&from_search_form='+$('#from_search_form').val(),
		  dataType: "json",
		  success: function(data){
		  	available_dealer = data;
			setDealers(geo_locations, available_dealer);
		} ,
		  error:function(){$('#result_error').show().fadeOut(4000);}
	});
}

function setDealers(geo_locations, available_dealer)
{
	if(available_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(available_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&&$('#from_search_form').val()==1)?(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(available_dealer[i].lat, available_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?10:z;
	     map.setZoom(z);
	}
}

function writeDealer(dealer,distance )
{
	 var d = (distance!=0&&$('#from_search_form').val()==1)?('<span class="distance">'+distance+' KM</span>'):'';
	 str = '<div class="table" id="dealer_div_'+dealer.id+'">';
	 str += '<div class="row">';
	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>';

	  if (parseInt(dealer.dealer_type)!=3) {
		  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!=null)?'<li><a href="http://'+dealer.url+'" class="red" target="_blank">'+dealer.url+'</a></li>':'<li>N/A</li>');
		 str += '</ul></div>';
		 
		 str += '<div class="tb_col5"><ul>';
		  str += '<button class="test-drive" onclick="gotoTestDrive('+dealer.id+')"></button></div>';
		 str += '</ul></div>';
	 }
	 
	 if(dealer.serviceAddress !='' && dealer.serviceAddress !="NULL" && parseInt(dealer.dealer_type)!=2){
	  str += '<div class="tb_subtitle">';
		  if (parseInt(dealer.dealer_type)!=3) {
			 str += '<span class="sm">Service Center</span>';
		  }
    	 str += '<div class="tb_col1">';
        	 str += '<ul style="margin:0px">';
        	 if (parseInt(dealer.dealer_type)==3) {
        		 str += '<li class="th" style="color:#9E1225">address</li>';
        	 }
              str += '<li>'+dealer.serviceAddress+', ' +dealer.serviceSuburb+', '+dealer.serviceState+', '+dealer.servicePostcode+'</li>';
             str += '</ul>';
         str += '</div><!--/tb_col1-->';
         str += '<div class="tb_col2">';
        	 str += '<ul style="margin:0px">';
        	 if (parseInt(dealer.dealer_type)==3) {
        		 str += '<li class="th" style="color:#9E1225">phone / fax</li>';
        	 }
			  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 style="margin:0px">';
             if (parseInt(dealer.dealer_type)==3) {
            	 str += '<li class="th" style="color:#9E1225">opening hours</li>';
             }
             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">';
			  if (parseInt(dealer.dealer_type)==3) {
	        		 str += '<li class="th" style="color:#9E1225">website</li>';
			  }
			  str += '<li>';
             str += (dealer.url!=null)?('<a href="http://'+dealer.url+'" target="_blank">'+dealer.url+'</a>'):'';
             str += '</li>';
             str += '</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;
}
