var markers = new Array();
var target = "_blank";
var user_sign_up = false;
var TotalPages=0;
var page=0;
var totalItems=0;
var filter={};
var bounds;
var ne;
var sw;
var old_zoom_level;
var new_zoom_level;
var itemsPerPage=24;
var popItemid=0;
var tooltip;var popWin;var popItemid=0;var popUserid=0;

var set;
var showItemSlide=false;
//var server="localhost/emapia";


var server="www.emapia.com";


var icon = new GIcon();
icon.image = "http://"+server+"/img/mm_20_red.png";
icon.shadow = "http://"+server+"/img/mm_20_shadow.png";
icon.iconSize = new GSize(12, 20);
icon.shadowSize = new GSize(22, 20);
icon.iconAnchor = new GPoint(6, 20);
icon.infoWindowAnchor = new GPoint(5, 1);      

iconblue = new GIcon(icon,"http://"+server+"/img/mm_20_blue.png"); 
icongreen = new GIcon(icon,"http://"+server+"/img/mm_20_green.png"); 
iconyellow = new GIcon(icon,"http://"+server+"/img/mm_20_yellow.png"); 


/* quick hacks */
function Dimensions(left, top, width, height) {
	this.left = left;
	this.top = top;
	this.width = width;
	this.height = height;
}

function getDimensions(control) {
	var tmp = control;
	var left = 0;
	var top = 0;

	while (tmp != null) {
		left += tmp.offsetLeft;
		top += tmp.offsetTop;
		tmp = tmp.offsetParent;
	}
	
	return new Dimensions(left, top, control.offsetWidth, control.offsetHeight);
}

function getWindowHeight()
{
	var windowHeight=0;
	if (typeof(window.innerHeight)=='number')
		windowHeight=window.innerHeight;
	else if (document.documentElement&&document.documentElement.clientHeight)
		windowHeight=document.documentElement.clientHeight;
	else if (document.body&&document.body.clientHeight)
		windowHeight=document.body.clientHeight;

	return windowHeight;
}

function getWindowWidth()
{
	var windowWidth=0;
	if (typeof(window.innerWidth)=='number')
		windowWidth=window.innerWidth;
	else if (document.documentElement&&document.documentElement.clientWidth)
		windowWidth=document.documentElement.clientWidth;
	else if (document.body&&document.body.clientWidth)
		windowWidth=document.body.clientWidth;

	return windowWidth;
}


function updateFilter() {
	var t = $(this);
	tab = t.attr("tab");
	filter.set =t.attr("set");
}

function onResize() {
	if ($("#map").css("display") == "none")
		return;
	// resize the map
	var m = $("#map").get(0);
	var d = getDimensions(m);
	var windowHeight = getWindowHeight();
	m.style.height = (windowHeight - d.top - 46) + "px";
	if (map) map.checkResize();
	d = getDimensions(m);
}

function onLoad() {
	onResize();
	$(window).resize(onResize);
	$("#tabx > li > a").click(function () { return activateTab($(this).attr("tab"), true); });
	$("#tabPop > li > a").click(function () { return activePopTab($(this).attr("set"),popItemid); });
	setupGMap("map");
}

function activateTab(tabIndex, refresh) {
	$("#tabx > li.active").removeClass("active").find(".total_photos").html("");
	$("#tabx > li > a[@tab=" + tabIndex + "]").each(updateFilter).parent().toggleClass("active").find(".loading").css("display", "inline");
	if (refresh)
		onMoveEndMap();

	return false;
}

function activePopTab(set,pitemid){

	popItemid=pitemid;
	$("#tabPop > li.active").removeClass("active").find("span").html("");
	var loading = $("#tabPop > li > a[@set=" + set + "]").parent().toggleClass("active").find(".loading").css("display", "inline");
	$.get("map/get_item_details.php",{userid:popUserid,itemid:pitemid,set:set}, function(rs){ $("#tabContent").html(rs);setTimeout(function() { loading.css("display", "none"); }, 1000);});

	return false;
}


function getMapType(i) { return map.getMapTypes()[i]; }

function addAddressToMap(response) {
	if (!response || response.Status.code != 200) {
		point = new GLatLng(0,0)
		map.setCenter(point,3);
	} else {
		
		place = response.Placemark[0];
		point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);
		map.setCenter(point,7);
		plotItems();
	}
}

function ZoomControl() {}

ZoomControl.prototype = new GControl();

ZoomControl.prototype.initialize = function(map) {
  var container = document.createElement("div");
  var zoomInDiv = document.createElement("div");
  this.setButtonStyle_(zoomInDiv);
  container.appendChild(zoomInDiv);
  var img = document.createElement("img");
  img.src = "http://"+server+"/img/zoomin.png";
  zoomInDiv.appendChild(img);
  
  GEvent.addDomListener(zoomInDiv, "click", function() {
    map.zoomIn();
  });

  var zoomOutDiv = document.createElement("div");
  this.setButtonStyle_(zoomOutDiv);
  container.appendChild(zoomOutDiv);
  var img = document.createElement("img");
  img.src = "http://"+server+"/img/zoomout.png";
  zoomOutDiv.appendChild(img);
  GEvent.addDomListener(zoomOutDiv, "click", function() {
    map.zoomOut();
  });

  map.getContainer().appendChild(container);
  return container;
}

ZoomControl.prototype.getDefaultPosition = function() {
  return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 30));
}

ZoomControl.prototype.setButtonStyle_ = function(button) {	
	button.style.marginBottom = "0px";
  	button.style.cursor = "pointer";
}


function onMoveEndMap() { $("#mpopup").hide();plotItems();}

function onZoom(oldLevel, newLevel){ old_zoom_level = oldLevel; new_zoom_level = newLevel; }

function blowup(userid,zoom){
	//map.closeInfoWindow();
	for (var i = 0; markers[i]; i++) {
		if (markers[i].userid == userid) {
			markers[i].setImage('img/blue.png');
			markers[i].showMapBlowup({zoomLevel:15, suppressMapPan:true});
			
		}
	}
	
}
function setupGMap(m) {
	
	m = $("#"+m).get(0);
	//itemsPerPage = Math.floor((m.offsetHeight - $(".pages").get(0).offsetHeight) / 75) * 4;
	map = new GMap2(m);
	
	map.setCenter(new GLatLng(25.271139,55.307485), 9);
	map.setMapType(G_NORMAL_MAP);
	geocoder = new GClientGeocoder();
	//map.addControl(new GSmallZoomControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new GOverviewMapControl()); 
	zoom_control = new ZoomControl();
	map.addControl(zoom_control);
	map.enableScrollWheelZoom();
	map.enableDoubleClickZoom();
	map.enableContinuousZoom();
	GEvent.addListener(map, "moveend", onMoveEndMap);
	//GEvent.addListener(map, "zoomend",onMoveEndMap);
	//GEvent.addListener(map, "click",""}});
	
	tooltip = document.createElement("div");
	tooltip.id="tooltip";
	tooltip.className="map-tooltip";
	document.getElementById("map").appendChild(tooltip);
      	tooltip.style.visibility="hidden";
	plotItems();
	//itemPreview();
}



function plotItems()
{	
	bounds = map.getBounds();
	sw = bounds.getSouthWest();
	ne = bounds.getNorthEast();
	catid = $("#catid").val();
	country = $("#countries").val();
	searchText = $("#searchText").val();
	page=0;
	$.extend(filter, {
		"minx": sw.lng(),
		"miny": sw.lat(),
		"maxx": ne.lng(),
		"maxy": ne.lat(),
		"catid":catid,
		"country":country,
		"searchText":searchText
	});
	$.getJSON("map/get_items.php", filter, function(rs){	
		totalItems = rs.count;
		var users = rs.users;
		TotalPages = (Math.ceil(totalItems/itemsPerPage));
		//alert(users.length);&& findNewMarkers(users)
		if(totalItems > 0 ){
			markers.length=0;
			map.clearOverlays();
			for (var i = 0; i < users.length; i++)
			{
				var p = users[i];
				itemMarkers(p,i);
			}
			itemPreview();
			
		}else if(totalItems == 0){
			markers.length=0;
			map.clearOverlays();
			$("#tabx > li.active span.total_photos").html("(" + totalItems + ")");
			document.getElementById("showItems").innerHTML="";
		}
	});
	
}

function findNewMarkers(users){
	alert(markers.length)
	if(markers.length == 0 || markers.length == undefined) return 1;
	if(markers.length !=  users.length)return 1;
	for (var i = 0; i < users.length; i++){
		flag =0;
		for (var j = 0; j < markers[j].length; j++) {
			if (markers[j].userid == users[i]) {
				flag =1;
				break;
			}
		}
		//if(flag ==1)break;
	}
	return flag;
}

function itemMarkers(p,i){
	var point = new GPoint(p.longitude, p.latitude);
	if(p.type == 19){
		var marker = new GMarker(point,{icon:icongreen});
	}else{
		var marker = new GMarker(point,{icon:icon});
	}
	marker.marker_id = i;
	marker.userid = p.userid;
	marker.tooltip = '';
	marker.popWindow = '';
	marker.type=p.type;
	GEvent.addListener(marker, "click", function() {
		showPopup(marker)
	});
	GEvent.addListener(marker, "mouseover", function() { 
		showTooltip(marker)
	});
	GEvent.addListener(marker, "mouseout", function() {
		tooltip.style.visibility="hidden";
	});
	
	markers[i] = marker;
	map.addOverlay(marker);
}


function showTooltip(marker,itemid) {
      	
      	if(itemid != "" && itemid!= undefined){
      	      	$.get("map/get_users_items_preview.php",{itemid:itemid,set:filter.set}, function(rs){tooltip.innerHTML=rs});

      	}else{
      		$.get("map/get_users_items.php",{userid:marker.userid}, function(rs){tooltip.innerHTML=rs});
      	}
	var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.getBounds().getSouthWest(),map.getZoom());
	var ne=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.getBounds().getNorthEast(),map.getZoom());
	var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
	var anchor=marker.getIcon().iconAnchor;
	var width=marker.getIcon().iconSize.width;
	var height=marker.getIcon().iconSize.height;
	var tooltipWidth = $("#tooltip").width();
	var tooltipheight = $("#tooltip").height();
	var n_x = offset.x - point.x - anchor.x + width ;
	var n_y =-offset.y + point.y +anchor.y
	
	if(offset.x + tooltipWidth > ne.x){
		n_x =n_x - tooltipWidth - width-anchor.x-5;
	}else if(offset.x + tooltipWidth < point.x){
		n_x =n_x + tooltipWidth + width+anchor.x+5;
	}
	
	if(offset.y - tooltipheight < ne.y){
		n_y =n_y - tooltipheight-height-5;
	}else if(offset.y - tooltipheight > point.y){
		n_y =n_y + tooltipheight+height+5;
	}
	var pos = new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(n_x, n_y)); 
	pos.apply(tooltip);
	tooltip.style.visibility="visible";
      }

function showPopup(marker,itemid) {
      	if(itemid != undefined){popItemid=itemid;}else{popItemid=0;}
      	popUserid=marker.userid;
      	//popUserid=marker;
      	activePopTab("item",popItemid);
      	$("#mpopup").css({left:"0px",top:"23px"}).show("slow");
}

function itemmouseover(userid,itemid) {
	for (var j = 0; markers[j]; j++) {
		if (markers[j].userid == userid) {
			if(markers[j].type == 0){
				markers[j].setImage('img/mm_20_blue.png');
			}else if(markers[j].type == 19){
				markers[j].setImage('img/mm_20_yellow.png');
			}
		}
	}
}
function itemmouseout(userid) {
	for (var j = 0; markers[j]; j++) {
		if (markers[j].userid == userid) {
			if(markers[j].type == 0){
				markers[j].setImage('img/mm_20_red.png');
			}else if(markers[j].type == 19){
				markers[j].setImage('img/mm_20_green.png');
			}
		}
	}
	//tooltip.style.visibility="hidden";
}
function onClickSideBar(userid,itemid){
	
	for (var j = 0; markers[j]; j++) {
		if (markers[j].userid == userid) {
			showPopup(markers[j],itemid);
		}
	}
}


function itemPreview(){
	
	$("#tabx > li.active span.total_photos").html("(" + totalItems + ")");
	
	showItemSlide=true;
	var loading = $("#tabx > li.active > a > img.loading").css("display", "inline");
	setTimeout(function() { loading.css("display", "none"); }, 2000);
	document.getElementById("showItems").innerHTML="";
	
	var en = "#enabled_next_link";
	var dn = "#disabled_next_link";
	var ep = "#enabled_previous_link";
	var dp = "#disabled_previous_link";
	
	$(page < TotalPages - 1 ? en : dn).css("display", "inline");
	$(page < TotalPages - 1 ? dn : en).css("display", "none");
	
	$(page > 0 ? ep : dp).css("display", "inline");
	$(page > 0 ? dp : ep).css("display", "none");
	
	$("#pItems").fadeTo("slow",0.9);
	//currency = $("#currencies").val();"currency":currency,
	$.extend(filter, {
			"page": page,
			"itemsPerPage":itemsPerPage
		});
	$.getJSON("map/get_item_dts.php",filter, 
	function(rs){
		var items=rs.items;
		for (var i = 0; i < items.length; i++)
		{
			var p = items[i];
			$("#showItems").append(buildPreviewDOM(p));
		}
	});
}
function imageOnerror(source){
	source.src = "http://"+server+"/img/small/nophoto.jpg";
	source.onerror = "";
}

function buildPreviewDOM(item)
{
	var id = item.itemid;
	var a = document.createElement("A");
	//a.href = "view_user_item.php?itemid=" + id;

	var img = document.createElement("IMG");

	$(img).attr({
		title: item.title,
		id: "r" + id,
		src: "http://"+server+"/img/small/"+item.picid+".jpg",
		width:80,
		height:60,
		pic_id: item.picid
		}).hover(
		function() {
			$(this).css("background", "#ff0000");
			$("#iPreview").fadeTo("slow",0.9);
			$.get("map/get_users_items_preview.php",{itemid:id,set:filter.set}, function(rs){$("#iPreview").html(rs);});
			$("#iPreview").show('slow');
			itemmouseover(item.userid,id)
				
		}, function() {
			$(this).css("background", "#ffffff");
			itemmouseout(item.userid);
			//$("#iPreview").hide('slow');
		}
	).click(function(){onClickSideBar(item.userid,id)}).error(function(){ imageOnerror(this);});

	var div = document.createElement("DIV");
	div.appendChild(a);
	a.appendChild(img);
	return div;
}



function view_user_items(id){
	window.location="view_user_item.php?itemid="+id;
}  