var map;
var place;
var tempicon = null;
var temp;
var ID;
var id;
var w;
var actArray;
var accommArray;
var q;
var g;
var temp;
var marker;
var center;
var Zoom;
var lastlat;
var lastlong;
var origlatlong;
var extensionForIcons = 1;
var movingSensitivity = 1.8;
var hoverInfo = "<span style='font-size:14pt;'>Hover over the map icons to display more information here</span>";
var tickInfo = '<span style="font-size:13pt;">Tick the boxes above the map to add extra icons to the map. Hovering over these icons will display information here!</span>';
var IdentificationNumber = 0;
var actName;
var onloadAccomms = false;
var onloadPics = false;
var onloadActs = false;

var picArray;
var picArray = new Array(100);
var picArrayBool;
var picArrayBool = new Array(100);

function saveFirstPics()
	{
	picArray[0] = $('#tempEmpty').html();
	picArrayBool[0] = true;	
	}

function getNextPicsBefore(picIndexx,id)
	{
	if(picArrayBool[picIndexx]==true)
		{
		}
	else
		{
		type='act_img';
		$.post('/ajax/view/getRegViewPics.php', {picIndex:picIndexx,id:id,startIndex:startIndex,type:type}, function(data){
			picArray[picIndexx] = data;
			picArrayBool[picIndexx] = true;
			$('#tempEmpty').html(data);//so that the images are loaded by browser, images are placed inside a div that is hidden		
			});
		}	
	}

function getLessPics(id)
	{
	picIndex = picIndex - 3;
	if(picArrayBool[picIndex]==true)
		{
		$('#Pics').fadeOut(500,function () {
			$('#Pics').html(picArray[picIndex]);
			lightboxBaby();
			$('#Pics').fadeIn("slow");
			});
		}
	else	
		{
		$('#Pics').fadeOut(500);
		type='act_img';
		$.post('/ajax/view/getRegViewPics.php', {picIndex:picIndex,id:id,startIndex:startIndex,type:type}, function(data){
			picArray[picIndex] = data;
			picArrayBool[picIndex] = true;				
			$('#Pics').html(data);
			lightboxBaby();
			$('#Pics').fadeIn("slow");			
			});
		}
	}

function getMorePics(id)
	{
	picIndex = picIndex + 3;
	if(picArrayBool[picIndex]==true)
		{
		$('#Pics').fadeOut(500,function () {
			$('#Pics').html(picArray[picIndex]);
			lightboxBaby();
			$('#Pics').fadeIn("slow");
			});
		piccIndex = picIndex+3;
		getNextPicsBefore(piccIndex,id);			
		}
	else	
		{
		$('#Pics').fadeOut(500);
		type='act_img';
		$.post('/ajax/view/getRegViewPics.php', {picIndex:picIndex,id:id,startIndex:startIndex,type:type}, function(data){
			picArray[picIndex] = data;
			picArrayBool[picIndex] = true;				
			$('#Pics').html(data);
			lightboxBaby();
			$('#Pics').fadeIn("slow");
			piccIndex = picIndex+3;
			getNextPicsBefore(piccIndex,id);	
			});
		}
	}


//initializes the map
function initialize(latlong, icon, Id,actNamee) {
      if (GBrowserIsCompatible()) {
	IdentificationNumber = Id;
	actName = actNamee;
	q = 0;
	w = 0;
	g = 0;
	origlatlong = latlong;
	temp = new Array();
	actArray = new Array();
	accommArray = new Array();
    map = new GMap2(document.getElementById("map_canvas"));
	GEvent.addListener(map, "load", function()
		{
		$('#maploading').hide();
		});
//	alert("latlong is: "+latlong);
	two=latlong.split(" ");
	lastlat = two[0];
	lastlong = two[1];
	center = new GLatLng(two[0], two[1]);
	map.setMapType(G_HYBRID_MAP);
	Zoom = 13;
	zoom = Zoom;
	map.setCenter(center, Zoom);

	var tinyIcon = new GIcon();
	if(icon==""||icon==null)
		tinyIcon.image = "/img/icons/info.png";
	else
		tinyIcon.image = "/img/icons/"+icon;
	tinyIcon.iconSize = new GSize(40, 37);
	tinyIcon.iconAnchor = new GPoint(14, 27);
	tinyIcon.infoWindowAnchor = new GPoint(5, 1);
	markerOptions = { icon:tinyIcon,draggable:false };
	marker = new GMarker(center,markerOptions);
	map.addOverlay(marker);

	if(onloadPics)
		addpics(1);
	if(onloadActs)
		addacts(1);
	if(onloadAccomms)
		addaccomms(1);

	//adding control to the maps
	map.addControl(new GSmallMapControl());
	map.addControl(new GOverviewMapControl());
	map.addControl(new GMapTypeControl());
	map.enableContinuousZoom();
	checkpics();
	checkacts();
	checkaccomms();
	GEvent.addListener(map, "moveend", function(overlay, latlng) {
		var centerloc = new GLatLng();
		centerloc = map.getCenter();
		var bounds = map.getBounds();
		var extend = bounds.toSpan();
		var extlat = extend.lat();
		var extlng = extend.lng();
		var latt = centerloc.lat();
		var lonn = centerloc.lng();
		//alert("latt: "+latt+" lonn: "+lonn);
		//alert('lastlat: '+lastlat+' lastlong: '+lastlong);
		var latchange = parseFloat(latt)-parseFloat(lastlat);
		var longchange = parseFloat(lonn)-parseFloat(lastlong);
		//alert("latchange: "+latchange+"  longchange: "+longchange);
		var difference = Math.sqrt(latchange*latchange + longchange*longchange);
		//alert('difference: '+difference);
		//alert('extlat: '+extlat/2.0);
		if(difference>extlat/movingSensitivity)
			{
			//alert('difference > extlat');
			if($('#pics').attr('checked')==1)
				{
				//alert('lastlat: '+lastlat+' lastlong: '+lastlong);
				lastlat = latt;
				lastlong = lonn;
				//alert('here');extensionForIcons
				//alert('lastlat: '+lastlat+' lastlong: '+lastlong);
		 		addpics(1);
				}
			if($('#acts').attr('checked')==1)
				{
				//alert('acts');
				//alert('lastlat: '+lastlat+' lastlong: '+lastlong);
				lastlat = latt;
				lastlong = lonn;
				//alert('here');
				//alert('lastlat: '+lastlat+' lastlong: '+lastlong);
		 		addacts(1);
				}
			if($('#accomms').attr('checked')==1)
				{
				//alert('accomms');
				//alert('lastlat: '+lastlat+' lastlong: '+lastlong);
				lastlat = latt;
				lastlong = lonn;
				//alert('here');
				//alert('lastlat: '+lastlat+' lastlong: '+lastlong);
		 		addaccomms(1);
				}
			}
	});
	GEvent.addListener(map, "zoomend", function(oldlevel, newlevel) {
		var check = Math.abs(Zoom-newlevel);
		if(check>1)
			{
			//alert("Zoom: "+Zoom+'newlevel: '+newlevel);
			if($('#pics').attr('checked')==1)			
				{
				Zoom = newlevel;
		 		addpics(0);
				}
			if($('#acts').attr('checked')==1)
				{
				Zoom = newlevel;
		 		addacts(0);
				}
			if($('#accomms').attr('checked')==1)
				{
				Zoom = newlevel;
		 		addaccomms(0);
				}
			}
		});
	}
}

function resett(){
	//resetting map info div
	$('#mapinfo').html(tickInfo);

	//unchecking all tick boxes
	document.map.pics.checked=false;
	document.map.acts.checked=false;
	document.map.accomms.checked=false;

	//resetting map position
	map.setCenter(center, zoom);
	map.setMapType(G_HYBRID_MAP);
	
	//removing all extra icons from map
	array = [];

	removeActs();
	removePics();
	removeAccomms();
}

//called onchange of pic click box, checks if clicked or not, if click
function checkpics(){
	if(canLoad)
		{
		if($('#pics').attr('checked')==1)
			addpics();
		else
			removePics();
		}
	else
		onloadPics = true;
}

function checkacts(){
	if(canLoad)
		{
		if($('#acts').attr('checked')==1)
			addacts();
		else
			removeActs();
		}
	else
		onloadActs = true;
}

function checkaccomms(){
	if(canLoad)
		{
		if($('#accomms').attr('checked')==1)
			addaccomms();
		else
			removeAccomms();
		}
	else
		onloadAccomms = true;
}

function addpics(keep){
	//alert('adding');
	$('#mapinfo').html('<span style="font-size:14pt;color:gray;">Adding pictures to map, please wait...</span>');
	centerloc = new GLatLng();
	centerloc = map.getCenter();
	bounds = map.getBounds();
	extend = bounds.toSpan();
	var extlat = extend.lat();
	var extlng = extend.lng();
	var latt = centerloc.lat();
	var lonn = centerloc.lng();
	extlat = extlat*extensionForIcons;
	createPics(latt,lonn,extlat,keep);
}

function addacts(keep){
	//alert('adding acts');
	$('#mapinfo').html('<span style="font-size:14pt;color:gray;">Adding activities to map, please wait...</span>');
	centerloc = new GLatLng();
	centerloc = map.getCenter();
	bounds = map.getBounds();
	extend = bounds.toSpan();
	var extlat = extend.lat();
	var extlng = extend.lng();
	var latt = centerloc.lat();
	var lonn = centerloc.lng();
	extlat = extlat*extensionForIcons;
	numberResults = 45;
	if(map.getZoom()>=14)
		numberResults = 55;
	createActs(latt,lonn,extlat,numberResults,keep);
}

function addaccomms(keep){
	$('#mapinfo').html('<span style="font-size:14pt;color:gray;">Adding accommodation to map, please wait...</span>');	
	//alert('adding acts');
	centerloc = new GLatLng();
	centerloc = map.getCenter();
	bounds = map.getBounds();
	extend = bounds.toSpan();
	var extlat = extend.lat();
	var extlng = extend.lng();
	var latt = centerloc.lat();
	var lonn = centerloc.lng();
	extlat = extlat*extensionForIcons;
	createAccomms(latt,lonn,extlat,keep);
}

 function removePics(){
	$('#mapinfo').html(tickInfo);
 	for(r = 0; r < q; r++)
		map.removeOverlay(temp[r]);
	q = 0;
	pics = [];
 }
 
 function removeActs(){
	$('#mapinfo').html(tickInfo);
  	for(r = 0; r < w; r++)
		map.removeOverlay(actArray[r]);
	w = 0;
 }

 function removeAccomms(){
	$('#mapinfo').html(tickInfo);
  	for(r = 0; r < g; r++)
		map.removeOverlay(accommArray[r]);
	g = 0;
 }

function createPics(lat,lng,off,keep){
	Offset = parseFloat(off);
	var Minx = parseFloat(lng-Offset);
	var Miny = parseFloat(lat-Offset);
	var Maxx = parseFloat(parseFloat(lng)+Offset);
	var Maxy = parseFloat(parseFloat(lat)+Offset);
	var string = '/ajax/get_panoramia.php?order=popularity&set=full&from=0&to=40&minx='+Minx+'&miny='+Miny+'&maxx='+Maxx+'&maxy='+Maxy+'&size=small';
	$.get('/ajax/get_panoramia.php?order=popularity&set=full&from=0&to=40&minx='+Minx+'&miny='+Miny+'&maxx='+Maxx+'&maxy='+Maxy+'&size=small', function(data){
			var jso = data;
			var tempo = eval('('+jso+')');
			if(keep==0)
				removePics();
			for(y = 0; y < tempo.photos.length;y++)
				{
				createPic(tempo.photos[y].owner_name,tempo.photos[y].photo_title,tempo.photos[y].photo_file_url,tempo.photos[y].latitude,tempo.photos[y].longitude,tempo.photos[y].width,tempo.photos[y].height,tempo.photos[y].owner_id,tempo.photos[y].photo_id);
				}
			$('#mapinfo').html(hoverInfo);
		},'html');
}

function createActs(lat,lng,off,num,keep){
	Offset = parseFloat(off);
	var Minx = parseFloat(lng-Offset);
	var Miny = parseFloat(lat-Offset);
	var Maxx = parseFloat(parseFloat(lng)+Offset);
	var Maxy = parseFloat(parseFloat(lat)+Offset);
	$.get('/ajax/get_acts.php?minx='+Minx+'&miny='+Miny+'&maxx='+Maxx+'&maxy='+Maxy+'&numresults='+num+'&actID='+IdentificationNumber+'&namee='+actName, function(data){
		var info = data;
		var activities = info.split("!!@@@!!");
		if(keep==0)
			removeActs();
		for(y = 0; y < activities.length;y++)
			{
			tempoo = activities[y].split("<<#$%>>");
			if(tempoo[0]!=null)
				createAct(tempoo[0],tempoo[1],tempoo[2],tempoo[3],tempoo[4],tempoo[5],tempoo[6]);
			}
		$('#mapinfo').html(hoverInfo);
	},'html');
}

function createAccomms(lat,lng,offf,keep){
	var twoo = origlatlong.split(" ");
	lattt = twoo[0];
	longgg = twoo[1];
	var Offset = parseFloat(offf);
	var Minx = parseFloat(lng-Offset);
	var Miny = parseFloat(lat-Offset);
	var Maxx = parseFloat(parseFloat(lng)+Offset);
	var Maxy = parseFloat(parseFloat(lat)+Offset);
	$.get('/ajax/get_accomms.php?minx='+Minx+'&miny='+Miny+'&maxx='+Maxx+'&maxy='+Maxy+'&lat='+lattt+'&lng='+longgg+'&namee='+actName, function(data){
		var info = data;
		if(info!="")
			{
			//alert("successful!");
			//alert(info);
			var activities = info.split("!@@@@@!");
			if(keep==0)
				removeAccomms();
			for(y = 0; y < activities.length;y++)
				{
				//alert(activities[y]);
				tempoo = activities[y].split("#^^#");
				if(tempoo[0]!=null)
					createAccomm(tempoo[0],tempoo[1],tempoo[2],tempoo[3],tempoo[4],tempoo[5],tempoo[6]);
				}
			}
		$('#mapinfo').html(hoverInfo);
	},'html');
}

var g = 0;
var accommArray = new Array();
function createAccomm(data,lat,lng,permalink,id,namee,starsHTML){

	//alert('lat: '+lat+' lng: '+lng);
	var tinyIcon = new GIcon();
	tinyIcon.image = "http://labs.google.com/ridefinder/images/mm_20_blue.png";
	tinyIcon.iconSize = new GSize(12, 20);
	tinyIcon.iconAnchor = new GPoint(6, 20);
	tinyIcon.infoWindowAnchor = new GPoint(5, 1);
		
	markerOptions = { icon:tinyIcon };
	
	accommArray[g] = new GMarker(new GLatLng(lat, lng), markerOptions);
		
		GEvent.addListener(accommArray[g],"mouseover",function(){
			$('#mapinfo').html(data);
			});
	
		GEvent.addListener(accommArray[g],"mousedown",function(){
			//opens a page about that accommodation, where user can look up closest suppliers etc...
			map.openInfoWindowHtml(new GLatLng(lat, lng),"<div style='width:180px;'><strong>"+namee+"</strong>"+starsHTML+"<br/><ul><li><a href='Javascript:void(0);' onclick='$.post(\"/ajax/cp/user_add_id.php\", {aid: "+id+", caid: "+id+"}, function(data) {$(\"#compPool\").html(data);});closeWindow();'>Add to Comparison Pool</a></li> <li> <a href='/accommodation/"+permalink+"'>View "+namee+"'s page</a></li></ul></div>",{maxWidth:200});
			});
		GEvent.addListener(accommArray[g],"dblclick",function(){
			//opens a page about that activity, where user can look up closest suppliers etc...
			window.location = "/accommodation/"+permalink;
			});
		
	map.addOverlay(accommArray[g]);
	g++;
}


function closeWindow()
	{
	map.closeInfoWindow();
	}

var w = 0;
var actArray = new Array();
function createAct(data, lat, lng, namee, link, id, icon){
	//alert('lat: '+lat+' lng: '+lng);
	if(icon=="")
	   icon = "hicontinfo.png";
	   var tinyIcon = new GIcon();
	   tinyIcon.image = "/img/icons/"+icon;
	   tinyIcon.iconSize=new GSize(15,15);
	   tinyIcon.iconAnchor=new GPoint(7,7);
	   tinyIcon.infoWindowAnchor=new GPoint(0,0);
		
	markerOptions = { icon:tinyIcon };
	
	actArray[w] = new GMarker(new GLatLng(lat, lng), markerOptions);
		
		GEvent.addListener(actArray[w],"mouseover",function(){
			$('#mapinfo').html(data);
			});
	
		GEvent.addListener(actArray[w],"mouseout",function(){
			
			});
		
		GEvent.addListener(actArray[w],"mousedown",function(){
			//opens a page about that activity, where user can look up closest suppliers etc...
			map.openInfoWindowHtml(new GLatLng(lat, lng),"<div style='width:180px;'><a href='"+link+"'>View "+namee+"'s page</a></div>",{maxWidth:200});
			var infoWind = map.getInfoWindow();
			});
			
		GEvent.addListener(actArray[w],"dblclick",function(){
			//opens a page about that activity, where user can look up closest suppliers etc...
			window.location = link;
			});
	//alert("adding icon");	
	map.addOverlay(actArray[w]);
	w++;
}


var q = 0;
var temp = new Array();
function createPic(namE,title,url,lat,lng,w,h,ownerID,picID){
		var tinyIcon = new GIcon();
		tinyIcon.image = "/img/icons/15x15pic.png";
		   tinyIcon.iconSize=new GSize(13,11);
		   tinyIcon.iconAnchor=new GPoint(7,5);
		   tinyIcon.infoWindowAnchor=new GPoint(7,5);
		
			markerOptions = { icon:tinyIcon };


			temp[q] = new GMarker(new GLatLng(lat,lng),markerOptions);
		
			GEvent.addListener(temp[q],"mouseover",function(){
				//var stringt = ""+title+"<div><img src=\""+url+"\" width=\""+w+"\" height=\""+h+"\"/></div>";
				//doLightbox();
				var s = url.replace(/small/,"medium");
				//alert('<img src='+url+'/>');
				$('#mapinfo').html(title+'<div><div style="text-align:center;width:100%;"><a style="border:none;text-decoration:none;" target="_blank" href="http://www.panoramio.com/photo/'+picID+'"><img style="border:none;text-decoration:none;" src="'+url+'" width="'+w+'" height="'+h+'"/> </a> <br/><img src="/img/panoramio.jpg"/> </div>By: <a target="_blank" href="http://www.panoramio.com/user/'+ownerID+'">'+namE+'</a><br/><small>Photos provided by Panoramio are under the copyright of their owners</small></div>');
				//alert("once");
				});
	
			GEvent.addListener(temp[q],"mouseout",function(){

				});
		
			GEvent.addListener(temp[q],"mousedown",function(){
				//alert("you clicked!");
				//var s = url.replace(/small/,"medium");
				//window.open(s,"Photo", "width=520,height=520");
				});
			
			map.addOverlay(temp[q]);
			q++;
}


