/*
	Hotelbooking Ajax and GMap routines
	version 0.0.3
*/

var gmarkers = [];
var html_slice=[];
var i = 0;
var rightsidehtml="";

function dump(i)
{
      gmarkers[i].openInfoWindowHtml(html_slice[i]);
}

//X3

            function addEvent(element, type, handler) {
                if (element.addEventListener) {
                    element.addEventListener(type, handler, false);
                } else {
                    // assign each event handler a unique ID
                    if (!handler.$$guid) handler.$$guid = addEvent.guid++;
                    // create a hash table of event types for the element
                    if (!element.events) element.events = {};
                    // create a hash table of event handlers for each element/event pair
                    var handlers = element.events[type];
                    if (!handlers) {
                        handlers = element.events[type] = {};
                        // store the existing event handler (if there is one)
                        if (element["on" + type]) {
                            handlers[0] = element["on" + type];
                        }
                    }
                    // store the event handler in the hash table
                    handlers[handler.$$guid] = handler;
                    // assign a global event handler to do all the work
                    element["on" + type] = handleEvent;
                }
            };
            // a counter used to create unique IDs
            addEvent.guid = 1;

            function removeEvent(element, type, handler) {
                if (element.removeEventListener) {
                    element.removeEventListener(type, handler, false);
                } else {
                    // delete the event handler from the hash table
                    if (element.events && element.events[type]) {
                        delete element.events[type][handler.$$guid];
                    }
                }
            };

            function handleEvent(event) {
                var returnValue = true;
                // grab the event object (IE uses a global event object)
                event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
                // get a reference to the hash table of event handlers
                var handlers = this.events[event.type];
                // execute each event handler
                for (var i in handlers) {
                    this.$$handleEvent = handlers[i];
                    if (this.$$handleEvent(event) === false) {
                        returnValue = false;
                    }
                }
                return returnValue;
            };

            function fixEvent(event) {
                // add W3C standard event methods
                event.preventDefault = fixEvent.preventDefault;
                event.stopPropagation = fixEvent.stopPropagation;
                return event;
            };
            fixEvent.preventDefault = function() {
                this.returnValue = false;
            };
            fixEvent.stopPropagation = function() {
                this.cancelBubble = true;
            };
                
            addEvent(window, "unload", GUnload);

//X3 end

function load(lati, longi, cid, param) 
{
      if (GBrowserIsCompatible()) {
	$('right').innerHTML="<p align='center'><br><br><br><img src='/img/24.gif'></p>";
	$('map').setStyle("width:600px; height:450px; overflow:hidden;");
        var map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(lati, longi), 13);
        map.enableDoubleClickZoom();
/* Create navigation elements, navigation line */
var map_ctrl=new GSmallMapControl();

/* add navigation elements */
map.addControl(map_ctrl);

var hotel_icon = new GIcon();
hotel_icon.image = "http://hbr.su/google-maps-icons/hotel.gif";

hotel_icon.iconsize = new GSize(16, 16);
hotel_icon.iconAnchor = new GPoint (8, 8);
hotel_icon.infoWindowAnchor = new GPoint (10, 8);

function createMarker(point,name,message,micon,latin_name)
{
        var marker = new GMarker(point, {icon:micon, title:name});
	var html="<b>"+name+"</b><br><a href=\"/"+latin_name+"/hotels/"+message+".html\">Подробнее...</a>";
        GEvent.addListener(marker, "click", function()
                {
                        marker.openInfoWindowHtml(html);
                });
gmarkers[i] = marker;
html_slice[i]=html;
rightsidehtml+='<div id=\"slice'+i+'\"><a href="javascript:void(0)" OnClick="dump(' + i + ')">' + name + '</a></div>';
i++;
return marker;
	
}

function createSightMarker(point,name,message,micon,type)
{
        var marker = new GMarker(point, {icon:micon, title:name});
	var html = "<b>"+name+"</b><br><table width=\"190\"><tr>";
	html+="<td><p align=\"JUSTIFY NOWRAP\">"+message+"</p></td></tr></table>";
        GEvent.addListener(marker, "click", function()
                {
                        marker.openInfoWindowHtml( html );
                });
gmarkers[i] = marker;
html_slice[i]=html;
if (param == "sights")  {
rightsidehtml+='<tr><td><div id=\"slice'+i+'\"><a href="javascript:void(0)" OnClick="dump(' + i + ')">' + name + '</a></div></td></tr>';}
i++;
return marker;
}

function createPlaceMarker(point,name,message,micon,type)
{
        var marker = new GMarker(point, {icon:micon, title:name});
        var html = "<b>"+name+"</b><br><table width=\"190\"><tr>";
        html+="<td><p align=\"JUSTIFY NOWRAP\">"+message+"</p></td></tr></table>";
        GEvent.addListener(marker, "click", function()
                {
                        marker.openInfoWindowHtml( html );
                });
gmarkers[i] = marker;
html_slice[i]=html;
if (param == "places")  {
rightsidehtml+='<tr><td><div id=\"slice'+i+'\"><a href="javascript:void(0)" OnClick="dump(' + i + ')">' + name + '</a></div></td></tr>';}
i++;
return marker;
}


GDownloadUrl("/cgi-bin/hotels_xml.cgi?city="+cid, function(data)
{
        var xml = GXml.parse(data);
//	if (param == "hotels")
//	{
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var k = 0; k < markers.length; k++)
        {
                var point = new GLatLng(parseFloat(markers[k].getAttribute("geo_lat")), parseFloat (markers[k].getAttribute("geo_lon")));
                var name = markers[k].getAttribute("Hotel_name");
                var message = markers[k].getAttribute("uid");
		var latin_name = markers[k].getAttribute("latin_name");
                var micon = new GIcon(hotel_icon);
                micon.image = "http://hbr.su/google-maps-icons/hotel.gif";
                var marker = createMarker(point,name,message,micon,latin_name);
                map.addOverlay(marker);
        }
//	}
	

	var markers2 = xml.documentElement.getElementsByTagName("sight");
	var titles=["Исторические места", "Театры", "Музеи", "Памятники", "Парки и сады"];
		
	if (param == "sights")	{ rightsidehtml="<table>"; }

	for (var type=0; type<titles.length; type++)
	{
	var title='<tr><td class="title"><img src="/google-maps-icons/'+type+'.gif">&nbsp;'+titles[type]+'</td></tr>';
	if (param == "sights")  { rightsidehtml+=title; }

	for (var k = 0; k < markers2.length; k++)
	{
		var s_type = markers2[k].getAttribute("sight_type");
		if (s_type != type) { 
			continue;
		}
		var point = new GLatLng(parseFloat(markers2[k].getAttribute("sight_lat")), parseFloat (markers2[k].getAttribute("sight_lon")));
		var name = markers2[k].getAttribute("sight_title");
		var message = markers2[k].getAttribute("sight_descr");
		var micon = new GIcon(hotel_icon);
		micon.image = "http://hbr.su/google-maps-icons/"+s_type+".gif";
		var marker2 = createSightMarker(point,name,message,micon,s_type);
		map.addOverlay(marker2);
	}
	}
	if (param == "sights") { rightsidehtml+="</table>";}

	var markers3 = xml.documentElement.getElementsByTagName("place");
	var place_titles=["","Бары","Кафе","Рестораны","Клубы","Кинотеатры"];
	
	if (param == "places") { rightsidehtml="<table>"; }
	
	for (var type=11; type<place_titles.length+10; type++)
	{
	var title='<tr><td class="title">'+place_titles[type-10]+'</td></tr>';
	if (param == "places") { rightsidehtml+=title; }
	
	for (var k = 0; k < markers3.length; k++)
		{
			var s_type = markers3[k].getAttribute("type");
			if (s_type != type) { continue; }
			var point = new GLatLng(parseFloat(markers3[k].getAttribute("lat")), parseFloat (markers3[k].getAttribute("lon")));
	                var name = markers3[k].getAttribute("place_title");
	                var message = markers3[k].getAttribute("place_descr");
        	        var micon = new GIcon(hotel_icon);
//			var p_type=10+s_type;
 	             	micon.image = "http://hbr.su/google-maps-icons/"+s_type+".gif";
	                var marker3 = createPlaceMarker(point,name,message,micon,s_type);
			map.addOverlay(marker3); 
		}
	}
	if (param == "places") { rightsidehtml+="</table>"; }

$('right').innerHTML=rightsidehtml;
}
);

$('littletop').innerHTML="<a href=\"\">Вернуться к списку</a><hr>";
}

}
	
function setcity()
{
	var string=$F('citylist');
	$('content').innerHTML="<p align='center'><br><br><br><img src='/img/indicator_verybig.gif'></p>";
	var url = '/cgi-bin/hotel.cgi';

	var pars = 'action=city_menu&city=' + string;

	var myAjax = new Ajax.Updater(
		{success: 'content'},
		url,
		{ method: 'get', parameters: pars, onFailure: showError}
		);
}
function set_dynamic_cities_list(country)
{
	$('dynamic_cities_list').innerHTML="<img src='/img/progressbar_microsoft.gif'>";
	var url='/cgi-bin/hotel_ajax.cgi';
	var pars='action=cities&country=' + country;
	var myAjax = new Ajax.Updater(
		{success: 'dynamic_cities_list'},
		url,
		{ method: 'get', parameters: pars, onFailure: showError}
		);
}

function setweather(id)
{
        var string=$F('citylist');
        $('weather').innerHTML="<img src='/img/indicator_verybig.gif'>";
        var url2='/cgi-bin/weather.cgi';
        var pars2='city=' + string;

        var myAjax2 = new Ajax.Updater(
                {success: 'weather'},
                url2,
                { method: 'get', parameters: pars2, onFailure: showError}
                );
}

function sight(city_id,sight_id)
{
	$('sight_description').innerHTML="<img src='/img/24.gif'>";
	var url3='/cgi-bin/hotel_index.cgi';
	var pars3='action=city_menu&city='+city_id+'&subaction=sights&sight_id='+sight_id;
        var myAjax3 = new Ajax.Updater(
                {success: 'sight_description'},
                url3,
                { method: 'get', parameters: pars3, onFailure: showError}
                );
	window.scrollTo(0,1000);
}

function place(city_id,place_id)
{
        $('sight_description').innerHTML="<img src='/img/24.gif'>";
        var url3='/cgi-bin/hotel_index.cgi';
        var pars3='action=city_menu&city='+city_id+'&subaction=places&place_id='+place_id;
        var myAjax3 = new Ajax.Updater(
                {success: 'sight_description'},
                url3,
                { method: 'get', parameters: pars3, onFailure: showError}
                );
        window.scrollTo(0,1000);
}


function tour(city_id,sight_id)
{
        $('tour_description').innerHTML="<img src='/img/24.gif'>";
        var url3='/cgi-bin/hotel_index.cgi';
        var pars3='action=city_menu&city='+city_id+'&subaction=excursions&tour_id='+sight_id;
        var myAjax3 = new Ajax.Updater(
                {success: 'tour_description'},
                url3,
                { method: 'get', parameters: pars3, onFailure: showError}
                );
        window.scrollTo(0,1000);
}

function sight_list(city_id, category)
{
	if ($('sights_'+category).innerHTML=="")
	{
	$('sights_'+category).innerHTML="<img src='/img/24.gif'>";
	var url='/cgi-bin/hotel_index.cgi';
	var pars='action=city_menu&city='+city_id+'&subaction=sights&cat='+category;
	var myAjax = new Ajax.Updater(
		{success: 'sights_'+category},
		url,
		{ method: 'get', parameters: pars, onFailure: showError}
		);
	}
	else
	{
	$('sights_'+category).innerHTML="";
	}
}

function place_list(city_id, category)
{
        if ($('places_'+category).innerHTML=="")
        {
        $('places_'+category).innerHTML="<img src='/img/24.gif'>";
        var url='/cgi-bin/hotel_index.cgi';
        var pars='action=city_menu&city='+city_id+'&subaction=places&cat='+category;
        var myAjax = new Ajax.Updater(
                {success: 'places_'+category},
                url,
                { method: 'get', parameters: pars, onFailure: showError}
                );
        }
        else
        {
        $('places_'+category).innerHTML="";
        }
}


function edit(param)
{
var vanster=eval(((screen.width)/2)-360);
var url='/cgi-bin/edit.cgi?action=show&edit='+param;
window.open((url),"pop","width=720,height=500,left=" + vanster + ",top=0,scrollbars=yes");

}

function showError()
{
	$('description').innerHTML="Error!";
}

function showErrorCities()
{
	$('dynamic_cities_list').innerHTML="Error!";
}

function set_cookie(id){
        var expiry = new Date();
        expiry.setTime(expiry.getTime() + 365*24*60*60*1000);
        document.cookie='CITY='+ id +'; path=/; expires=' + expiry.toGMTString();
}
