var fix_tab = {
	on:function(nr){
		 var tab_a = dojo.byId('tab_a');
		 var tab_b = dojo.byId('tab_b');
		
		
		if(nr==0){
			cfkit_util.display('mapWrapper',true);
			cfkit_util.display('gridWrapper',false);
			tab_a.className  ='tabOn';
			tab_b.className  ='tab';
			map.checkResize();
			
		}else{
			cfkit_util.display('mapWrapper',false);
			cfkit_util.display('gridWrapper',true);
			tab_a.className  ='tab';
			tab_b.className  ='tabOn';
		}
		return;
	}
} 

var search_tab = {
	state:0,
	heading_0:'',
	heading_1:'',
	txt_0:'',
	txt_1:'',
	toggle:function(){
		
		if(search_tab.state==0){
			cfkit_util.display('frmW_search',false);
			cfkit_util.display('frmW_location',true);
			dojo.byId('searchHeading').innerHTML = search_tab.heading_0;
			dojo.byId('searchSwitch').innerHTML = search_tab.txt_0;
			search_tab.state = 1;
		}else{
			cfkit_util.display('frmW_search',true);
			cfkit_util.display('frmW_location',false);
			dojo.byId('searchHeading').innerHTML = search_tab.heading_1;
			dojo.byId('searchSwitch').innerHTML = search_tab.txt_1;
			search_tab.state = 0;
		}

		return;
	}
}


var fix_search = {
	initialised:false,
	grid:new Grid(),
	pager:new Grid_Pager(),
	init:function(){
		fix_search.grid.init('fix_result',5);
		fix_search.pager.init('pager',fix_search.grid,'fix_search.pager');
		cfkit_util.display('grid_widget',true);
	   return;
	},
	
	draw:function(data){
		fix_search.pager.updateData(data);
		return;
	},
	
	search:function(){
		fix_tab.on(0);
		gmap.infoPane.busy();
		gmap.searchType = 'target';
		dojo.xhrPost({
			form: "frmSearch",
			url : "/server/fix_search.cfm",
			handleAs : "json",
			load : gmap.doSearchOK,
			error : gmap.callbackError
		});
		
		return;
	},
	geoLocate:function(){
		/* Test if browser supports geolocation. */
		if(navigator.geolocation && typeof navigator.geolocation.getCurrentPosition == 'function') {
			navigator.geolocation.getCurrentPosition(fix_search.geoLocateOk,
	                                         fix_search.geoLocateFail,
	                                         {timeout:30000});
		}
		
		return;
	},
	geoLocateOk:function(position){
		gmap.doSearch(position.coords.latitude,position.coords.longitude);
		return;
	},
	geoLocateFail:function(){
		return;
	}
}


var map;
var geocoder;
var gmap = {
	searchType:'',
	home:0,
	aFix:'',
	infoPane: new cfkit_InfoPane('searchInfo'),
	init:function(){
		return;
	},
	
	
	getLocalCenter:function(){
		switch(cfkit_ctx.getLocaleID()){
			case '1': /* 1=International English */
			return new GLatLng(47.81315451752765, 10.37109375);
			break;
			
			case '2': /* 2=Germany */
			return new GLatLng(50.40151532278236, 9.4921875);
			break;
			
			case '3': /* 3= USA */
			return new GLatLng(39.842286020743394, -100.37109375);
			break;
		}
		
		return new GLatLng(47.81315451752765, 10.37109375);
	},
	
	load:function () {
		if (GBrowserIsCompatible()) {
			geocoder = new GClientGeocoder();
			map = new GMap2(document.getElementById('map'));
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			map.setCenter(gmap.getLocalCenter(), 4);
		}
		
		gmap.infoPane.hide();
    	return;
    },
	
	search:function(){
		fix_tab.on(0);
		gmap.searchType = 'area';
		var address = dojo.byId('address').value;
		geocoder.getLatLng(address, function(latlng) {
	    								if (!latlng) {
	     								alert('The location you entered could not be found!');
	    								} else {
	     								gmap.doSearch(latlng.lat(),latlng.lng());
	    							}});
		return;
	},
								
	doSearch:function(lat,lng){
		gmap.infoPane.busy();
			
		dojo.byId('home_lat').value = lat;
		dojo.byId('home_lng').value = lng;
		
		gmap.home = new GLatLng(parseFloat(lat),parseFloat(lng));
		
		dojo.xhrPost({
			form: "frmLocation",
			url : "/server/fix_search.cfm",
			handleAs : "json",
			load : gmap.doSearchOK,
			error : gmap.callbackError
		});
		
		return;
	},
	
	doSearchOK:function(data,ioArgs){
		map.clearOverlays();
		gmap.aFix = data;
		var bounds = new GLatLngBounds();
		
		if(gmap.searchType == 'area'){
			gmap._addMarker('home',-1,gmap.home,'home');
			bounds.extend(gmap.home);
		}
		
		for(var i=0;i<data.length;i++){
			var point = new GLatLng(parseFloat(data[i].LAT),parseFloat(data[i].LNG));
			gmap._addMarker(data[i].FIXTURETYPEID,i,point,data[i].NAME);
			bounds.extend(point);
		}
		
		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
		
		fix_search.draw(data);
		gmap.infoPane.hide();
		return;
	},
	
	
	
	selectMarker:function(marker,index){
		var objFix = gmap.aFix[index];
		var html = '';
		html = html + '<div class="item">';
		html = html + '<div class="address">';
		html = html + '<img class="country" src="/gfx/global/flags/' + objFix.FLAGIMG + '" alt="">';
		html = html + '&nbsp;' + objFix.CITY;
		html = html + '</div>';
		html = html + '<div class="name">';
		html = html + '<a href="/fixture/fix_view.cfm?fixtureID=' + objFix.FIXTUREID + '">';
		html = html + objFix.NAME + '</a></div>';
		html = html + '<div class="date">' + objFix.STARTDATE + '</div>';
		html = html + '<div class="info">' + objFix.TOURINFO + '</div>';
		html = html + '</div>';
			
		marker.openInfoWindowHtml(html);
		return;
	},

	_addMarker:function(type,index,point,name){
		var icon = new GIcon(G_DEFAULT_ICON,'/gfx/global/gmap/bike.png');
	    icon.iconSize = new GSize(20, 34);
	    icon.shadow = '/gfx/global/gmap/shadow.png';
	    icon.shadowSize = new GSize(36, 34);
	    icon.iconAnchor = new GPoint(5, 34);
		
		type = type + ''; // Force to string;
		
		switch(type){
			case 'home':
			icon.image = '/gfx/global/gmap/home.png';	
			break;
		
			case '6':
			icon.image = '/gfx/global/gmap/skate.png';
			break;
		
			default:
			icon.image = '/gfx/global/gmap/bike.png';
		}
		
		var marker = new GMarker(point,icon);
		if(type != 'home'){
			GEvent.addListener(marker, 'click', function() {
													gmap.selectMarker(marker,index);
  												});	
		}
		map.addOverlay(marker);
		return;
	},
	
	callbackError:function(data,ioArgs){
		console.log(data);
		gmap.infoPane.msg('Error Contacting Server');
		return;
	},
	
	addEvent:function(){
		return;
	}
}