store_details = "";
address_lat = "";
address_long = "";
zoom = "";

function doSearch(form){

	if (form.name == 'retailersearch'){
		var search_criteria_array = form.search_criteria;
		for(var i=0;i<search_criteria_array.length;i++){
			if (search_criteria_array[i].checked) {	
				var search_criteria = search_criteria_array[i].value;
			}
		}
		var input = form.input.value;
		var state = form.sponsor.value;
		if (search_criteria == 'city'){
			var address = input+' , '+state;
			zoom = 10;
		} else {
			var address = state;
			zoom = 7;
		}
	} else {
		var address = form.address.value;
		var radius = form.radius.value;
		var state = '0';
		var input = '0';
		zoom = 10;
	}

	var url = "/retailers/retailersearch/";
	var strParams = "search_criteria="+search_criteria+"&input="+input+"&state="+state+"&address="+address+"&radius="+radius;
	var loader = new net.ContentLoader(url,showResponse,null,"POST",strParams);
}

function showResponse(){
	var results_table = document.getElementById('results');
	var jsonTxt = this.req.responseText;
	var jsonObj= eval("("+jsonTxt+")");
	address_lat = jsonObj.address_lat;
	address_long = jsonObj.address_long;
	if (address_lat == ''){
		results_table.innerHTML = 'Sorry could not find your address, please try search again with City, or County, or State';
		return;
	}
	if (jsonObj.results){
		store_details = jsonObj.results;
		drawtable(null);
	} else {
		results_table.innerHTML = 'Sorry no results matched your query';
	}
}

function drawtable(lower_limit){

	var letter = 0;
	var letter_index = 0;

	var lower_limit;
	var upper_limit;
	var pagination_limiter = 10;
	var lowest;
	var store_locations_array = new Array;
	var details_array = new Array;

	if (lower_limit + pagination_limiter > store_details.length){
		upper_limit = store_details.length;
	} else {
		upper_limit = lower_limit + pagination_limiter;
	}


	if (lower_limit == null){
		lower_limit = 0;
	}
	lowest = lower_limit + 1;
	
	var results_table = document.getElementById('results');
	var alt = '';
	var style = '';
	var styleindex = 1;
	var style1 = 'background-color:#ffffff';
	var style2 = 'background-color:#dddddd';
	var table = '<span style="font-size: 1.5em; color: red;">*Please call retailer to ensure products are in stock.</span><br/><br/>';
	table += 'Use the +/- buttons to zoom in/out.  You can click on the letter to view the store details.<br/>';
	table += 'Total number of retailers returned: ' +store_details.length;
	table += '<br/>Viewing Results: ' +lowest+ ' to '+upper_limit+' <br/>';
	table += '<div style="font-family:Arial;"><table width="100%">';
	table += '<tr><th>Store Name</th><th>Store Address</th><th>City, State Zip</th><th>Store Phone</th><th>County</th><th>Map Letter</th><th>Sold Out</th>'; 

	for (i=lower_limit;i<upper_limit;i++){
		if (store_details[i].GCLatitude != null) {
			letter = String.fromCharCode("A".charCodeAt(0) + letter_index);
			if (letter_index > 10){
				letter_index = 0;
			} else {
				letter_index++;
			}
		} else {
			letter = '';
		}
		var phonetext = store_details[i].StorePhone;
		if (null == phonetext) phonetext = ''; else phonetext = phonetext.toUpperCase();
		styleindex = styleindex * -1;
		if (styleindex > 0) style=style1; else style=style2;
		table += '</tr><tr class="'+alt+'" style="'+style+'">' +
			'<td>' + store_details[i].Name.toUpperCase() + '</td>' +
		 	'<td>' + store_details[i].Address.toUpperCase() + '</td>' +
		 	'<td>' + store_details[i].CSZ.toUpperCase() + '</td>' +
		 	'<td>' + phonetext + '</td>' +
		 	'<td>' + store_details[i].County.toUpperCase() + '</td>' +
			'<td style="text-align:center;">' + letter.toUpperCase() + '</td>' +
			'<td>' + store_details[i].SoldOut.toUpperCase() + '</td>' +
		 	'</tr>';
		store_locations_array.push(store_details[i].GCLatitude,store_details[i].GCLongitude);
		details_array.push(store_details[i].Name,store_details[i].Address,store_details[i].CSZ,store_details[i].StorePhone,store_details[i].SoldOut);
	};

	table += '</table></div>';
	if (lower_limit != 0){
	table += '<input type="button" value="Previous" onClick="drawtable('+(lower_limit-pagination_limiter)+')" id="prev">';
	} 
	if (upper_limit < store_details.length){
	table += '<input type="button" value="Next" onClick="drawtable('+i+')" id="next">';
	}
	results_table.innerHTML = table;
	drawmap(store_locations_array,details_array);

}

function drawmap(store_locations_array,details_array){

	var letter_index = 0;

	if (store_locations_array != 0){
		var map = new GMap2(document.getElementById("map"));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		var home_point = new GLatLng(address_lat, address_long)
        	map.setCenter(home_point, zoom);
		map.addOverlay(new GMarker(home_point));

		// Our info window content
		var infoTabs = [
		  	new GInfoWindowTab("Store Details", "Feature Not Yet Implemented"),
		    	new GInfoWindowTab("Directions", "Feature Not Yet Implemented")
		];

		// Create a base icon for all of our markers that specifies the
		// shadow, icon dimensions, etc.
		var baseIcon = new GIcon();
		baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
		baseIcon.iconSize = new GSize(20, 34);
		baseIcon.shadowSize = new GSize(37, 34);
		baseIcon.iconAnchor = new GPoint(9, 34);
		baseIcon.infoWindowAnchor = new GPoint(9, 2);
		baseIcon.infoShadowAnchor = new GPoint(18, 25);

		// Creates a marker whose info window displays the letter corresponding
		// to the given index.
		function createMarker(point, index) {
			// Create a lettered icon for this point using our icon class
			var letter = String.fromCharCode("A".charCodeAt(0) + index);
			var icon = new GIcon(baseIcon);
			icon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
			var marker = new GMarker(point, icon);

			GEvent.addListener(marker, "click", function() {
			  marker.openInfoWindowHtml("<b>Store Details</b><br/>"+ details_array[index*4] +"<br/>"+details_array[(index*4)+1]+"<br/>"+details_array[(index*4+2)]+"<br/>"+details_array[(index*4)+3]);
			  });

		   return marker;
		}

		var bounds = map.getBounds();
		var southWest = bounds.getSouthWest();
		var northEast = bounds.getNorthEast();
		var lngSpan = northEast.lng() - southWest.lng();
		var latSpan = northEast.lat() - southWest.lat();
	 	for (var i=0;i<store_locations_array.length; i++){
			var point = new GLatLng(store_locations_array[i],store_locations_array[i+1]);
			map.addOverlay(createMarker(point, letter_index));
			letter_index++;
			i++;
		}
	} else {
		var map_parent = document.GetElementById('map');
		map_parent[0].parentNode.removeChild(map_parent[0]);
	}
	
	
}
