	
	function ClientMap(master)
	{
		var self=this;
		this.init=function()
		{
			self.init_map();	
		}
		this.init_map=function()
		{
			self.map=new GMap2(document.getElementById("client_map"),{mapTypes:[G_NORMAL_MAP,G_SATELLITE_MAP]} );
			self.map.setCenter(new GLatLng(41.05744277837081, -74.02329862117767), 3);
			
			var x=self.map.getMapTypes();
    		self.map.setMapType(x[1]); 
			
			self.map_div=self.map.getContainer();
			
			self.cluster=new ClusterMarker(self.map, {clusterMarkerIcon:self.markerIcon()	});
			
			self.addMapContent(	JQ("<div id=\"status\"></div>")	);
			self.add_toolbar();
		}
		self.get_marker_by_id=function(id)
		{
			master.tunnel.add({
				callback:master.results.loadResults,
				action:'load_marker',
				id:id
			});
		}
		self.markerIcon=function()
		{
			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);

			var icon=new GIcon(baseIcon);
				icon.image = "/nikebasketball/emea/assets/images/maps/marker_plus.png";
			return icon;
		}		
		this.add_controls=function()
		{
			var typeControl=new GMapTypeControl();
			var topLeft=new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(90,40));
			self.map.addControl(typeControl, topLeft);
				
			var mapControl=new GLargeMapControl();
			topLeft=new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(20,40));
			self.map.addControl(mapControl, topLeft);
		}
		this.update_markers=function(markers)
		{
			self.cluster.removeMarkers();
			self.cluster.addMarkers(markers);
			self.cluster.fitMapToMarkers();
		}
		this.addMapContent=function(obj)
		{
			JQ(self.map_div).append(obj);				
		}
		this.add_toolbar=function()
		{
			var str= "<div class=\"toolbar\">";
				str+="	<a href=\"#\" class=\"print\"><img class=\"print\" src=\"/nikebasketball/emea/assets/images/maps/print_btn.gif\" /></a>";
				str+="	<a href=\"#\"><img class=\"send\" src=\"/nikebasketball/emea/assets/images/maps/send_btn.gif\" /></a>";
				str+="	<a href=\"#\"><img class=\"share\" src=\"/nikebasketball/emea/assets/images/maps/share_btn.gif\" /></a>";
				str+="</div>";
			self.addMapContent(	JQ(str)	);
			
			JQ('a.print').click(function(){window.print();});
		}
		
		
		/*
		
		this.goto_city=function(city)
		{			
			master.results.info_window.hide();
			self.map.setCenter(new GLatLng(city.lat, city.lng), parseInt(city.zoom));
		}
		this.goto=function(marker)
		{		

			
			self.map.panTo(new GLatLng(marker.getPoint().lat(),marker.getPoint().lng()	));
			
		}
		
		*/
		self.init();
	}

	function Column(master)
	{
		var self=this;
		this.init=function()
		{
			self.preloadImages();
			
			self.makeTopOfCol();
			self.activateTop();
			self.setTopMode('search');
			
			self.makeBotOfCol();
			self.activateBot();
			self.setBotMode('cities');
			
			self.last_search="";
		}
		self.makeBotOfCol=function()
		{
			var style="";
			if(nsw_data.platypus_region=="de_DE")
				style="style=\"font-size:9px;padding:4px 8px 5px 8px;\"";
				
			var str= "<div class=\"col_bottom\">";
				str+="	<div class=\"bot_tabs_container\">";
				str+="		<ul class=\"bot_tabs\">";
				str+="			<li id=\"cities_bot_li\" "+style+">"+map_translations.map_cities+"</li>";
				str+="			<li id=\"search_bot_li\" "+style+">"+map_translations.map_search_results+"</li>";
				str+="			<li id=\"directions_bot_li\" "+style+">"+map_translations.map_directions+"</li>";
				str+="		</ul>";
				str+="	</div>";
				str+="	<div class=\"col_bottom_content\"></div>";
				str+="</div>";
			master.map.addMapContent(	JQ(str)	);
			self.bot_content_div=JQ("div.col_bottom_content");
		}
		self.activateBot=function()
		{
			JQ("ul.bot_tabs>li").click(function(){	self.setBotMode(	JQ(this).attr("id").replace("_bot_li","")	);			});
		}
		self.setBotMode=function(mode)
		{
			if(mode=="cities")
			{
				master.results.info_window.hide();
				
				if(self.directions)
					self.directions.clear();
					
				JQ("div.col_bottom_content").empty().append();
				JQ("li#directions_bot_li").removeClass("active");
				JQ("li#search_bot_li").removeClass("active");
				JQ("li#cities_bot_li").addClass("active");
				master.cities.showCities(self.bot_content_div);
				JQ('ul.scroller_content li ul div.title').click(function()
				{
				
					
					if(self.top_mode!='search')
						self.setTopMode('search');
					
					self.last_search=JQ(this).attr("id");
					JQ('input#search_field').val(	self.last_search	);
							
					master.tunnel.add({
						callback:master.results.loadResults,
						action:'load_city',
						city:JQ(this).attr("id")
					});
				});
			}
			else if(mode=="search")
			{	
				if(self.directions)
					self.directions.clear();
				
				if(self.top_mode!='search')
					self.setTopMode('search');	
					
				JQ("div.col_bottom_content").empty();
				JQ("li#cities_bot_li").removeClass("active");
				JQ("li#directions_bot_li").removeClass("active");				
				JQ("li#search_bot_li").addClass("active");
				master.results.showResults();		
			}
			else if(mode=="directions")
			{
				master.results.info_window.hide();
				
				JQ("li#cities_bot_li").removeClass("active");
				JQ("li#search_bot_li").removeClass("active");				
				JQ("li#directions_bot_li").addClass("active");
				
				JQ("div.col_bottom_content").empty().append("<div id=\"directions\"></div>");
				
				if(self.directions)
				{
					self.directions.clear();
					delete self.directions;
				}
				
				if(self.directions_string)
				{
					self.directions=new GDirections(master.map.map, document.getElementById("directions"));
					self.directions.load(self.directions_string);				
				}
				else
				{
					JQ('div#directions').append("<div class=\"no_search\">"+map_translations.no_directions+"</div>");
				}
				
				
			}
		}
		self.setTopMode=function(mode)
		{
			if(self.top_mode=='search')
				self.search_term=JQ('input#search_field').val();
			else if(self.top_mode=='directions')
			{
				self.start_add_val=JQ("input.start_address").val();
				self.end_add_val=JQ("input.end_address").val();
			}
			
			if(mode=='search')
			{

				var str ="<div class=\"top_descriptor\">"+map_translations.map_find+"</div>";
					str+="<div class=\"search_field_wrapper\"><input type\"text\" class=\"search_field\" id=\"search_field\"></input></div>";
					str+="<div class=\"submit_btn\" >"+map_translations.map_submit+"</div>";
				
				JQ("div.top_main").empty().append(str);
				JQ("li#directions_li").removeClass("active");
				JQ("li#search_li").addClass("active");
				
				self.buildInput(	JQ("div.search_field_wrapper>input.search_field"), map_translations.search_prompt, self.doSearch);
				JQ("div.submit_btn").click(self.doSearch);
				JQ('input#search_field').val(self.search_term);	
			}
			if(mode=='directions')
			{
				var str ="<div class=\"start_address_wrapper\">";
					str+="	<div class=\"address_header\">"+map_translations.start_address+"</div>";
					str+="	<div class=\"start_address_container\"><input type\"text\" class=\"start_address\" id=\"start_address\"></input></div>";
					str+="</div>";
					str+="<img src=\"/nikebasketball/emea/assets/images/maps/direction_arrows.gif\" class=\"address_arrows\" />";					
					str+="<div class=\"end_address_wrapper\">";
					str+="	<div class=\"address_header\">"+map_translations.end_address+"</div>";
					str+="	<div class=\"end_address_container\"><input type\"text\" class=\"end_address\" id=\"end_address\"></input></div>";
					str+="</div>";					
					str+="<div class=\"directions_submit_btn\" >"+map_translations.map_submit+"</div>";
					str+="<div class=\"clearme\"></div>";
					
				JQ("div.top_main").empty().append(str);
				JQ("li#directions_li").addClass("active");
				JQ("li#search_li").removeClass("active");
				
				JQ("img.address_arrows").click(function(){
					var start=JQ("input.start_address").val();
					var end=JQ("input.end_address").val();
					JQ("input.start_address").val(end);
					JQ("input.end_address").val(start);
				});
				
				JQ("div.directions_submit_btn").click(self.doDirections);
				self.buildInput(	JQ("div.start_address_container>input.start_address")			,"",self.doDirections);
				self.buildInput(	JQ("div.end_address_container>input.end_address")			,"",self.doDirections);
				
				JQ("input.start_address").val(self.start_add_val);
				JQ("input.end_address").val(self.end_add_val);
			}
			self.top_mode=mode;
		}
		this.doSearch=function()
		{
			if(	JQ.trim(JQ('input#search_field').val()).length == 0	|| JQ('input#search_field').val()==map_translations.search_prompt)
			{
				alert(map_translations.enter_search);
				return;
			}
			
			self.setBotMode('search');
			master.tunnel.add(
			{
				callback:master.results.loadResults,
				action:'search_stores',
				term:JQ('input#search_field').val()
			});
		}
		self.do_directions_from_iw=function(from, to)
		{
			self.setTopMode('directions');
			JQ('input.end_address').val(to);
			JQ('input.start_address').val(from);
			self.doDirections();
		}
		self.doDirections=function()
		{
			master.map.cluster.removeMarkers();
			self.directions_string="from: " + JQ('input#start_address').val() + " to: " + JQ('input#end_address').val();
			self.setBotMode('directions');
		}
		this.makeTopOfCol=function()
		{
			var style="";
			if(nsw_data.platypus_region=="de_DE")
				style="style=\"width:120px;\""
				
			var str ="<div class=\"top_col\">";
				str+="	<div class=\"top_main\">";
				str+="	</div>";
				str+="	<div class=\"bot_col\">";
				str+="		<ul class=\"tabs\">";
				str+="			<li id=\"search_li\">"+map_translations.search+"</li>";
				str+="			<li id=\"directions_li\" "+style+" >"+map_translations.map_directions+"</li>";
				str+="		</ul>";
				str+="	</div>";
				str+="</div>";
			master.map.addMapContent(	JQ(str)	);
		}
		this.activateTop=function()
		{
			JQ("ul.tabs>li").click(function(){	self.setTopMode(	JQ(this).attr("id").replace("_li","")	);			});
		}
		this.buildInput=function(obj,default_text, callback)
		{
			JQ(obj).val(default_text);
			JQ(obj).focus(function(){
				if(	JQ(this).val()==default_text	)
					JQ(this).val("");
			});
			JQ(obj).blur(function(){
				if(	JQ(this).val()==""	)
					JQ(this).val(default_text);
			});
			JQ(obj).keypress(function(e){	if(e.keyCode==13) callback();});
		}
		this.preloadImages=function()
		{
			JQ("body").append("<div style=\"display:none;\" id=\"preload_col_images\"></div>");
			JQ("div#preload_col_images").append("<img src=\"/nikebasketball/emea/assets/images/maps/search_bg.gif\" />");
			JQ("div#preload_col_images").append("<img src=\"/nikebasketball/emea/assets/images/maps/address_bg.gif\" />");
		}
		self.init();
	}
	

