
function unload() {
    if (typeof(GUnload) != 'undefined') {
        GUnload();
    }
}

var currentText;
var currentButton;
var currentContrast;
var blind;

function setCurrentText(value) {
    currentText = value;
}

function setCurrentButton(value) {
    currentButton = value;
}

function setCurrentContrast(value) {
    currentContrast = value;
}

function setBlind(value) {
    blind = value;
}

function ajaxUpdateValue(urlValue, newValue) {
    
    function onSuccess() {
    }
    
    $.ajax({
        data: {value: newValue},
        dataType: 'json',
        success: onSuccess,
        url: urlValue
    });
    
}

function upText(url) {
    switch(currentText) {
        case 'font-normal':
            ajaxUpdateValue(url, "font-bigger");
            $("body").removeClass("font-normal");
            $("body").addClass("font-bigger");
            currentText = 'font-bigger';
            break;
        case 'font-smaller':
            ajaxUpdateValue(url, "font-normal");
            $("body").removeClass("font-smaller");
            $("body").addClass("font-normal");
            currentText = 'font-normal';
            break;
    }
    
}

function downText(url) {
    switch(currentText) {
        case 'font-normal':
            ajaxUpdateValue(url, "font-smaller");
            $("body").removeClass("font-normal");
            $("body").addClass("font-smaller");
            currentText = 'font-smaller';
            break;
        case 'font-bigger':
            ajaxUpdateValue(url, "font-normal");
            $("body").removeClass("font-bigger");
            $("body").addClass("font-normal");
            currentText = 'font-normal';
            break;
    }
}

function upButton(url) {
    switch(currentButton) {
        case 'button-normal':
            ajaxUpdateValue(url, "button-bigger");
            $("body").removeClass("button-normal");
            $("body").addClass("button-bigger");
            currentButton = 'button-bigger';
            break;
        case 'button-smaller':
            ajaxUpdateValue(url, "button-normal");
            $("body").removeClass("button-smaller");
            $("body").addClass("button-normal");
            currentButton = 'button-normal';
            break;
    }
    
}

function downButton(url) {
    switch(currentButton) {
        case 'button-normal':
            ajaxUpdateValue(url, "button-smaller");
            $("body").removeClass("button-normal");
            $("body").addClass("button-smaller");
            currentButton = 'button-smaller';
            break;
        case 'button-bigger':
            ajaxUpdateValue(url, "button-normal");
            $("body").removeClass("button-bigger");
            $("body").addClass("button-normal");
            currentButton = 'button-normal';
            break;
    }
}

function upContrast(url) {
    switch(currentContrast) {
        case 'template-normal':
            ajaxUpdateValue(url, "template-dark");
            $("body").removeClass("template-normal");
            $("body").addClass("template-dark");
            currentContrast = 'template-dark';
            break;
        case 'template-light':
            ajaxUpdateValue(url, "template-normal");
            $("body").removeClass("template-light");
            $("body").addClass("template-normal");
            currentContrast = 'template-normal';
            break;
    }
}

function downContrast(url) {
    switch(currentContrast) {
        case 'template-normal':
            ajaxUpdateValue(url, "template-light");
            $("body").removeClass("template-normal");
            $("body").addClass("template-light");
            currentContrast = 'template-light';
            break;
        case 'template-dark':
            ajaxUpdateValue(url, "template-normal");
            $("body").removeClass("template-dark");
            $("body").addClass("template-normal");
            currentContrast = 'template-normal';
            break;
    }
}

function toggleBlind(obj, url) {
    
    ajaxUpdateValue(url, !blind);
    
    if (!blind) {
        
        $("link[media=all]").each(function(){
            $(this).attr("oldHref",$(this).attr("href"));
            $(this).removeAttr("href");
        });
        
        $(obj).html('Nur Text deaktivieren');
        
    } else {
        
        $("link[media=all]").each(function(){
            $(this).attr("href",$(this).attr("oldHref"));
            $(this).removeAttr("oldHref");
        });
        
        $(obj).html('Nur Text');
        
    }

    blind = !blind;

}

MAX_TEXTAREA_LENGTH = 1024;

function checkMaxSize(obj, maxsize, counter) {
    if (obj.value.length > maxsize) {
        obj.value = obj.value.substring(0,maxsize);
    }
    
    if (counter != null) {
        document.getElementById(counter).innerHTML = maxsize - obj.value.length;
    }
}

var menus = new Object();

function showMenu(obj){
    if (typeof(menus[obj.parentNode.id]) != "undefined") 
        clearTimeout(menus[obj.parentNode.id]);
    
    var uls = obj.parentNode.getElementsByTagName("ul");
    
    if (uls.length > 0) 
        $(uls[0]).show();
}

function hideMenu(obj){
    execute = function(){
        var uls = obj.parentNode.getElementsByTagName("ul");
        
        if (uls.length > 0) 
            $(uls[0]).hide();
    }
    
    menus[obj.parentNode.id] = setTimeout(execute, 500);
}

var clickedButtons = [];

function checkClickedButtons(obj) {
    $(obj).addClass("disabled");
    $(obj).unbind("click");
    obj.onclick = function() {
        return false;
    };
}

$(document).ready(function(){
    $('.button').each(function(){
        var oldFuncion = this.onclick;
        
        this.onclick = function() {
            checkClickedButtons(this);
            if (typeof(oldFuncion) != "undefined")
                oldFuncion();
        }
    });
});

var google;
var regionMap;
var regionIcon;

function initRegionMiniMap(mapId, lat, lng, callback) {
    
    google.load("maps", "2");

    // Call this function when the page has been loaded
    function initialize() {
			
        regionMap = new google.maps.Map2(document.getElementById(mapId));
			
        regionMap.addControl(new google.maps.SmallMapControl());
        regionMap.setCenter(new google.maps.LatLng(lat, lng), 8);
        
        regionIcon = new GIcon(G_DEFAULT_ICON,"/diakonie/_img/region/mark.png");
        regionIcon.iconSize = new GSize(45,68);
        regionIcon.iconAnchor = new GPoint(23,60);
        regionIcon.infoWindowAnchor = new GPoint(30, 10);
        regionIcon.imageMap = [0,0,44,0,44,38,0,38];
        
        if (callback) {
            callback();
        }
        
    }

    google.setOnLoadCallback(initialize);
	
}

function initRegionMap(mapId, lat, lng, callback) {
    
    google.load("maps", "2");

    // Call this function when the page has been loaded
    function initialize() {
			
        regionMap = new google.maps.Map2(document.getElementById(mapId));
			
        regionMap.addControl(new google.maps.LargeMapControl());
        regionMap.setCenter(new google.maps.LatLng(lat, lng), 10);
        
        regionIcon = new GIcon(G_DEFAULT_ICON,"/diakonie/_img/region/mark.png");
        regionIcon.iconSize = new GSize(45,68);
        regionIcon.iconAnchor = new GPoint(23,60);
        regionIcon.infoWindowAnchor = new GPoint(30, 10);
        regionIcon.imageMap = [0,0,44,0,44,38,0,38];
        
        if (callback) {
            callback();
        }
        
    }

    google.setOnLoadCallback(initialize);
	
}

function addInfoMark(lat, lng, title, description, username, url) {
    var point = new google.maps.LatLng(lat, lng);
    var marker = new GMarker(point, {icon:regionIcon});
    GEvent.addListener(marker, "click", function() {
        if (description.length > 100) {
            description = description.substr(0, 96) + '...';
            description = description.replace(/'\n'/g, '<br/>');
        }
        marker.openInfoWindowHtml('<strong>Titel:</strong> '+title+'<br/><br/><strong>Beschreibung:</strong> '+description+'<br/><br />von '+username+'<br/><br/><a href="'+url+'" class="button">mehr</a>');
    });
    regionMap.addOverlay(marker);
}

function addDraggableMark(lat, lng) {
    var point = new google.maps.LatLng(lat, lng);
    var marker = new GMarker(point, {draggable:true, icon:regionIcon});
    regionMap.addOverlay(marker);
    google.maps.Event.addListener(marker, "dragend", function() {
        document.getElementById("lat").value = marker.getLatLng().lat();
        document.getElementById("lng").value = marker.getLatLng().lng();
    });
    google.maps.Event.addListener(regionMap,"click", function(overlay,point) {
        if (point) {
            marker.setLatLng(new google.maps.LatLng(point.lat(), point.lng()));
            document.getElementById("lat").value = point.lat();
            document.getElementById("lng").value = point.lng();
        }
    });                
}

function setupMark(lat, lng) {
    var point = new google.maps.LatLng(lat, lng);
    var marker = createMarker(point);
    regionMap.addOverlay(marker);
                        
    google.maps.Event.addListener(marker, "dragend", function() {
        document.getElementById("lat").value = marker.getLatLng().lat();
        document.getElementById("lng").value = marker.getLatLng().lng();
    });
    google.maps.Event.addListener(regionMap,"click", function(overlay,point) {
        if (point) {
            marker.setLatLng(new google.maps.LatLng(point.lat(), point.lng()));
            document.getElementById("lat").value = point.lat();
            document.getElementById("lng").value = point.lng();
        }
    });                
}

function createMarker(point, html) {
    var marker = new GMarker(point, {draggable:true, icon:regionIcon});
    if (html) {
        GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(html);
        });
    }
    return marker;
}
