// JavaScript Document
var map = false;
var COOKIE_DATA = new Array();
var viewmode = "map";
var remembers_needs_update  = true;

function load()
{
    loadCookie();

    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));

        if (!map) return;

        map.usageType = "o";

        setupMap();

    }

    viewlist = (get_cookie_data("viewlist").length==0) ? true : (get_cookie_data("viewlist")=="true") ? true : false;
    viewmap  = (get_cookie_data("viewmap").length==0) ? true :  (get_cookie_data("viewmap")=="true") ? true : false;

    // switchToList("list",true);
    // switchToMap("map",true);

    display_remembers();

}

function unload(){
    try {
        GUnload();
    } catch (e) {};

    storeCookie();
}

function load_marker(data) {

}

function panTo(which,nr, zoomlevel) {
    if (viewmode.indexOf("map")==-1) {
        if (which[nr-1]['link'])
            window.location.href = which[nr-1]['link'];

        if (which[nr-1]['short_link'])
            window.location.href = which[nr-1]['short_link'];

        return;
    }
    if (panTo.arguments.length < 3)
        zoomlevel = 24;
    GEvent.trigger(which[nr-1],"triggerinfo");
    map.setZoom(24);
    var latlng = which[nr-1].getPoint();
    window.setTimeout("map.panTo(new GLatLng("+latlng.lat()+","+latlng.lng()+"))",500);
    window.location.hash = "#h2";
}

function switchToList(detail_name) {
    if (switchToList.arguments.length==1)
        viewlist = !viewlist;

    set_cookie_data("viewlist",viewlist);

    var details = document.getElementById(detail_name);

    if (!details) return;

    if (viewlist) {
        details.style.display    = "block";
        details.style.visibility = "visible";
        document.getElementById("showlist").style.textDecoration = "underline";
    } else {
        details.style.display    = "none";
        details.style.visibility = "visible";
        document.getElementById("showlist").style.textDecoration = "none";
    }
}

function switchToMap(map_name) {
    if (switchToMap.arguments.length==1)
        viewmap = !viewmap;
    set_cookie_data("viewmap",viewmap);

    var map_div = document.getElementById("map");
    if (!map_div) return;

    if (viewmap) {
        map_div.style.visibility = "visible";
        map_div.style.display = "block";

        document.getElementById("showmap").style.textDecoration = "underline";
    } else {
        map_div.style.display = "none";
        map_div.style.visibility = "hidden";

        document.getElementById("showmap").style.textDecoration = "none";
    }

}
function set_cookie_data(name,value) {
    var i = 0;
    while (i<COOKIE_DATA.length) {
        if (COOKIE_DATA[i][0] == name) {
            COOKIE_DATA[i][1] = value;
            storeCookie();
            return;
        }
        i++;
    }
    COOKIE_DATA.push(new Array(name,value));
}
function get_cookie_data(name) {
    var i = 0;

    while (i<COOKIE_DATA.length) {
        if (COOKIE_DATA[i][0] == name) {
            return COOKIE_DATA[i][1];
        }
        i++;
    }
    return "";
}
function storeCookie() {
    var a = new Date();
    // 182 Tage speichern
    a = new Date(a.getTime() +1000*60*60*24*182);

    out_str = "";

    for(var i=0; i<COOKIE_DATA.length; i++) {
        out_str += COOKIE_DATA[i][0] + "#" + escape(COOKIE_DATA[i][1]) + "&";
    }

    document.cookie = 'data=' + out_str + '; Path=/; expires='+a.toGMTString()+';';
}

function loadCookie() {
    if (document.cookie) {
        var data = document.cookie;

        data = decodeURI(data);

        var start = data.indexOf("data=");

        if (start==-1) return;

        data = data.substr(start + 5);

        var end = data.indexOf(";");

        if (end==-1)
            data = data.substr(0);
        else
            data = data.substr(0,end);

        var values = data.split("&");

        COOKIE_DATA = new Array();

        for (var i=0; i<values.length; i++) {
            var value = values[i].split("#");
            if (value[0].length>0) {
                COOKIE_DATA.push(new Array(value[0], unescape(value[1]) ));
            }
        }
    }
}
function get_inner_height() {
    var w;
    if (self.innerHeight) {
        w = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) {
        w = document.documentElement.clientHeight;
    } else if (document.body) {
        w = document.body.clientHeight;
    }
    return w;
}
function get_scroll_top() {
    var y;
    if (self.pageYOffset) {
        y = self.pageYOffset;
    } else if (document.documentElement && document.documentElement.scrollTop) {
        y = document.documentElement.scrollTop;
    } else if (document.body) {
        y = document.body.scrollTop;
    }
    return y;
}
function draw_circle(center, radius_km, color, line_width) {
    var to_r = Math.PI / 180;
    var radius = ( 360 / (2 * Math.PI * 6371.0) ) * radius_km;
    var points = new Array();

    /*
    var tl = map.fromContainerPixelToLatLng(new GPoint(0,0));
    var br =  map.fromContainerPixelToLatLng(new GPoint(200,200));

    lat_aspect = tl.lat() / br.lat();
    lng_aspect = tl.lng() / br.lng();
    */
    for    (var i=0; i<360; i+=5){
        var point = new GLatLng(
                                center.lat() + (radius * Math.sin(i * to_r) ) ,
                                center.lng() + (radius * Math.cos(i * to_r) ) * 1.6
                        );
        points.push(point);
    }

    points.push(points[0]);
    var circle = new GPolyline(points, color, line_width, 0.6, "#ffffff", 0);
    map.addOverlay(circle);
}
function switchToHotels() {
    var list                    = document.getElementById("list");
    var remembers               = document.getElementById("remembers");
    var hotel_list_top_remember = document.getElementById("hotel_list_top_remember");
    var hotel_list_top_list     = document.getElementById("hotel_list_top_list");
    var numrem                  = document.getElementById("numrem");

    remembers.style.visibility = "hidden";
    remembers.style.display = "none";

    list.style.display = "block";
    list.style.visibility = "visible";

    hotel_list_top_remember.className = "hotel_list_top_deactive";

    hotel_list_top_list.className = "hotel_list_top_active";
}
function switchToRemembers() {
    var list                    = document.getElementById("list");
    var remembers               = document.getElementById("remembers");
    var hotel_list_top_remember = document.getElementById("hotel_list_top_remember");
    var hotel_list_top_list     = document.getElementById("hotel_list_top_list");
    var numrem                  = document.getElementById("numrem");

    if (remembers_needs_update) {
        update_remembers();
        return;
    }
    list.style.display = "none";
    list.style.visibility = "hidden";

    remembers.style.display = "block";
    remembers.style.visibility = "visible";

    hotel_list_top_remember.className = "hotel_list_top_active";

    hotel_list_top_list.className = "hotel_list_top_deactive";
}
function hide_standby() {
    var standby = document.getElementById("standby");

    standby.style.visibility = "hidden";
    standby.style.display = "none";
}
function show_standby() {

    var standby = document.getElementById("standby");

    if (!standby) return;

    var top = get_scroll_top() + 200;

    standby.style.top = top + "px";

    standby.style.display = "block";
    standby.style.visibility = "visible";
}
function update_remembers_callback(content) {
    document.getElementById("remembers").innerHTML = content;
    hide_standby();
    remembers_needs_update = false;
    switchToRemembers();
}
function update_remembers() {
    var ajax = new myAJAX();
    if (ajax.ajax) {
        show_standby();
        var remember_hotels = get_cookie_data("remember_hotels");
        ajax.onready = update_remembers_callback;
        ajax.fetch_data("http://www.hotel-maps.de/mycms/index.php","action=get_hotel_data&ids=" + remember_hotels,false);
    }
}
function display_remembers() {
    var remember_hotels = get_cookie_data("remember_hotels");
    var num = 0;
    if (remember_hotels.length>0)
        num = remember_hotels.split(",").length ;
    if (document.getElementById("numrem"))
        document.getElementById("numrem").innerHTML = num;
}
function remember(hotel_id) {
    if (typeof(hotel_id)=="number") {
        var remember_hotels = get_cookie_data("remember_hotels");

        if (remember_hotels.indexOf(hotel_id) == -1) {
			if (remember_hotels.length>0) remember_hotels += ",";
            remember_hotels += hotel_id;
            set_cookie_data("remember_hotels",remember_hotels);
            remembers_needs_update = true;
            display_remembers();
        }
    }
}
function remove_from_remembers(hotel_id) {
    if (typeof(hotel_id)=="number") {
        var remember_hotels = get_cookie_data("remember_hotels");

        var start = remember_hotels.indexOf(hotel_id);

        if ( start != -1) {
            var end = remember_hotels.indexOf(",",start);

            var tmp = remember_hotels.substring(0,start-1);

			if (end != -1) {
				if (start > 0) tmp +=  ",";
				tmp += remember_hotels.substr(end+1);
			}
			remember_hotels = tmp;

            set_cookie_data("remember_hotels",remember_hotels);

            update_remembers();
            display_remembers();
        }
    }
}

