var iconHotel = new GIcon();
iconHotel.image = 'http://www.triplanet.hu/images/icons/hotel.png';
iconHotel.shadow = 'http://www.triplanet.hu/images/icons/shadow.png';
iconHotel.iconSize = new GSize(24, 24);
iconHotel.shadowSize = new GSize(30, 30);
iconHotel.iconAnchor = new GPoint(12, 12);
iconHotel.infoWindowAnchor = new GPoint(24, 0);
iconHotel.infoShadowAnchor = new GPoint(24, 0);
iconHotel.infoWindowAnchor = new GPoint(5, 1);

var iconHotel2 = new GIcon();
iconHotel2.image = 'http://www.triplanet.hu/images/icons/hotel2.png';
iconHotel2.shadow = 'http://www.triplanet.hu/images/icons/shadow.png';
iconHotel2.iconSize = new GSize(24, 24);
iconHotel2.shadowSize = new GSize(30, 30);
iconHotel2.iconAnchor = new GPoint(12, 12);
iconHotel2.infoWindowAnchor = new GPoint(24, 0);
iconHotel2.infoShadowAnchor = new GPoint(24, 0);
iconHotel2.infoWindowAnchor = new GPoint(5, 1);

var iconAirport = new GIcon();
iconAirport.image = 'http://www.triplanet.hu/images/icons/airport.png';
iconAirport.shadow = 'http://www.triplanet.hu/images/icons/shadow.png';
iconAirport.iconSize = new GSize(24, 24);
iconAirport.shadowSize = new GSize(30, 30);
iconAirport.iconAnchor = new GPoint(12, 12);
iconAirport.infoWindowAnchor = new GPoint(24, 0);
iconAirport.infoShadowAnchor = new GPoint(24, 0);
iconAirport.infoWindowAnchor = new GPoint(5, 1);

var iconAirport2 = new GIcon();
iconAirport2.image = 'http://www.triplanet.hu/images/icons/airport2.png';
iconAirport2.shadow = 'http://www.triplanet.hu/images/icons/shadow.png';
iconAirport2.iconSize = new GSize(24, 24);
iconAirport2.shadowSize = new GSize(30, 30);
iconAirport2.iconAnchor = new GPoint(12, 12);
iconAirport2.infoWindowAnchor = new GPoint(24, 0);
iconAirport2.infoShadowAnchor = new GPoint(24, 0);
iconAirport2.infoWindowAnchor = new GPoint(5, 1);

var iconPin = new GIcon();
iconPin.image = 'http://www.triplanet.hu/images/icons/puzzle.png';
iconPin.shadow = 'http://www.triplanet.hu/images/icons/shadow.png';
iconPin.iconSize = new GSize(24, 24);
iconPin.shadowSize = new GSize(30, 30);
iconPin.iconAnchor = new GPoint(12, 12);
iconPin.infoWindowAnchor = new GPoint(24, 0);
iconPin.infoShadowAnchor = new GPoint(24, 0);
iconPin.infoWindowAnchor = new GPoint(5, 1);

var iconArrow = new GIcon();
iconArrow.image = 'http://www.triplanet.hu/images/icons/arrow.png';
iconArrow.shadow = 'http://www.triplanet.hu/images/icons/arrow_shadow.png';
iconArrow.iconSize = new GSize(23, 27);
iconArrow.shadowSize = new GSize(23, 27);
iconArrow.iconAnchor = new GPoint(10, 25);
iconArrow.infoWindowAnchor = new GPoint(23, 0);
iconArrow.infoShadowAnchor = new GPoint(23, 0);
iconArrow.infoWindowAnchor = new GPoint(5, 1);


var link = 'http://www.triplanet.hu/images/icons/';
//var link = 'http://pluto.yton.hu/triplanet/images/icons/';


var iconPack300 = new GIcon();
iconPack300.image = link+'pack300.png';
iconPack300.shadow = 'http://www.triplanet.hu/images/icons/shadow.png';
iconPack300.iconSize = new GSize(24, 24);
iconPack300.shadowSize = new GSize(30, 30);
iconPack300.iconAnchor = new GPoint(12, 12);
iconPack300.infoWindowAnchor = new GPoint(24, 0);
iconPack300.infoShadowAnchor = new GPoint(24, 0);
iconPack300.infoWindowAnchor = new GPoint(5, 1);


var iconPack600 = new GIcon();
iconPack600.image = link+'pack600.png';
iconPack600.shadow = 'http://www.triplanet.hu/images/icons/shadow.png';
iconPack600.iconSize = new GSize(24, 24);
iconPack600.shadowSize = new GSize(30, 30);
iconPack600.iconAnchor = new GPoint(12, 12);
iconPack600.infoWindowAnchor = new GPoint(24, 0);
iconPack600.infoShadowAnchor = new GPoint(24, 0);
iconPack600.infoWindowAnchor = new GPoint(5, 1);


var iconPack1000 = new GIcon();
iconPack1000.image = link+'pack1000.png';
iconPack1000.shadow = 'http://www.triplanet.hu/images/icons/shadow.png';
iconPack1000.iconSize = new GSize(24, 24);
iconPack1000.shadowSize = new GSize(30, 30);
iconPack1000.iconAnchor = new GPoint(12, 12);
iconPack1000.infoWindowAnchor = new GPoint(24, 0);
iconPack1000.infoShadowAnchor = new GPoint(24, 0);
iconPack1000.infoWindowAnchor = new GPoint(5, 1);


var iconPack1300 = new GIcon();
iconPack1300.image = link+'pack1300.png';
iconPack1300.shadow = 'http://www.triplanet.hu/images/icons/shadow.png';
iconPack1300.iconSize = new GSize(24, 24);
iconPack1300.shadowSize = new GSize(30, 30);
iconPack1300.iconAnchor = new GPoint(12, 12);
iconPack1300.infoWindowAnchor = new GPoint(24, 0);
iconPack1300.infoShadowAnchor = new GPoint(24, 0);
iconPack1300.infoWindowAnchor = new GPoint(5, 1);


var iconPack1600 = new GIcon();
iconPack1600.image = link+'pack1600.png';
iconPack1600.shadow = 'http://www.triplanet.hu/images/icons/shadow.png';
iconPack1600.iconSize = new GSize(24, 24);
iconPack1600.shadowSize = new GSize(30, 30);
iconPack1600.iconAnchor = new GPoint(12, 12);
iconPack1600.infoWindowAnchor = new GPoint(24, 0);
iconPack1600.infoShadowAnchor = new GPoint(24, 0);
iconPack1600.infoWindowAnchor = new GPoint(5, 1);


var iconPack2000 = new GIcon();
iconPack2000.image = link+'pack2000.png';
iconPack2000.shadow = 'http://www.triplanet.hu/images/icons/shadow.png';
iconPack2000.iconSize = new GSize(24, 24);
iconPack2000.shadowSize = new GSize(30, 30);
iconPack2000.iconAnchor = new GPoint(12, 12);
iconPack2000.infoWindowAnchor = new GPoint(24, 0);
iconPack2000.infoShadowAnchor = new GPoint(24, 0);
iconPack2000.infoWindowAnchor = new GPoint(5, 1);




var customIcons = [];
customIcons[1] = iconHotel;
customIcons[2] = iconAirport;
customIcons[3] = iconHotel2;
customIcons[4] = iconPin;
customIcons[5] = iconAirport2;
customIcons[12] = iconArrow;

customIcons[6] = iconPack300;
customIcons[7] = iconPack600;
customIcons[8] = iconPack1000;
customIcons[9] = iconPack1300;
customIcons[10] = iconPack1600;
customIcons[11] = iconPack2000;


var mapdataurl = 'lib/gmap.php';
var searchurl = "http://repulojegy.triplanet.hu/index.php?do=hotel&step=2";
var map = null;
var geocoder = null;
var centerpoint = null;
var geoXml;
var myPano;
var photo_count=0;


var customSettings = [{
	'controll': 'large',
	'overview': true,
	'type': true,
	'zoom': true,
	'onlyresults': true,
	'center': false,
	'scrollzoom': false,
	'zoomlevel': 13,
	'bubble': 'click',
	'dp': false
}];

function initialize_map(name, code, point, func) {
  if (GBrowserIsCompatible()) {

    map = new GMap2(document.getElementById("gmap"));

    if(!point){
    	var center = new GLatLng(0, 0);
    }else{
    	var center = point;
    }
    map.setCenter(center, customSettings[0].zoomlevel);


    if(customSettings[0].controll=="large"){
    	map.addControl(new GLargeMapControl3D());
    }else if(customSettings[0].controll=="small") {
    	map.addControl(new GSmallMapControl3D());
    }
    if(customSettings[0].type){
    	map.addControl(new GMapTypeControl());
    }
    if(customSettings[0].overview){
		map.addControl(new GOverviewMapControl());
	}
    if(customSettings[0].zoom){
		map.enableDoubleClickZoom();
    }
    if(customSettings[0].scrollzoom){
		map.enableScrollWheelZoom();
    }

    geocoder = new GClientGeocoder();

    if(name && !point){
    	showAddress(name);
    }

    if(code){
    	var tmp = code.split("|");
    	loadXMLdata(tmp[0], tmp[1]);
    }

    if(func){
    	eval(func);
    }
  }
}

function showAddress(address) {
	if (geocoder) {
		geocoder.getLatLng(
		address,
		function(point) {
			if (point) {
			  centerpoint = point;
			  map.setCenter(point, customSettings[0].zoomlevel);
			  /*
			  var marker = new GMarker(point);
			  map.addOverlay(marker);
			  marker.openInfoWindowHtml(address);
			  */
			}
		}
		);
	}
}

function createMarker(point, html, type, url) {
  var marker = new GMarker(point, customIcons[type]);
  if(html){
	  GEvent.addListener(marker, customSettings[0].bubble, function() {
	    marker.openInfoWindowHtml(html);
	  });
  }
  
  if(url){
	  GEvent.addListener(marker, "click", function() {
	    document.location = url;
	  });
  }
  return marker;
}

function loadXMLdata(code, params) {
	if(!params) params = "";

    GDownloadUrl(mapdataurl + "?code=" + code + params, function(data) {
      var xml = GXml.parse(data);
      var markers = xml.documentElement.getElementsByTagName("marker");
      for (var i = 0; i < markers.length; i++) {
        var name = markers[i].getAttribute("name");
        var address = markers[i].getAttribute("address");
        var stars = markers[i].getAttribute("stars");
        var price = markers[i].getAttribute("price");
        var unit = markers[i].getAttribute("unit");
        var loc = markers[i].getAttribute("code");
        var type = markers[i].getAttribute("type");
        var link = markers[i].getAttribute("link");
        var dt = markers[i].getAttribute("date");
        var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                parseFloat(markers[i].getAttribute("lng")));
		
		if(stars && address)
			var html = "<" + "h2" + ">" + name + " <" + "img src='images/sstar" + stars + ".gif' alt='' /" + ">" + "<" + "/h2" + "> " + address;
		else
			var html = "<" + "h2" + ">" + name + "<" + "/h2" + "> ";
		
		if(price) html += '<br/><strong class="yellow biger">' + price + ' Ft</strong> / ' + unit;
        html += "<" + "br />" + "<a href=" + link + ">további információk...</a>";

        var marker = createMarker(point, html, type);
        map.addOverlay(marker);
      }
    });
}

function loadXMLdata2(code, type, aport) {
	var params = "";
	
	if(type) params = "&type="+type;

	if(aport) params += "&aport="+aport;
	
    GDownloadUrl(mapdataurl + "?code=" + code + params, function(data) {
      var xml = GXml.parse(data);
      var markers = xml.documentElement.getElementsByTagName("marker");
      for (var i = 0; i < markers.length; i++) {
        var name = markers[i].getAttribute("name");
        var num = markers[i].getAttribute("num");
        var link = markers[i].getAttribute("link");
        var tp = markers[i].getAttribute("type");
        var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                parseFloat(markers[i].getAttribute("lng")));

        html = "";
		html = "<" + "span class='biger2'" + ">" + name + "<" + "/span" + "> " + "<" + "br /" + ">";

		if(type==1){
        	html += "szállodák összesen: " + num + "<br />";
        	html += "<a href=" + link + ">szállások megtekintése...</a>";
		}else if(type==2){
        	html += "ajánlatok száma összesen: " + num + "<br />";
        	html += "<a href=" + link + ">ajánlatok megtekintése...</a>";
		}

        var marker = createMarker(point, html, tp);
        map.addOverlay(marker);
      }
    });
}


function loadXMLfile(file) {
	
    GDownloadUrl(file, function(data) {
    
      var xml = GXml.parse(data);
      var markers = xml.documentElement.getElementsByTagName("marker");
      for (var i = 0; i < markers.length; i++) {
        var city = markers[i].getAttribute("city");
        var link = markers[i].getAttribute("link");
        var tp = markers[i].getAttribute("type");
        var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                parseFloat(markers[i].getAttribute("lng")));

		var html = "<" + "span class='biger2'" + ">" + city + "<" + "/span" + "> " + "<" + "br /" + ">";
		
       	html += "<a href=" + link + ">ajánlatok megtekintése...</a>";

        var marker = createMarker(point, false, tp, link);
        map.addOverlay(marker);
      }
    });
}

function loadXMLdataDirect(data)
{

      var xml = GXml.parse(data);
      var markers = xml.documentElement.getElementsByTagName("marker");
      for (var i = 0; i < markers.length; i++) {
        var name = markers[i].getAttribute("name");
        var num = parseInt(markers[i].getAttribute("num"));
        var link = markers[i].getAttribute("link");
        var type = markers[i].getAttribute("type");
        var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                parseFloat(markers[i].getAttribute("lng")));

		if(num >= 2000)
		{
			type=11;
		}
		else if(num >= 1600)
		{
			type=10;
		}
		else if(num >= 1300)
		{
			type=9;
		}
		else if(num >= 1000)
		{
			type=8;
		}
		else if(num >= 600)
		{
			type=7;
		}
		else if(num < 600)
		{
			type=6;
		}


        html = "";
		html = "<" + "span class='biger2'" + ">" + name + "<" + "/span" + "> " + "<" + "br /" + ">";
        html += "Csomagok összesen: " + num + "<br />";
        html += "<a target=\"parent\" href=" + link + ">csomagok megtekintése...</a>";

        var marker = createMarker(point, html, type);
        map.addOverlay(marker);
      }

}

function createGTAlink(code, date) {
	var tmp = code.split("|");

	var url = searchurl;
	url += "&__rCity=" + tmp[1];
	url += "&__rCityName=" + tmp[0];
	url += "&__itemCode=" + tmp[2];
	url += "&date1=" + date;
	url += "&nights=1";
	url += "&room_type[1]=TB&room_num[1]=1";

	return url;
}

function setCenter(point){
	if(map && (centerpoint || point)) {
		if(point){
			map.setCenter(point, customSettings[0].zoomlevel);
		}else{
			map.setCenter(centerpoint, customSettings[0].zoomlevel);
		}
	}
}

function clearMap() {
	if(map) map.clearOverlays();
}

function setMap(code, m, aport){
	var hotel = $('#showHotels').attr("checked");
	if(!hotel && !aport){
		clearMap();
	}else if(aport && !hotel){
		clearMap();
		var params = "&aport="+aport+"&onlyaports=1";
		loadXMLdata(code, params);
	}else{
		clearMap();
		var mincat = $('#st1').val();
		var maxcat = 0; //$('#st2').val();
		var params = "&type=0&rating=" + mincat + "|" + maxcat;
		
		if(aport)
		params += "&aport="+aport;
		
		loadXMLdata(code, params);
	}
}

function setMapCities(code, type, aport){
	clearMap();

	if(!type) type = 1;
	loadXMLdata2(code, type, aport);
}

function initialize_streetview(div, point, pov){
	if(!pov) pov = 360;
	myPOV = {yaw:pov, pitch:0};
	panoramaOptions = { latlng:point, pov:myPOV };
	myPano = new GStreetviewPanorama(document.getElementById(div), panoramaOptions);
	GEvent.addListener(myPano, "error", handleNoFlash);
}

function handleNoFlash(errorCode) {
	return;
}

function _showMarker(_lat, _long, _icon){
    var point = new GLatLng(_lat, _long);
    initialize_map(false, false, point);
    
    var marker = createMarker(point, false, _icon);
    map.addOverlay(marker);    
}


function _show_picture(picture, point, lat, lng)
{ 
	var photo = new TPhoto();
	photo.id = 'photo_'+photo_count;
	photo.src = picture;
	photo.percentOpacity = 100;
	
	if(point)
	photo.anchorTopLeft = point;
	else if(lat && lng)
	photo.anchorTopLeft = new GLatLng(lat,lng);
	else
	return;
	
	photo_count++;
	map.addTPhoto(photo);
}



function _show_pictures(pictures)
{
	for(var i in pictures)
	{
		_show_picture(pictures[i].picture, pictures[i].point, pictures[i].lat, pictures[i].lng)
	}
}