var mnu_anim, loading = false, loaded = [];
var correct_sidecontact = false;
var latlng = [51.132322888096,7.588790059089661];
var map, gdir, mrk, directed = false;

function openInfoBox() {
    mrk.openInfoWindow(
        '<div class="map_inner_w">' + 
        '<strong>Bernhard Kriesten GmbH</strong><br />' + 
        '<small>Tief- und Straßenbau</small><br />' +
        'Friedrich Ebert Stra&szlig;e 303<br />' + 
        'D-58566 Kierspe<br /></div>'
    );
}

function setDirections(fromAddress, toAddress) {
    gdir.load("from: " + fromAddress + " to: " + toAddress);
    
    return false;
}

function onGDirectionsLoad() { 
    if (directed === false) {
        mrk.hide();
        mrk.closeInfoWindow();
    }
}

function handleErrors() {
    if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
    {
    alert("Zu der eingegebenen Adresse konnten keine geographischen Daten gefunden werden. Möglicherweise haben Sie eine relativ neue oder falsche Adresse eingegeben.\nError code: " + gdir.getStatus().code);
    }
    else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
    {
    alert("Die Geocoding-Anfrage konnte nicht erfolgreich ausgeführt werden. Eine genaue Ursache ist nicht bekannt.\n Error code: " + gdir.getStatus().code);
    }
    else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
    {
    alert("Der HTTP q Parameter fehlt oder hat keinen Wert. Möglicherweise wurde ein leeres Adressfeld übermittelt.\n Error code: " + gdir.getStatus().code);

    //   else if (gdir.getStatus().code == G_UNAVAILABLE_ADDRESS)  <--- Doc bug... this is either not defined, or Doc is wrong
    //     alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir.getStatus().code);
    }
    else if (gdir.getStatus().code == G_GEO_BAD_KEY)
    {
    alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code);
    }
    else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
    {
    alert("Die Anfrage konnte nicht vollständig verarbeitet werden.\n Error code: " + gdir.getStatus().code);
    }
    else 
    {
    alert("Ein unbekannter Fehler ist aufgetreten.");
    }
}

function renderMap(direction) {
    if (GBrowserIsCompatible()) {
        var con = document.getElementById('map');
        map = new GMap2(con);
        var pnt = new GLatLng(latlng[0], latlng[1]);
        mrk = new GMarker(pnt);

        map.addOverlay(mrk);
        map.addControl(new GMapTypeControl());
    	map.addControl(new GSmallMapControl());
    	map.addControl(new GScaleControl());
        
        if (direction === true) {
            gdir = new GDirections(map, document.getElementById("directions"));
            GEvent.addListener(gdir, "load", onGDirectionsLoad);
            GEvent.addListener(gdir, "error", handleErrors);
            
            setDirections("A45 Lüdenscheid", "Friedrich Ebert Straße 303, 58566 Kierspe");
        } else {
            map.setCenter(pnt, 16, G_HYBRID_MAP);
            GEvent.addListener(mrk, 'click', function() {
                openInfoBox();
            });
            
            $(window).load(function() {
                map.panDirection(0,1);
                openInfoBox();
            });
        }
    }
}

var slideshow = false, act_slide = null;

function fireBackground(a, con) {
    var href = $(a).attr('href');
    var title = $(a).attr('title');
    
    $(a).parents('ul:first').find('.active').removeClass('active');
    $(a).parent().addClass('active');
    
    $(con).find('.activeslide').addClass('prevslide').removeClass('activeslide');
    if (title != '') {
        $(con).find('.nextslide div:first').html(title).show();
    } else {
        $(con).find('.nextslide div:first').html('').hide();
    }
    $(con).find('.nextslide').hide().find('img:first').attr('src', href).parent().addClass('activeslide').removeClass('nextslide').fadeIn((slideshow==false ? 600 : 1620));
    $(con).find('.prevslide').removeClass('prevslide').addClass('nextslide');
}

function fireSlide(tog, a, con) {
    var current = $(con).find('.activeslide');
    
    if ($(current).find('img:first').attr('src') != $(a).attr('href')) {
        if (jQuery.inArray($(a).attr('href'), loaded) < 0) {
            $(tog).find('#loading').fadeIn(200);
            loading = true;
            $.cacheImage($(a).attr('href'), {
                load : function (e) {
                    loaded.push($(a).attr('href'));
                    fireBackground($(a), $(con));
                    $(tog).find('#loading').fadeOut(200);
                    loading = false;
                }
            });
        } else {
            fireBackground($(a), $(con));
        }
    }
}

function initSlideshow(con, tog) {
    loaded.push($(con).find('.activeslide img').attr('src'));
    $(tog).find('a').each(function(i, a) {
        $(a).click(function() {
            fireSlide(tog, a, con);
            return false;
        });
    });
    if (!$(tog).is(':visible') && $(tog).find('a').length > 1) {
        act_slide = $(tog).find('a:first').parent();
        slideshow = window.setInterval(function() {
            act_slide = $(act_slide).next('li').not('#loading').length ? $(act_slide).next('li') : $(act_slide).siblings('li').not('#loading').get(0);
            $(act_slide).find('a:first').click();
        }, 8000);
    }
}

function animBg(el, offset, sprite, time) {
    $(el).show();
    $(el).css('backgroundPosition', 'right ' + (sprite * offset) + 'px');
    sprite--;
    if (sprite >= 0) {
        mnu_anim = window.setTimeout(function() {animBg($(el), offset, sprite, time);}, time);
    }
}

function removePNGs() {
    $('h3 img, h2 img, li img').each(function() {
        if ($(this).attr('src').match(/\.(png)$/) && $(this).attr('alt') != '') {
            var alt = $(this).attr('alt');
            $(this).wrap('<span></span>').parent().html(alt);
            $(this).remove();
        }
    });
}

function updateSidebar() {
    if ($('#side-contact').length) {
        var tar = 0;
        var par = $('#side-contact').parent();
        if (correct_sidecontact === true && $('#simplepage-head').find('ul:first').outerHeight() + 185 < 325 && !$(par).parents('.outer:first').hasClass('nocorrection')) {
            $('#side-contact').parent().css({'marginTop':-185, 'borderTop':'1px solid #fff', 'height':$('#side-contact').parent().outerHeight()+185});
            tar = 185;
        }
        
        if ($(par).parents('.outer:first').outerHeight() > $(par).outerHeight() - tar) {
            $(par).height($(par).parents('.outer:first').outerHeight() + tar);
        }
    }
}

$(window).load(function(){
    var par = null, tar = 0;
    
    //updateSidebar();
    
    if ($('#side-news').length && $('#side-news').siblings().length < 1) {
        if ($('#side-news').parents('.outer:first').outerHeight() > $('#side-news').outerHeight()) {
            var h = ($('#side-news').parents('.outer:first').outerHeight() - $('#side-news').outerHeight()) /2 ;
            $.create('li', {'class':'shadow-small'}).height(h).appendTo($('#side-news'));
        }
    }
    if (!($.browser.mozilla && parseFloat($.browser.version) > 1.90) && !($.browser.safari && parseFloat($.browser.version) > 522.0)) {
        $('.shadow-small').each(function() { $(this).width($(this).width()-2).height($(this).height()-2).css('border','1px solid #f1f1f1'); });
        $('.shadow').each(function() { $(this).width($(this).width()-2).height($(this).height()-2).css({'border':'1px solid #bdbdbd', 'borderTop':'none' }); });
    }
});

jQuery().ready(function() {
    if (!$.support.opacity) { 
        removePNGs();
    }
    if ($('#slideshow').length) {
        initSlideshow($('#slideshow #slides'), $('#slideshow #slideshow-toggler'));
    }
    
    var logo = $('#homelink span:first');
    $(logo).hide().addClass('js');
    $('#homelink').hover(
        function() { $(logo).show(180); },
        function() { $(logo).hide(120); }
    );
    
    $('#navi ul li a').hover(
        function() {
            if (!$(this).parent().hasClass('act')) {
                $(this).stop().css('backgroundPosition', '0 -462px');
                animBg($(this), -42, 11, 26);
            }
        },
        function() {
            clearTimeout(mnu_anim);
        }
    );
});
