var busy = false;

function renderContactMap(con) {
    if (GBrowserIsCompatible()) {
        var map = new GMap2(con);
        var pnt = new GLatLng(51.218758,7.650798);
        var mrk = new GMarker(pnt);
        function openInfoBox() {
            mrk.openInfoWindow(
                '<div class="map_inner_w"><strong>MIT Mark</strong><br />Friedrichstraße 21<br />58507 Lüdenscheid<br /><a href="http://maps.google.de/maps?f=q&hl=de&geocode=&q=MIT,+Friedrichstra%C3%9Fe+21,+L%C3%BCdenscheid&ie=UTF8&ll=51.219519,7.628288&spn=0.015993,0.04549&t=h&z=15&iwloc=A" target="_blank">mehr Informationen »</a></div>'
            );
        }
        map.setCenter(pnt, 13, G_HYBRID_MAP);
        map.addOverlay(mrk);
    	map.addControl(new GMapTypeControl());
    	map.addControl(new GLargeMapControl());
    	map.addControl(new GScaleControl());
        GEvent.addListener(mrk, 'click', function() {
            openInfoBox();
        });
        openInfoBox();
    }
}

function initSlide(obj, items, divs, w, h, mg) {
    w = typeof(w) != 'undefined' ? w : 298;
    h = typeof(h) != 'undefined' ? h : 263;
    mg = typeof(mg) != 'undefined' ? mg : 3;
    divs = typeof(divs) != 'undefined' ? divs : 3;
    
    var pos = 0;
    
    var sl = obj.getElement('.inner');
    
    var l = obj.getElement('a.left');
    
    var r = obj.getElement('a.right');
    
    var m;
    
    var open = false;
    
    var text_extended = false;
    
    var slide = new Fx.Morph(
        sl, {
            duration: 500, 
            transition: Fx.Transitions.Cubic.easeOut,
            onStart: function() {
                busy = true;
                if (text_extended) {
                    text_extended.start({
                        'height': h
                    });
                }
                if (open) {
                    open.start({
                        'width': w
                    });
                }
                text_extended = false;
                open = false;
            },
            onComplete: function() {
                if (pos >= items - divs)
                {
                    r.addClass('rinactive');
                } 
                else
                {
                    r.removeClass('rinactive');
                }
                
                if (pos > 0)
                {
                    l.removeClass('linactive');
                }
                else
                {
                    l.addClass('linactive');
                }
                
                busy = false;
            }
        }
    );
    
    obj.getElements('a.close').each(function(c){
        c.addEvent('click', function() {
            if (text_extended) {
                text_extended.start({
                    'height': h
                });
            }
            if (open) {
                open.start({
                    'width': w 
                });
            }
            text_extended = false;
            open = false;
        });
    });

    function startSlide(direction, single) {
        single = typeof(single) != 'undefined' ? single : false;
        var x;
        if (!single) {
            for (var i = divs ; i > 0 ; i--) {
                x = pos + (i * direction * -1);
                if (x >= 0 && x <= items - divs) {
                    pos = x;
                    m = (w + mg) * pos * -1;
                    break;
                }
            }
        } else {
            pos = pos + 1;
            m = (w + mg) * pos * direction;
        }
        if (!busy) {
            slide.start({
                'margin-left': m
            });
        }
    }
    
    l.addEvent('click', function() {
        startSlide(1);
    });
    
    r.addEvent('click', function() {
        startSlide(-1);
    });
    
    obj.getElements('a.more').each(function(l) {
        var par = l.getParent().getParent().getParent();
        var text = l.getParent().getParent().getElement('.ex_text');
        var closer = par.getElement('a.close');
        var expand_text = new Fx.Morph(
            text, {
                duration: 250, 
                transition: Fx.Transitions.Back.easeInOut,
                onComplete: function() {
                    busy = false;
                }
            }
        );
        var expand = new Fx.Morph(
            par, {
                duration: 500, 
                transition: Fx.Transitions.Cubic.easeInOut,
                onStart: function() {
                    busy = true;
                    if (text_extended) {
                        text_extended.start({
                            'height': h
                        });
                    }
                    if (open) {
                        open.start({
                            'width': w 
                        });
                    }
                    text_extended = expand_text;
                    open = expand;
                },
                onComplete: function() {
                    if (text_extended == expand_text) {
                        if (closer) 
                        {
                            closer.setStyle('display', 'block');
                        }
                        var scH = text.getScrollSize().y;
                        var viH = text.getSize().y;
                        if (scH > viH) 
                        {
                            expand_text.start({
                                'height': scH
                            });
                        } 
                        else 
                        {
                            busy = false;
                        }
                    } else {
                        if (closer) 
                        {
                            closer.setStyle('display', 'none');
                        }
                        busy = false;
                    }
                }
            }
        );
        l.setProperty('onclick','return false');
        l.addEvent('click', function() {
            if (open != expand) {
                var relPos = par.getPosition(par.getParent()).x;
                relPos = relPos - (pos * (w + mg));
                if (relPos + w + mg > divs * w && !open) {
                    startSlide(-1, true);
                }
                expand.start({
                    'width': (w * 2) + mg
                });
            }
        });
    });
    
    return false;
}

window.addEvent('domready', function() {
    
    $$('a').each(function(a){
        if (a.getProperty('rel') == 'external') {
            a.setProperty('target','_blank');
        }
        a.addEvent('click',function (){
            if (a.blur) a.blur();
        });
    })
});
