var srp_map;

var custom_icons = [];

google.load("maps", "2");

function srp_custom_icons(){

	var iconSchools;

	iconSchools = new GIcon(); 

	iconSchools.title = 'Schools';

	iconSchools.image = 'http://labs.google.com/ridefinder/images/mm_20_brown.png';

	iconSchools.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';

	iconSchools.iconSize = new GSize(12, 20);

	iconSchools.shadowSize = new GSize(22, 20);

	iconSchools.iconAnchor = new GPoint(6, 20);

	iconSchools.infoWindowAnchor = new GPoint(5, 1);

	

	var iconGrocery;

	iconGrocery = new GIcon(); 

	iconGrocery.title = 'Grocery Stores';

	iconGrocery.image = 'http://labs.google.com/ridefinder/images/mm_20_yellow.png';

	iconGrocery.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';

	iconGrocery.iconSize = new GSize(12, 20);

	iconGrocery.shadowSize = new GSize(22, 20);

	iconGrocery.iconAnchor = new GPoint(6, 20);

	iconGrocery.infoWindowAnchor = new GPoint(5, 1);

	

	var iconRestaurants;

	iconRestaurants = new GIcon(); 

	iconRestaurants.title = 'Restaurants';

	iconRestaurants.image = 'http://labs.google.com/ridefinder/images/mm_20_purple.png';

	iconRestaurants.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';

	iconRestaurants.iconSize = new GSize(12, 20);

	iconRestaurants.shadowSize = new GSize(22, 20);

	iconRestaurants.iconAnchor = new GPoint(6, 20);

	iconRestaurants.infoWindowAnchor = new GPoint(5, 1);

	

	var iconHospitals;

	iconHospitals = new GIcon(); 

	iconHospitals.title = 'Hospitals';

	iconHospitals.image = 'http://labs.google.com/ridefinder/images/mm_20_blue.png';

	iconHospitals.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';

	iconHospitals.iconSize = new GSize(12, 20);

	iconHospitals.shadowSize = new GSize(22, 20);

	iconHospitals.iconAnchor = new GPoint(6, 20);

	iconHospitals.infoWindowAnchor = new GPoint(5, 1);

	

	var iconGolf;

	iconGolf = new GIcon(); 

	iconGolf.title = 'Golf Cources';

	iconGolf.image = 'http://labs.google.com/ridefinder/images/mm_20_green.png';

	iconGolf.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';

	iconGolf.iconSize = new GSize(12, 20);

	iconGolf.shadowSize = new GSize(22, 20);

	iconGolf.iconAnchor = new GPoint(6, 20);

	iconGolf.infoWindowAnchor = new GPoint(5, 1);

	

	var iconBanks;

	iconBanks = new GIcon(); 

	iconBanks.title = 'Banks';

	iconBanks.image = 'http://labs.google.com/ridefinder/images/mm_20_white.png';

	iconBanks.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';

	iconBanks.iconSize = new GSize(12, 20);

	iconBanks.shadowSize = new GSize(22, 20);

	iconBanks.iconAnchor = new GPoint(6, 20);

	iconBanks.infoWindowAnchor = new GPoint(5, 1);

	

	var iconGasStations;

	iconGasStations = new GIcon(); 

	iconGasStations.title = 'Gas Stations';

	iconGasStations.image = 'http://labs.google.com/ridefinder/images/mm_20_gray.png';

	iconGasStations.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';

	iconGasStations.iconSize = new GSize(12, 20);

	iconGasStations.shadowSize = new GSize(22, 20);

	iconGasStations.iconAnchor = new GPoint(6, 20);

	iconGasStations.infoWindowAnchor = new GPoint(5, 1);

	

	

	custom_icons['schools'] = iconSchools;

	custom_icons['grocery'] = iconGrocery;

	custom_icons['restaurants'] = iconRestaurants;

	custom_icons['hospitals'] = iconHospitals;

	custom_icons['golf'] = iconGolf;

	custom_icons['banks'] = iconBanks;

	custom_icons['gas_stations'] = iconGasStations;



}



function srp_default_createMarker(point,description) {

       	var marker = new google.maps.Marker(point);

       	google.maps.Event.addListener(marker, "click", function() {

       		marker.openInfoWindowHtml(description);

       	});			

       	return marker;

}



function srp_createMarker(point,html,icon) {

		srp_custom_icons();

		var marker = new GMarker(point, custom_icons[icon]);

       	GEvent.addListener(marker, "click", function() {

       		marker.openInfoWindowHtml(html,{maxWidth:315});

       	});

       	return marker;

	}



function srp_createMarkerCustom(point, name, address, type, ref, img) {

      var marker = new GMarker(point, custom_icons[type]);

      var html = img + '<strong>' + name + "</a></strong> <br />" + address +

	'<br />' + '<a href="' + ref + '">listing info</a>' 

      GEvent.addListener(marker, 'click', function() {

        marker.openInfoWindowHtml(html);

      });

      return marker;

    }

	

function srp_initialize() {

		srp_map = new google.maps.Map2(document.getElementById("gre_map_canvas"));

		srp_map.addControl(new google.maps.SmallMapControl());

		srp_map.addControl(new google.maps.MapTypeControl());		

		srp_setupmap();		

}



//Other AJAX mapping

var loc = srp_wp_admin + '/admin-ajax.php';

var markerArray;

markerArray = new Array();



jQuery(document).ready( function() {

function srp_addOverlay(marker){

	if(typeof gre_map !== "undefined"){

				gre_map.addOverlay(marker);

	}else

	if(typeof srp_map !== "undefined"){

				srp_map.addOverlay(marker);

	}

}



function srp_removeOverlay(marker){

	if(typeof gre_map !== "undefined"){

				gre_map.removeOverlay(marker);

	}else

	if(typeof srp_map !== "undefined"){

				srp_map.removeOverlay(marker);

	}

}



function srp_function_exists(name, type, callbackfunc, arg){

	jQuery.post(loc, {

				action: 'srp_function_exists',

				name:		name,

				type:		type

			  }, function(data){

					if(data === '1'){

						if(typeof(arg) !== 'undefined'){

							callbackfunc(arg);	

						}else{

							callbackfunc();	

						}

					}

				  }

			);

	return false;

}



	//BEGIN Yelp AJAX

	

		// This is the hack for IE

		if (jQuery.browser.msie) {

		  jQuery('input[id^="yelp_cat_"]').click(function() {

			this.blur();

			this.focus();

		  });

		  

		  jQuery('input#schools_select').click(function() {

			this.blur();

			this.focus();

		  });

		}



	jQuery('input[id^="yelp_cat_"]').change( function() {						

		//no need to check for yelp api key on every click

		//srp_function_exists('srp_yelp_api_key', 'option', srp_requestYelp, this);

		srp_requestYelp(this);

	});

	

	jQuery('input#schools_select').change( function() {						

		//no need to check for yelp api key on every click

		//srp_function_exists('srp_yelp_api_key', 'option', srp_requestYelp, this);

		srp_schools_preload();

	})

	  

	function srp_requestYelp(arg){				

		

		var prop_coord = jQuery('#srp_gre_prop_coord').val();

		var coord = prop_coord.split(',');		

		var cat = jQuery(arg).attr("name");

			

		if(jQuery(arg).attr('checked')){

			if(markerArray.length > 0){

				var found = false;

				for(var i=0; i<markerArray.length; i++){

					if(markerArray[i].cat == cat){

						found = true;

						srp_addOverlay(markerArray[i]);

						jQuery('.srp_gre_legend span.' + cat).remove();

					}

				}

				if(found == true){	

					var ledgend = '<span class="' + cat + '"><img src="' + custom_icons[cat].image + '" /> - ' + custom_icons[cat].title + '</span>';

					jQuery('#map div.srp_gre_legend').append(ledgend);				

					return false;

				}

			}

			

			srp_ajax_loaderStart(null, 'gre_map_canvas');

			jQuery.post(loc, {

				action: 'srp_getYelp_ajax',

				term:		cat,

				lat:		coord[0],

				lng:		coord[1]

			  }, function(data){				  	

					srp_mapYelp(data);

					srp_ajax_loaderStop();

				},"json"

			);			

			return false;			

		}else{

			for(var i=0; i<markerArray.length; i++){

				if(markerArray[i].cat == cat){					

						srp_removeOverlay(markerArray[i]);

						jQuery('.srp_gre_legend span.' + cat).remove();

				}

			}

		}



	}

	

	function srp_mapYelp(data){

			if(typeof(data) !== 'undefined' && data != 0 && data != -1){

				var category = data;								

				for(var i in category){											

					for(var x in category[i]){

						var lat = category[i][x].lat;

						var lng = category[i][x].lng;

						var html = category[i][x].html;

						var point = new google.maps.LatLng(lat,lng);

						var marker = srp_createMarker(point,html,i);

						marker.cat = i;

						markerArray.push(marker);

						srp_addOverlay(marker);						

					}

					

					var ledgend = '<span class="' + i + '"><img src="' + custom_icons[i].image + '" /> - ' + custom_icons[i].title + '</span>';

					jQuery('#map div.srp_gre_legend').append(ledgend);					

				}			

			}

	}

	//END Yelp AJAX

	

	//BEGIN Schools Preload with 1.5 second timeout to let map_gre to load.

	/*

	if(typeof jQuery('#srp_gre_prop_coord').val() !== 'undefined' && jQuery('#gre_map_canvas').is('.show_schools')){

	jQuery(document).ready

	(	 	

	        function()

       	 {

	                setTimeout

	                (

	                        function()

	                        {

	                                //srp_schools_preload();

	                        },

	                        5000

	                );

	        }

	); 

	}*/

	

	function srp_schools_preload(){

		var prop_coord = jQuery('#srp_gre_prop_coord').val();

		var coord = prop_coord.split(',');

		var address = null;

		var cat = 'schools';

		if(jQuery('input#schools_select').attr('checked')){

			if(markerArray.length > 0){

				var found = false;

				for(var i=0; i<markerArray.length; i++){

					if(markerArray[i].cat == cat){

						found = true;

						srp_addOverlay(markerArray[i]);

						jQuery('.srp_gre_legend span.' + cat).remove();

					}

				}

				if(found == true){	

					var ledgend = '<span class="' + cat + '"><img src="' + custom_icons[cat].image + '" /> - ' + custom_icons[cat].title + '</span>';

					jQuery('#map div.srp_gre_legend').append(ledgend);				

					return false;

				}

			}

			

			srp_ajax_loaderStart(null, 'gre_map_canvas');

			jQuery.post(loc, {

						action: 'srp_getSchools_ajax',

						address:		address,

						lat:		coord[0],

						lng:		coord[1]

					  }, function(data){

						  	srp_mapSchools(data);

							srp_ajax_loaderStop();

						},"json"

					);			

					return false;

		}else{

			for(var i=0; i<markerArray.length; i++){

				if(markerArray[i].cat == cat){					

						srp_removeOverlay(markerArray[i]);

						jQuery('.srp_gre_legend span.' + cat).remove();

				}

			}

		}

	}		

	

	function srp_mapSchools(data){			

			var srp_education_div = jQuery('#srp_education').attr('id');

			//jQuery('#srp_education').append(data.content);

			jQuery(function() {jQuery(".srp-tabs").tabs();});

			var category = data.markers;

			

			for(var i in category){

					var lat = category[i].lat;

					var lng = category[i].lng;

					var html = category[i].html;

					var point = new google.maps.LatLng(lat,lng);

					var marker = srp_createMarker(point,html,'schools');

					marker.cat = 'schools';

					markerArray.push(marker);

					srp_addOverlay(marker);

			}

				

				var ledgend = '<span class="schools"><img src="' + custom_icons['schools'].image + '" /> - ' + custom_icons['schools'].title + '</span>';

				jQuery('#map div.srp_gre_legend').append(ledgend);

	}

	

	

	

	//END Schools Preload			

	

	// END for GRE Plugin

});