var map = null;

var _startLat = 48.895421;
var _startLng = 2.387681;

var _counter = 0;
var _twitResults = new Array;
var _flickResults = new Array;

var zIndexCounter = 0;

var _myDivs = new Array();
var _divcounter = 0;

var _colors = new Array("#eeeeee","#dddddd","#cccccc","#bbbbbb");
var _colorcounter = 0;

var _preloadImg = new Array();


$(document).ready(function(){
  load_gadget();
});

function load_gadget() {
	
	if(GBrowserIsCompatible()) {
		
		var point = new GLatLng(_startLat,_startLng);
		
		map = new GMap2(document.getElementById("header_mapgadget"));
		map.setCenter(point, 15, G_SATELLITE_MAP);
		
		startGadget();		
	}
}


function startGadget() {
		
	getTwitterPage(1);
	getTwitterPage(2);
	getTwitterPage(3);
	getTwitterPage(4);
	getTwitterPage(5);
	getFlickr();
}

function getFlickr() {
	
	_counter++;

	var _url = "http://www.flickr.com/services/rest/?method=flickr.photos.search&min_upload_date=1104559200&sort=date-taken-desc&extras=geo&lat=" + _startLat + "&lon=" + _startLng + "&radius=1&format=json&jsoncallback=?&api_key=2507069cc53d68e7e6da7a907354dc2c";
	
	$.getJSON(_url, function(data) {
		
		_json = data["photos"]["photo"];
		
		for(var i = 0; i < _json.length; i++) {
			
			// format des urls des photos :
			// http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}.jpg

			var _farm = _json[i]["farm"];
			var _server = _json[i]["server"];
			var _id = _json[i]["id"];
			var _secret = _json[i]["secret"];
			
			var _imgurl = 'http://farm' + _farm + '.static.flickr.com/' + _server  + '/' + _id + '_' + _secret  + '_s.jpg';
			
			_flickResults.push({"lat":_json[i]["latitude"],"lng":_json[i]["longitude"],"url":_imgurl});
		}
		
		_counter--;
	
		if(_counter == 0) {
			processGadget();	
		}
	});
}


function getTwitterPage(_page) {
	
	_counter++;
	
	var _url = "http://search.twitter.com/search.json?geocode=" + _startLat + "%2C" + _startLng + "%2C5km&page=" + _page + "&callback=?"
	
	$.getJSON(_url, function(data){

		var _results = data["results"];
		
		for(var i = 0; i < _results.length; i++) {
			
			_twitResults.push(_results[i]);
		}
		
		_counter--;
		
		if(_counter == 0) {
			processGadget();
		}
	});
}


function processGadget() {
	
	_preloadImg[0] = new Image()
	_preloadImg[0].src = _flickResults[0]["url"];
	
	for(var i = 0; i < _twitResults.length;i++) {
		window.setTimeout("showGadget(" + i + ")", i * 5000);
	}
}


function showGadget(_param) {
	
	_preloadImg[_param + 1] = new Image()
	_preloadImg[_param + 1].src = _flickResults[_param + 1]["url"];
	
	var myIcon = new GIcon(G_DEFAULT_ICON);						
    myIcon.image = "";
	myIcon.shadow = "";
	myIcon.iconSize = new GSize(0,0);
	
	
	var _point = new GLatLng(_flickResults[_param]["lat"],_flickResults[_param]["lng"])
	
	map.panTo(_point);
	
	var marker = new GMarker(_point, { icon:myIcon,zIndexProcess:zIndex });			// creation d'un markeur avec une icone customisÃ©e
			
	map.addOverlay(marker);
	
	if (_twitResults[_param]["text"].length > 110) {
		_twitResults[_param]["text"] = _twitResults[_param]["text"].substr(0, 110) + "...";
	}

	msgBox = document.createElement("div");
	msgBox.id = "mydiv_" + _divcounter;
	msgBox.style.position="absolute";
	msgBox.style.padding="1px";
	msgBox.style.margin="0";
	msgBox.style.display = "none";
	msgBox.style.border = "1px solid black";
	msgBox.style.lineHeight = "10px";
	msgBox.style.width = "210px";
	msgBox.style.height = "40px";
	msgBox.style.fontSize = "11px";
	msgBox.style.backgroundColor = _colors[_colorcounter];
	msgBox.style.zIndex=zIndexCounter;
	msgBox.innerHTML = '<img align="left" width="40" height="40" src="' + _flickResults[_param]["url"] + '" style="margin-right:2px"; />' +  _twitResults[_param]["text"];
	
	
	
	_colorcounter++;
	
	if(_colorcounter >= _colors.length) {
		_colorcounter = 0;
	}
	
	var c = map.fromLatLngToDivPixel(_point);
	
	msgBox.style.top = (c.y - 34) + "px";
	msgBox.style.left = (c.x + 30) + "px";	
	
	msgBoxNode = map.getPane(G_MAP_MARKER_PANE).appendChild(msgBox);
    
	$("#mydiv_" + _divcounter).css("opacity",0);
	$("#mydiv_" + _divcounter).css("display","block");
	$("#mydiv_" + _divcounter).animate({"left":"+=15px","opacity": 0.9}, 500);

	
	if(_divcounter > 2) {
		$("#mydiv_" + (_divcounter - 3)).fadeOut();
	}
	
	_divcounter++;	
}


function zIndex() {
	
	zIndexCounter++;
	
	return zIndexCounter;
}
