google.load("maps", "2", {"other_params": "hl=pl"});
dojo.require("dojo.cookie");
dojo.require("dojo.fx");

var servername = cutDomain(document.location.href);
var pointManager_ = null;
var map_ = null;
var sidebar_ = null;
var invite_ = null;
var menu_ = null;
var calendar_ = null;
var inotes_ = null;

dojo.addOnLoad(function() { 
    document.getElementById('footer_kontakt').onclick = function() 
    {
        map_.showBigWindowWithHTML('kontakt.html');
    }
    document.getElementById('footer_onas').onclick = function() 
    {
        map_.showBigWindowWithHTML('onas.html');
    }
    document.getElementById('footer_regulamin').onclick = function() 
    {
        map_.showBigWindowWithHTML('regulamin.html');
    }
    /*document.getElementById('footer_feedback').onclick = function() 
    {
        map_.showBigWindowWithHTML('feedback.html');
    }*/
    
    pointManager_ = new pointManagerClass();
    calendar_ = initializeCalendar('calendar', pointManager_);
    map_ = initializeMap('map', pointManager_);
    menu_ = initializeMenu(pointManager_);
    sidebar_ = initializeSidebar('sidebar_container', pointManager_);
    inotes_ = initializeNotes('inotes', pointManager_);
    //invite_ = initializeInviter('invite');
    
    reloadBanners();
});

// GOOGLE GEARS
(function() {
    // We are already defined. Hooray!
    if (window.google && google.gears) {
        return;
    }
    var factory = null;

    // Firefox
    if (typeof GearsFactory != 'undefined') {
        factory = new GearsFactory();
    } else {
        // IE
        try {
            factory = new ActiveXObject('Gears.Factory');

            if (factory.getBuildInfo().indexOf('ie_mobile') != -1) {
            factory.privateSetGlobalObject(this);
        }
        } catch (e) {
            // Safari
            if ((typeof navigator.mimeTypes != 'undefined') && navigator.mimeTypes["application/x-googlegears"]) 
            {
                factory = document.createElement("object");
                factory.style.display = "none";
                factory.width = 0;
                factory.height = 0;
                factory.type = "application/x-googlegears";
                document.documentElement.appendChild(factory);
            }
        }
    }

    if (!factory) {
        return;
    }

    if (!window.google) {
        google = {};
    }

    if (!google.gears) {
        google.gears = {factory: factory};
    }
})();

function removeFromArray(array, index)
{
 if (array.length <= 1)
     return [];
 else 
 {
     var rest = array.slice(index + 1);
     array.length = index;
     return array.concat(rest);
 }
}

/*function sendFeedback() 
{
    var forma = document.getElementById('formfeedback');
    forma.browser.value = navigator.appName + ' version: ' + navigator.appVersion;
    dojo.xhrPost({
        form: forma,
        handleAs: "text",
        handle: function(data,args) 
        {
            alert(data);
        }
    });
    map_.windowHideAndDestroy();
    return false;
}*/
 
    
function cutString(string, strlen)
{
    if (string.length > strlen)
        return string.substr(0, strlen) + '...';
    else
        return string;
}

function cutDomain(string, strlen)
{
    var text = string.replace(/http:\/\//, '').replace(/\/([ęóąśłżźćńĘÓĄŚŁŻŹĆŃa-z0-9_,A-Z\/#?&=]+)/, '');
    if (strlen)
        return cutString(text, strlen);
    else
        return text;
}

function cutLink(string)
{
    return string.replace(/http:\/\//, '');
}

function flashHighlight(input) 
{
    var anim1 = dojo.animateProperty(
        {
            node: input,
            properties: {
                backgroundColor: { start:"#ffffff", end: "#ff0000" }
            }
        }
    );
    var anim2 = dojo.animateProperty(
        {
            node: input,
            properties: {
                backgroundColor: { start:"#ff0000", end: "#ffffff" }
            },
            onEnd: function() {
                input.style.backgroundColor = '';
            }
        }
    );
    
    dojo.fx.chain([anim1,anim2]).play();
}

function reloadBanners()
{
    // brak reklam na razie
    return false;
    
    var generate = function(zone, size)
    {
        return '<iframe src="http://openx.iczas.pl/www/delivery/afr.php?zoneid=' + zone + '&cb=' + Math.ceil(Math.random() * 10000000) + '" width="' + size.w + '" height="' + size.h + '" framespacing="0" frameborder="no" scrolling="no"><a href="http://openx.iczas.pl/www/delivery/ck.php?n=' + size.n + '&cb=' + Math.ceil(Math.random() * 10000000) + '" target="_blank"><img src="http://openx.iczas.pl/www/delivery/avw.php?zoneid=' + zone + '&cb=' + Math.ceil(Math.random() * 10000000) + '&n=' + size.n + '" border="0" alt="" /></a></iframe>';
    }
    
    var size = [{w: 750, h: 100, n: 'ad1e5330'}, {w: 160, h: 600, n: 'a83d7e6a'}];
    
    document.getElementById('banner_top').innerHTML = generate(14, size[0]);
    document.getElementById('banner_right').innerHTML = generate(16, size[1]);
}

function sameDates(dateOne, dateTwo)
{
    return (dateOne.getDate() == dateTwo.getDate() &&
        dateOne.getMonth() == dateTwo.getMonth() &&
        dateOne.getFullYear() == dateTwo.getFullYear());
}

/*function helpWindowClass(handle, msg)
{
    this.init(handle, msg);
}

helpWindowClass.prototype = {
    box: null,
    handle: null,
    msg: null,
    
    showBox: function(x, y)
    {
        if (!this.box)
        {
            this.box = document.createElement('div');
            document.body.appendChild(this.box);
            this.box.innerHTML = this.msg;
            this.box.style.position = 'absolute';
            this.box.style.backgroundColor = 'white';
            this.box.style.padding = '2px 2px 2px 2px';
            this.box.style.fontSize = '9px';
            this.box.style.border = '1px solid #393939';
        } else 
            this.box = this.box;
        
        this.box.style.top = x + 'px';
        this.box.style.left = y + 'px';
    },
    
    hideBox: function() 
    {
        if (!this.box)
        {
            document.body.removeChild(this.box);
            this.box = null;
        }
    },
    
    init: function(handle, msg) {
        this.msg = msg;
        this.handle = handle;
        
        handle.windowHelper = this;
        
        handle.onmousemove = function(e) 
        {
            this.windowHelper.showBox(0, 0);
        }
        
        handle.onmouseout = function() 
        {
            this.windowHelper.hideBox();
        }
    }
}*/

/*************************************************************************



                                MAP
                                
                                
                                
                                
*************************************************************************/


function mapClass(handle, pointManager)
{
    this.init(handle, pointManager);
}

mapClass.prototype = {
    handle: null,
    gMap: null,
    gClientGeocoder: null,
    clusterer: null,
    pointManager: null,
    loading: false,
    loader: false,
    
    window: null,
    windowSmall: null,
    windowDark: null,
    promo: null,
    
    tmpMarker: null,
    tmpMarkerLock: false,
    
    addOrReplaceTempMarker: function(point, dymek)
    {
        if (!this.tmpMarkerLock)
        {
            this.hideTempMarker();
            var icon = new GIcon(G_DEFAULT_ICON);
            this.tmpMarker = new GMarker(point, {'icon': icon});
            this.tmpMarker.standard = true;
            this.gMap.addOverlay(this.tmpMarker);
            this.tmpMarker.dataObject = dymek;
            this.tmpMarker.list = [dymek];
            
            if (dymek)
            {
                GEvent.addListener(this.tmpMarker, 'mouseover', function() {
                        map_.markerShowSmallWindow(this, true);
                    }
                );
        
                GEvent.addListener(this.tmpMarker, 'mouseout', function() {
                        if (map_.windowSmall)
                            map_.windowSmall.gtfo();
                    }
                );
            }
        }
    },
    
    lockTempMarker: function()
    {
        this.tmpMarkerLock = true;
    },
    
    isTempMarkerLocked: function()
    {
        return this.tmpMarkerLock();
    },
    
    unlockTempMarker: function()
    {
        this.tmpMarkerLock = false;
    },
    
    hideTempMarker: function()
    {
        if (!this.tmpMarkerLock)
        {
            if (this.tmpMarker)
            {
                this.gMap.removeOverlay(this.tmpMarker);
                this.tmpMarker = null;
            }
        }
    },
    
    init: function(handle, pointManager) {
        this.handle = handle;
        this.pointManager = pointManager;
        pointManager.initMap(this);
        
        try
        {
            this.gMap = new GMap2(this.handle);
            this.gMap.addControl(new GMapTypeControl(),
                new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(8, 8)));
            this.gMap.addControl(new GLargeMapControl3D(),
                new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(8, 33)));
            
            this.gMap.enableScrollWheelZoom();
            this.gMap.enableContinuousZoom();
            
            this.gClientGeocoder = new GClientGeocoder();
            
            if (dojo.cookie('imiejsca.pl.map'))
            {
                var point = dojo.fromJson(dojo.cookie('imiejsca.pl.map'));
                this.gMap.setCenter(new GLatLng(point[0], point[1]), point[2]);
            } else
            {
                if (google.loader.ClientLocation)
                {
                    var point = new GLatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
                    this.gMap.setCenter(point, 13);
                } else
                {
                    var point = new GLatLng(52.173931692568, 18.8525390625);
                    this.gMap.setCenter(point, 6);
                }
                
                map_ = this;
                
                if (navigator.geolocation)
                {
                    navigator.geolocation.getCurrentPosition(function(position) {
                            map_.gMap.setCenter(new GLatLng(position.coords.latitude, position.coords.longitude), 14);
                    });
                } else {
                        var geo = google.gears.factory.create('beta.geolocation');
                    // Get the position.
                    if (geo)
                    {
                            geo.getCurrentPosition(function(position) {
                              map_.gMap.setCenter(new GLatLng(position.latitude, position.longitude), 14);
                            });
                    }
                }
            }
        } catch (e)
        {
        }
        
        // promo class
        function promoClass(map, handle) { this.init(map, handle); }
        promoClass.prototype = {
            map: null,
            mutex: false,
            handle: null,
            
            elements: [],
            init: function(map, handle) {
                handle.innerHTML = '<div>polecamy:</div>';
                
                this.handle = document.createElement('div');
                handle.appendChild(this.handle);
                this.map = map;
                
                this.reload();
            },
            
            clearOnMap: function() {
                this.map.hideTempMarker();
            },
            
            repaintOnHandle: function() {
                this.handle.innerHTML = '';
                dojo.fadeIn({ node: this.handle }).play();
                
                for (var i = 0; i < this.elements.length; i++)
                {
                    //inner += '<div><a href="#">' + cutString(this.elements[i].nazwa, 20) + '</a></div>';
                    var div = document.createElement('div');
                    this.handle.appendChild(div);
                    var a = document.createElement('a');
                    a.data = this.elements[i];
                    var inner = '';
                    var nazwa = '';
                    switch (parseInt(this.elements[i].kategoria_glowna))
                    {
                        case 0: 
                            nazwa = 'kino';
                            inner = '<img src="/img/map/icon_kino_small.png" border="0" width="10" /> '; 
                        break;
                        case 1: 
                            nazwa = 'knajpka';
                            inner = '<img src="/img/map/icon_knajpki_small.png" border="0" width="10" /> '; 
                        break;
                        case 2: 
                            nazwa = 'zwiedzanie';
                            inner = '<img src="/img/map/icon_zwiedzanie_small.png" border="0" width="10" /> '; 
                        break;
                        case 3: 
                            nazwa = 'klub';
                            inner = '<img src="/img/map/icon_muzyka_small.png" border="0" width="10" /> '; 
                        break;
                        case 4: 
                            nazwa = 'relaks';
                            inner = '<img src="/img/map/icon_relaks_small.png" border="0" width="10" /> '; 
                        break;
                    }
                    a.innerHTML = inner + cutString(this.elements[i].nazwa.replace(/"/g, ''), 16);
                    a.href = '#';
                    a.nazwa = nazwa;
                    a.onmouseover = function() { 
                        map_.addOrReplaceTempMarker(new GLatLng(this.data.geo_szer, this.data.geo_dlug));
                        return overlib(this.data.nazwa + ', ' + this.nazwa + '<br>' + this.data.adres, BGCOLOR, '#1CA8D5', FGCOLOR, 'white', WIDTH, '-1', HEIGHT, '40'); 
                    }
                    a.onmouseout = function() { 
                        map_.hideTempMarker();
                        nd(); 
                    }
                    a.onclick = function() {
                        if (pageTracker)
                            pageTracker._trackPageview('/promo/click/' + this.data.id);
                        var point = new GLatLng(this.data.geo_szer, this.data.geo_dlug);
                        
                        var inner = { 'innerdata': this.data };
                        inner.typ = 1;
        
                        map_.addOrReplaceTempMarker(point, inner);
                        map_.lockTempMarker();
                        map_.gMap.setCenter(point);
                        map_.markerShowBigWindowAjaxPlaceById(this.data.id, 1, 1);
                    }
                    div.appendChild(a);
                }
            },
            
            reload: function() {
                this.clearOnMap();
                if (!this.mutex)
                {
                    dojo.fadeOut({ node: this.handle }).play();
                    
                    this.mutex = true;
                    var content = new Object();
                    var center = this.map.gMap.getCenter();
                    content.geo_szer = center.lat();
                    content.geo_dlug = center.lng();
                    dojo.xhrPost({
                        url: 'http://' + servername + '/application/promo.php',
                        handleAs: "json",
                        content: content,
                        promo: this,
                        timeout: 50000, // 5 sec
                        load: function(data, xhr)
                        {
                            if (data.length > 0)
                            {
                                xhr.args.promo.elements = [];
                                for (var i = 0; i < data.length; i++)
                                {
                                    xhr.args.promo.elements.push(data[i]);
                                }
                                //xhr.args.promo.repaintOnMap();
                                xhr.args.promo.repaintOnHandle();
                            }
                            xhr.args.promo.mutex = false;
                        }
                    });
                }
                
            }
        }
        
        // events
        GEvent.addListener(this.gMap, 'move', function() {
            var center = this.getCenter();
            //console.dir(center);
            dojo.cookie('imiejsca.pl.map', dojo.toJson(new Array(center.lat(), center.lng(), this.getZoom())));
        });
        
        GEvent.addListener(this.gMap, 'moveend', function() {
            pointManager_.updatePointsBounds();
            if (map_.promo)
                map_.promo.reload();
        });

        GEvent.addListener(this.gMap, 'zoomend', function(oldLevel, newLevel) {
            if (newLevel < 5)
                this.setCenter(new GLatLng(52.129891, 19.489746), 5);
                
                
            /*if (newLevel < oldLevel)
                pointManager_.updatePointsBounds();*/
        });
        
        /*GEvent.addListener(this.gMap, 'move', function() {
            if (map_.windowSmall)
            {
                var position = this.fromLatLngToContainerPixel(map_.windowSmall.marker.getLatLng());
                map_.windowSmall.style.left = (position.x + 173) + 'px';
                map_.windowSmall.style.top = (position.y + 167) + 'px';
            }
        });*/
        
        GEvent.addListener(this.gMap, "mouseover", function()
        {
            this.showControls();
        });  
        GEvent.addListener(this.gMap, "mouseout", function()
        {
            this.hideControls();
        });
        
        this.promo = new promoClass(this, document.getElementById('promo'));
    },
    
    searchLocation: function(lokacja) 
    {
        function searchClass() {};
        
        searchClass.prototype = {
            completed: true,
            searchToEnd: 0,
            elements: [],
            onEnd: function() {},
            
            oneCompleted: function() {
                //console.debug('one completed');
                if (--this.searchToEnd == 0)
                    this.onEnd();
                
            },
            searchGoogle: function(lokacja) 
            {
                this.searchToEnd++;
                if (map_.gClientGeocoder)
                {
                    map_.gClientGeocoder.getLocations(lokacja, dojo.hitch(this, function(response) {
                        if (response.Status.code == 200)
                        {
                            //console.dir(response);
                            for (var i = response.Placemark.length - 1; i >= 0; i--)
                            {
                                with (response.Placemark[i])
                                {
                                    if (AddressDetails.Country)
                                        if (AddressDetails.Country.CountryNameCode == 'PL')
                                        {
                                            szczegoly = '';
                                            with (AddressDetails)
                                            {
                                                if (Country)
	                                                szczegoly = Country.CountryName + ', ' + szczegoly;
                                                if (Country.AdministrativeArea)
                                                    szczegoly = Country.AdministrativeArea.AdministrativeAreaName + ', ' + szczegoly;
                                                if (Country.AdministrativeArea.SubAdministrativeArea)
                                                    szczegoly = Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName + ', ' + szczegoly;
                                                if (Country.AdministrativeArea.SubAdministrativeArea.Locality)
                                                    if (Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName != Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName)
                                                        szczegoly = Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName + ', ' + szczegoly;
                                                if (Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare)
                                                    szczegoly = Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName + ', ' + szczegoly;
                                                if (Country.AdministrativeArea.SubAdministrativeArea.Locality.DependentLocality)
                                                    szczegoly = Country.AdministrativeArea.SubAdministrativeArea.Locality.DependentLocality.DependentLocalityName + ', ' + szczegoly;
                                            }
                                            
                                            this.elements.unshift({ 'styp': 1, 'nazwa': szczegoly, 'adres': address, 
                                                'geo_dlug': Point.coordinates[0], 'geo_szer': Point.coordinates[1],
                                                'accuracy': AddressDetails.Accuracy});
                                        }
                                }
                            }
                        }
                        this.oneCompleted();
                    }));
                }
            },
            searchDb: function(lokacja)
            {
                this.searchToEnd++;
                dojo.xhrGet({
                    url: 'http://' + servername + '/application/search.php?l=' + lokacja,
                    handleAs: "json",
                    timeout: 100000,
                    searchObject: this,
                    load: function(data, xhr)
                    {
                        var searchObj = xhr.args.searchObject;
                        for (var i = 0; i < data.length; i++)
                        {
                            searchObj.elements.push({ 'id': data[i].id, 'styp': 2, 'nazwa': data[i].nazwa, 'adres': data[i].adres, 
                                'geo_szer': data[i].geo_szer, 'geo_dlug': data[i].geo_dlug,
                                'points': data[i].points, 
                                'kategorie': data[i].kategorie,
                                'accuracy': 7});
                        }
                        searchObj.oneCompleted();
                    }
                });
            },
            searchAll: function(lokacja, callback) 
            {
                this.onEnd = callback;
                this.searchToEnd++;
                this.searchGoogle(lokacja);
                this.searchDb(lokacja);
                this.oneCompleted();
            }
        }
        // tworzenie okna
        
        
        // przeszukujemy google i baze
        map_.showLoader();
        var searchObject = new searchClass();
        searchObject.searchAll(lokacja, function() {
            //console.dir(this.elements);
            map_.hideLoader();
            
            // jesli wiecej niz jeden to budujemy okno
            if (this.elements.length > 1)
            {
                //alert('znaleziono ' + this.elements.length);
                var window = map_.windowCreateAndShow();
                window.className += ' search_filter';
                
                var container = document.createElement('div');
                container.className = 'searchContainer';
                window.appendChild(container);
                
                if (this.elements.length >= 20)
                    container.innerHTML = '<h1>Znaleziono bardzo wiele wyników wyszukiwania, oto najbardziej trafne ' + this.elements.length + ': </h1>';
                else
                    container.innerHTML = '<h1>Znaleziono ' + this.elements.length + ' ' + ((this.elements.length > 4)?'wyników':'wyniki') + ' spełniających podane przez Ciebie kryteria:</h1>';
                for (var i = 0; i < this.elements.length; i++)
                {
                    var innerElem = document.createElement('div');
                    innerElem.element = this.elements[i];
                    innerElem.onclick = function() {
                        map_.windowHideAndDestroy();
                        var point = new GLatLng(this.element.geo_szer, this.element.geo_dlug);
                        map_.gMap.setCenter(point, Math.min(4 + parseInt(this.element.accuracy) * 2, 15));
                        map_.addOrReplaceTempMarker(point);
                        
                        if (this.element.styp == 2)
                            map_.markerShowBigWindowAjaxPlaceById(this.element.id, 1, 1);
                        var inner = { 'innerdata': this.element };
                        inner.typ = 1;
                        map_.addOrReplaceTempMarker(point, inner);
                        
                    }
                    if (this.elements[i].styp == 2)
                        innerElem.innerHTML = '<div class="miniaturka"><img src="/application/vsmall_miniaturka.php?id=' + this.elements[i].id + '"></div><a href="#">' + this.elements[i].nazwa + '</a>, <span class="kategoria">' + this.elements[i].kategorie + '</span><br>' + this.elements[i].adres;
                    else
                        innerElem.innerHTML = '<a href="#">' + this.elements[i].nazwa + '</a>';
                    container.appendChild(innerElem);
                }
            } else
            {
                if (this.elements.length > 0)
                {
                    var point = new GLatLng(this.elements[0].geo_szer, this.elements[0].geo_dlug);
                    map_.gMap.setCenter(point, Math.min(4 + parseInt(this.elements[0].accuracy) * 2, 15));
                        
                    if (this.elements[0].styp == 2)
                        map_.markerShowBigWindowAjaxPlaceById(this.elements[0].id, 1, 1);
                        
                    var inner = { 'innerdata': this.elements[0] };
                    inner.typ = 1;
                    map_.addOrReplaceTempMarker(point, inner);
                    
                } else
                    alert('Nie znaleziono szukanego miejsca, lub nazwa miejsca nie jest jednoznaczna');
            }
        });
    },
    
    getMapBoundsArray: function()
    {
        var Gbound = this.gMap.getBounds();
        var bound = {
            'latBottom': Gbound.getSouthWest().lat(),
            'latTop': Gbound.getNorthEast().lat(),
            'lngRight': Gbound.getNorthEast().lng(),
            'lngLeft': Gbound.getSouthWest().lng()}
        return bound;
    },
    
    showLoader: function()
    {
        if (!this.loader)
        {
            var loader = document.createElement('div');
            loader = document.createElement('div');
            loader.innerHTML = '<img src="/img/map/loader.gif" />';
            loader.id = 'loader';
            
            this.handle.parentNode.appendChild(loader);
            dojo.style(loader, 'opacity','0.3');
            
            this.loader = loader;
        }
    },
    
    
    hideLoader: function()
    {
        this.loader.parentNode.removeChild(this.loader);
        this.loader = null;
    },
    
    isLoading: function()
    {
        return this.loading;
    },
    
    createIcon: function(typeIndex, miejsce, innerid, polecane)
    {
        var baseIcon = new GIcon(G_DEFAULT_ICON);
        //baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
        
        if (parseInt(typeIndex) == 10)
        {
            baseIcon.iconSize = new GSize(47, 46);
            baseIcon.shadowSize = new GSize(0, 0);
            baseIcon.iconAnchor = new GPoint(23, 8);
            baseIcon.infoWindowAnchor = new GPoint(23, 8);
            baseIcon.imageMap = [0, 0, 47, 0, 47, 46, 0, 46];
        } else
        {
            if ((parseInt(typeIndex) == 3 && parseInt(miejsce) == 0) || (parseInt(typeIndex) == 1 && parseInt(polecane) == 1))
            {
                baseIcon.iconSize = new GSize(35, 35);
                baseIcon.shadowSize = new GSize(0, 0);
                baseIcon.iconAnchor = new GPoint(17, 17);
                baseIcon.infoWindowAnchor = new GPoint(17, 17);
                baseIcon.imageMap = [0, 0, 35, 0, 35, 35, 0, 35];
            }
            else
            {
                baseIcon.iconSize = new GSize(22, 22);
                baseIcon.shadowSize = new GSize(0, 0);
                baseIcon.iconAnchor = new GPoint(8, 8);
                baseIcon.infoWindowAnchor = new GPoint(8, 8);
                baseIcon.imageMap = [0, 0, 22, 0, 22, 22, 0, 22];
            }
        }
        
        var icon = new GIcon(baseIcon);
        
        switch (parseInt(typeIndex))
        {
            case 0: 
                if (innerid != null)
                    icon.image = "http://" + servername + "/img/map/icon_kino_small.png"; 
                else
                    icon.image = "http://" + servername + "/img/map/icon_kino_small2.png"; 
            break;
            case 1: 
                if (parseInt(polecane) == 1)
                    icon.image = "http://" + servername + "/img/map/knajkaPolecana.png";  
                else
                    icon.image = "http://" + servername + "/img/map/icon_knajpki_small.png";  
            break;  
            case 2: icon.image = "http://" + servername + "/img/map/icon_zwiedzanie_small.png";  break;
            case 3:
                if (parseInt(miejsce) == 1)
                    icon.image = "http://" + servername + "/img/map/icon_muzyka_small.png";  
                else
                    icon.image = "http://" + servername + "/img/map/icon_muzyka_small2.png";  
            break;
            case 4: icon.image = "http://" + servername + "/img/map/icon_relaks_small.png";  break;           
            case 10: 
                icon.image = "http://" + servername + "/application/notesicon.php?c=" + innerid.getDate() + ';' + innerid.getMonth(); 
            break;
            //case 10: icon.image = "http://" + servername + "/img/map/icon_relaks_small.png"; break;
        }
        return icon;
    },
    
    createAggregateIcon: function(counters)
    {
        var baseIcon = new GIcon(G_DEFAULT_ICON);
        //baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
        baseIcon.iconSize = new GSize(192, 80);
        baseIcon.shadowSize = new GSize(0, 0);
        baseIcon.iconAnchor = new GPoint(96, 40);
        baseIcon.infoWindowAnchor = new GPoint(96, 40);
        baseIcon.imageMap = [0, 0, 192, 0, 192, 80, 0, 80];
        
        var icon = new GIcon(baseIcon);
        //alert("http://" + servername + "/application/cloud.php?c=" + counters.toString());
        icon.image = "http://" + servername + "/application/cloud.php?c=" + counters.toString();
        //alert(icon.image);
        return icon;
    },
    
    createAggregateMarker: function(latlng, counters)
    {
        markerOptions = { 'icon': this.createAggregateIcon(counters) };
        var marker = new GMarker(latlng, markerOptions);
        
        GEvent.addListener(marker, 'click', function() {
            map_.gMap.zoomIn(marker.getLatLng(), true, true);
        });
        this.gMap.addOverlay(marker);
        return marker;
    },
    
    createMarker: function(dataObject, icon)
    {
        // marker na mapie
        markerOptions = { 'icon': icon };
        var latlng = new GLatLng(dataObject.geo_szer, dataObject.geo_dlug);
        
        var marker = new GMarker(latlng, markerOptions);
        marker.dataObject = dataObject;
        
        this.gMap.addOverlay(marker);
        //this.clusterer.addMarker(marker);
        
        //GEvent.addListener(marker, 'mouseover', this.markerOnMouseOver);
        
        return marker;
    },
    
    /*markerOnMouseOver: function() {
        alert('qua');
    }*/
    
    markerShowSmallWindow: function(marker, notes)
    {
        /*marker.dataObject.nazwa = 'to jest bardzo dluga nazwa ktora ma byc dluga i pojawiac sie zawszerrr r blebl bleble ble';
        marker.dataObject.adres = 'a to jes t ba rdzo  dlugi a dres kto ra ma byc dl ugi i pojawiac sie zawszerrr r blebl bleble ble';
        marker.dataObject.kategorie = 'test raz dwatrzy cztery piec szesc ble aaaaaa r rr rrrrrrr r blebl bleble ble';*/
        
        if (map_.windowSmall)
            map_.windowSmall.gtfo();
        
        var container = document.createElement('div');
        
        var h1 = document.createElement('h3');
        h1.className = 'nazwa';
        
        if (!notes)
        {
	        var nazwa_short = marker.dataObject.nazwa;
	        if (nazwa_short.length > 50)
	            nazwa_short = nazwa_short.substr(0, 50) + '...';
	        h1.innerHTML = nazwa_short;
	        container.appendChild(h1);
	        
	        var p = document.createElement('p');
	        p.className = 'typ';
	        container.appendChild(p);
			  var date = null;        
        
	        // kino z rep.
	        if (parseInt(marker.dataObject.miejsce) == 1)
	        {
	            if (parseInt(marker.dataObject.ikonka) == 0 && marker.dataObject.innerid != null)
	            {
	                var span = document.createElement('span');
	                span.className = 'kino_repertuar';
	                span.innerHTML = 'Dostępny repertuar';
	                p.appendChild(span);
	            } else
	            {
	                var kategorie_short = '';
	                if (marker.dataObject.kategorie)
	                {
	                    kategorie_short = marker.dataObject.kategorie;
	                    if (kategorie_short.length > 60)
	                        kategorie_short = kategorie_short.substr(0, 60) + '...';
	                }
	                    
	                p.innerHTML = '<b>Typ:</b> ' + kategorie_short;
	            }
	        } else {
	            h1.className = 'nazwa wydarzenie';
	            /*p.className = 'dataczas'; */
	            
	            var regex = /^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
	            var parts = marker.dataObject.timestart.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
	            var date = new Date(parts[0], parts[1]-1, parts[2], parts[3], parts[4], parts[5]);
	
	            /*var dataText = 'Data: ' + date.getDate() + ' ' + calendar_.monthToWordInDate(date.getMonth() + 1) + ' ' + date.getFullYear(); 
	
	            if (marker.dataObject.timestop != '0000-00-00 00:00:00' && marker.dataObject.timestop != marker.dataObject.timestart)
	            {
	                var regex = /^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
	                var parts = marker.dataObject.timestop.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
	                var datestop = new Date(parts[0], parts[1]-1, parts[2], parts[3], parts[4], parts[5]);
	
	                dataText += '<br>do ' + datestop.getDate() + ' ' + calendar_.monthToWordInDate(datestop.getMonth() + 1) + ' ' + datestop.getFullYear(); 
	            }
	
	            if (date.getHours() != 0 || date.getMinutes() != 0)
	                dataText += ',<br>godz.' + date.getHours() + ':' + ((date.getMinutes() == 0)? '00': date.getMinutes());
	            p.innerHTML = dataText;*/
	            
	            var kategorie_short = marker.dataObject.kategorie;
	            if (kategorie_short.length > 60)
	                kategorie_short = kategorie_short.substr(0, 60) + '...';
	                
	            p.innerHTML = '<b>Typ:</b> ' + kategorie_short;
	        }
	        
	        var p = document.createElement('p');
	        p.className = 'adres';
	        container.appendChild(p);
	        
	        if (marker.dataObject.agentname)
	            var adres_short = marker.dataObject.adres + '; ' + marker.dataObject.agentname;
	        else
	            var adres_short = marker.dataObject.adres;
	            
	        if (adres_short.length > 50)
	            adres_short = adres_short.substr(0, 50) + '...';
	        p.innerHTML = adres_short;
	        
	        
	        // cos co nie jest kinem z rep.
	        if (parseInt(marker.dataObject.ikonka) != 0 || marker.dataObject.innerid == null)
	        {
	            if (date)
	            {
	                if (date.getHours() != 0 || date.getMinutes() != 0)
	                {
	                    dataText = 'godz.' + date.getHours() + ':' + ((date.getMinutes() == 0)? '00': date.getMinutes());
	                    var p = document.createElement('p');
	                    p.className = 'ocena';
	                    container.appendChild(p);
	                    p.innerHTML = dataText;
	                }
	            } else // cos co nie ma daty, ma ocene
	            {
	                var p = document.createElement('p');
	                p.className = 'ocena';
	                container.appendChild(p);
	                // i ma ocene
	                if ((marker.dataObject.ocena && marker.dataObject.ocena != '') && (marker.dataObject.ocena != '0'))
	                {
	                    for (var i = 1; i <= 5; i++)
	                    {
	                        var img = document.createElement('img');
	                        img.className = 'clickable';
	                        if (marker.dataObject.ocena < i)
	                            img.src = 'img/map/cloud_star_1.png';
	                        else
	                            img.src = 'img/map/cloud_star_2.png';
	                        p.appendChild(img);
	                    }
	                }
	            }
	        }
        } else { // to specjalna notesowa ikonka
			 var nazwy = '';
			 if (marker.list.length < 4)
			 { 
				 for (var i = 0; i < marker.list.length; i++)
				 {
                    var godzina = ''; 			    
	 			    if (marker.list[i].typ != 1 && (marker.list[i].date.getHours() != 0 || marker.list[i].date.getMinutes() != 0))
		                godzina = '<span class="godzina">' + marker.list[i].date.getHours() + ':' + ((marker.list[i].date.getMinutes() < 10)? '0' + marker.list[i].date.getMinutes(): marker.list[i].date.getMinutes()) + '</span> ';
	                if (marker.list[i].innerdata.styp != 1)
	                {
	                    if (!marker.list[i].innerdata.adres)
        	 			    nazwy += '<div class="inotes_miejsce">' + godzina + cutString(marker.list[i].innerdata.nazwa, (godzina.length == 0)?27 :17) + '<span class="inotes_adres"><br>' + marker.list[i].innerdata.miasto + ', ' + marker.list[i].innerdata.ulica + ' ' + marker.list[i].innerdata.nr_bloku + '</span></div>';
         			    else
        	 			    nazwy += '<div class="inotes_miejsce">' + godzina + cutString(marker.list[i].innerdata.nazwa, (godzina.length == 0)?27 :17) + '<span class="inotes_adres"><br>' + marker.list[i].innerdata.adres + '</span></div>';
	 			    } else
    	 			    nazwy += '<div class="inotes_miejsce">' + marker.list[i].innerdata.nazwa.replace(/, /gi, '<br>') + '</div>';
	 			 }
 			 } else
	 			 nazwy = 'W tym miejscu dodałeś do iNotesu aż ' + marker.list.length + ' różne iNotki';
			 container.innerHTML = nazwy;
        }
        var window = document.createElement('div');
        window.id = 'window_small';
        
        //window.style.height = '0';
        
        document.getElementById('page').appendChild(window);
        window.appendChild(container);
        window.marker = marker;
        var position = map_.gMap.fromLatLngToContainerPixel(marker.getLatLng());
        if (marker.standard)
        {
            window.style.left = (position.x + document.getElementById('page').offsetLeft + 40) + 'px';
            window.style.top = (position.y + 22 - 100) + 'px';
        }
        else
        {
            if ((parseInt(marker.dataObject.miejsce) == 0 && parseInt(marker.dataObject.ikonka) == 3) || (parseInt(marker.dataObject.polecane) == 1))
            {
                window.style.left = (position.x + document.getElementById('page').offsetLeft + 40) + 'px';
                window.style.top = (position.y + 42 - 100) + 'px';
            }
            else
            {
                window.style.left = (position.x + document.getElementById('page').offsetLeft + 40) + 'px';
                window.style.top = (position.y + 48 - 100) + 'px';
            }
        }
        
        dojo.animateProperty(
            {
                node: window,
                properties: {
                    opacity: {start: 0.0, stop: 0.9}
                }
            }
        ).play();
        
        this.windowSmall = window;
        
        
        
        
        window.gtfo = function() {
            var parent = this.parentNode;
            // nic kurwa z tego nie rozumiem, ale zabezpiecze sie
            if (parent)
            {
                parent.removeChild(this);
                map_.windowSmall = null;
            }
        } // function gtfo
        
        //marker.openInfoWindow(container);
    },
    
    markerShowBigWindowAjaxPlace: function(marker)
    {
        var content = new Object();
        if (marker.dataObject.miejsce == 0)
            content.id = marker.dataObject.id / 10000000;
        else 
            content.id = marker.dataObject.id;
        content.type = marker.dataObject.ikonka;
        content.miejsce = marker.dataObject.miejsce;
        dojo.xhrPost({
            url: 'http://'+servername+'/application/bigicons.php',
            handleAs: "json",
            content: content,
            timeout: 1000000, // 5 sec
            load: function(data, args)
            {
                data.id = data.id_miejsce;
                if (data.miejsce == 1)
                    map_.markerShowBigWindowPlace(marker, data);
                else
                    map_.markerShowBigWindowWydarzenie(marker, data);
            }
        });
    },
    
    markerShowBigWindowAjaxPlaceById: function(id, kat, miejsce)
    {
        var content = new Object();
        content.id = id;
        content.type = kat;
        content.miejsce = miejsce;
        dojo.xhrPost({
            url: 'http://' + servername + '/application/bigicons.php',
            handleAs: "json",
            content: content,
            timeout: 100000, // 5 sec
            load: function(data, args)
            {
                if (data.miejsce == 1)
                {
                    data.id = data.id_miejsce;
                    map_.markerShowBigWindowPlace(null, data);
                }
            }
        });
    },
    
    showBigWindowWithHTML: function(filename)
    {
        //alert('http://' + servername + '/application/' + filename);
        dojo.xhrGet({
            url: 'http://' + servername + '/application/' + filename,
            handleAs: "text",
            timeout: 100000, // 5 sec
            load: function(data, args)
            {
                var windowBig = map_.windowCreateAndShow();
                var container = document.createElement('div');
                container.className = 'text_container';
                windowBig.appendChild(container);
                container.innerHTML = data;
                var focus = document.getElementById('focus');
                focus.focus();
            }
        });
    },
    
    
    markerShowBigWindowMovie: function(marker, bigdata)
    {
        var windowBig = map_.windowCreateAndShow();
        
        var head_container = document.createElement('div');
        head_container.className = 'movie_header';
        windowBig.appendChild(head_container);
        
        // kalendarz ontop
        calendar_.handle.className = 'ontop';
        // notes
        inotes_.handle.className = 'ontop';
        
        // mapka
        var subMapHandle = document.createElement('div');
        subMapHandle.className = 'window_submap';
        head_container.appendChild(subMapHandle);
        var subMap = new GMap2(subMapHandle);
        
        var point = new GLatLng(bigdata.geo_szer, bigdata.geo_dlug);
        subMap.addOverlay(new GMarker(point));
        subMap.setCenter(point, 13);
        
        // nazwa kina
        var nazwa = document.createElement('h1');
        nazwa.innerHTML = cutString(bigdata.nazwa, 30);
        nazwa.className = 'name';
        head_container.appendChild(nazwa);
        
        // tabela danych opisowych
        var tabela = document.createElement('table');
        tabela.className = 'window_table';
        head_container.appendChild(tabela);
        
        // miasto i adres
        var wiersz = document.createElement('tr');
        tabela.appendChild(wiersz);
        var th  = document.createElement('th');
        th.innerHTML = 'miasto:';
        wiersz.appendChild(th);
        var td  = document.createElement('td');
        wiersz.appendChild(td);
        var span  = document.createElement('span');
        span.innerHTML = bigdata.miasto;
        span.onmouseover = function() { return overlib(bigdata.miasto, BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        span.onmouseout = function() { nd(); }
        td.appendChild(span);
        //
        var th  = document.createElement('th');
        th.innerHTML = 'adres:';
        wiersz.appendChild(th);
        var td  = document.createElement('td');
        wiersz.appendChild(td);
        var span  = document.createElement('span');
        span.innerHTML = bigdata.ulica + ' ' + bigdata.nr_bloku;
        span.onmouseover = function() { return overlib(bigdata.ulica + ' ' + bigdata.nr_bloku, BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        span.onmouseout = function() { nd(); }
        td.appendChild(span);
        
        // email i www
        var wiersz = document.createElement('tr');
        tabela.appendChild(wiersz);
        var th  = document.createElement('th');
        th.innerHTML = 'email:';
        wiersz.appendChild(th);
        var td  = document.createElement('td');
        wiersz.appendChild(td);
        var span  = document.createElement('span');
        if (bigdata.email)
            span.innerHTML = '<a onmouseover="return overlib(\' ' + bigdata.email + '\', BGCOLOR, \'#1CA8D5\', FGCOLOR, \'white\');" onmouseout="nd();" href="mailto:' + bigdata.email + '">' + cutString(bigdata.email, 20) + '</a>';
        td.appendChild(span);
        //
        var th  = document.createElement('th');
        th.innerHTML = 'www:';
        wiersz.appendChild(th);
        var td  = document.createElement('td');
        wiersz.appendChild(td);
        var span  = document.createElement('span');
        if (bigdata.www)
            span.innerHTML = '<a onmouseover="return overlib(\' ' + bigdata.www + '\', BGCOLOR, \'#1CA8D5\', FGCOLOR, \'white\');" onmouseout="nd();" target="_blank" href="http://' + cutLink(bigdata.www) + '">' + cutDomain(bigdata.www, 20) + '</a>';
        td.appendChild(span);
        
        // cechy i ceny
        var wiersz = document.createElement('tr');
        tabela.appendChild(wiersz);
        var th  = document.createElement('th');
        th.innerHTML = 'telefon:';
        wiersz.appendChild(th);
        var td  = document.createElement('td');
        wiersz.appendChild(td);
        var span  = document.createElement('span');
        span.innerHTML = bigdata.telefon;
        span.onmouseover = function() { return overlib(bigdata.telefon, BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        span.onmouseout = function() { nd(); }
        td.appendChild(span);
        //
        var th  = document.createElement('th');
        th.innerHTML = 'ceny:';
        wiersz.appendChild(th);
        var td  = document.createElement('td');
        wiersz.appendChild(td);
        var span  = document.createElement('span');
        span.innerHTML = cutString(bigdata.ceny, 25);
        span.onmouseover = function() { return overlib(bigdata.ceny, BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        span.onmouseout = function() { nd(); }
        span.alt = bigdata.ceny;
        td.appendChild(span);
        
        var rep = document.createElement('p');
        head_container.appendChild(rep);
        rep.className = 'repertuar_wazny';
        rep.id = 'window_kino_repdate_text';
        
        var sortuj = document.createElement('p');
        head_container.appendChild(sortuj);
        sortuj.className = 'sortuj';
        
        sortuj.appendChild(document.createTextNode('Sortuj wg'));
        
        var img = document.createElement('img');
        img.className = 'clickable';
        img.onmouseover = function() { return overlib('Pokaż repertuar sortując filmy wg godzin', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        img.onmouseout = function() { nd(); }
        img.src = 'img/map/window_godzina.png';
        img.id = 'window_kino_godzina_button';
        sortuj.appendChild(img);
        img.onclick = function() {
            calendar_.setKinoUpdaterId(this.id);
        
            var content = new Object();
            
            this.className = 'clickable selected';
            document.getElementById('window_kino_film_button').className = 'clickable';

            
            var date = calendar_.getSelectedDate();
            var rep = document.getElementById('window_kino_repdate_text');
            rep.innerHTML = 'Repertuar ważny <b>' + calendar_.getSelectedDateText() + '</b>. Datę można zmienić w kalendarzu.';

            content.date = date.getDate() + '-' + (date.getMonth() + 1) + '-' + date.getFullYear();
            content.id = bigdata.id;
            
            windowBig.dataContainer.innerHTML = '<p style="text-align: center"><img class="loader" src="/img/map/loader.gif" /></p>';
            
            dojo.xhrPost({
                url: 'http://' + servername + '/application/filmgodzina.php',
                handleAs: "json",
                content: content,
                timeout: 100000, // 25 sec
                window: windowBig,
                bigdata: bigdata,
                load: function(data, xhr)
                {

                    xhr.args.window.dataContainer.innerHTML = '';
                    for (var i = 0; i < data.length; i++)
                    {
                        var filmCont = document.createElement('div');
                        xhr.args.window.dataContainer.appendChild(filmCont);
                        filmCont.className = 'film_container_godzina';
                        
                        var inotuj = document.createElement('img');
                        inotuj.className = 'inotuj clickable';
                        inotuj.onmouseover = function() { return overlib('Dodaj do iNotesu', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
                        inotuj.onmouseout = function() { nd(); }
                        inotuj.src = 'http://imiejsca.pl/img/map/inotesadd.png';
                        inotuj.data = data[i];
                        inotuj.bigdata = xhr.args.bigdata;
                        inotuj.onclick = function()
                        {
                            /*alert(this.data.kiedy.substr(0, this.data.kiedy.indexOf(':')));
                            alert(this.data.kiedy.substr(this.data.kiedy.indexOf(':') + 1));*/
                            var date = calendar_.getSelectedDate();
                            
                            date.setHours(parseInt(this.data.kiedy.substr((this.data.kiedy[0] == '0')? 1: 0, this.data.kiedy.indexOf(':'))));
                            date.setMinutes(parseInt(this.data.kiedy.substr(this.data.kiedy.indexOf(':') + 1)));
                            
                            this.data.ulica = bigdata.ulica;
                            this.data.nr_bloku = bigdata.nr_bloku;
                            this.data.miasto = bigdata.miasto;
                            this.data.geo_szer = bigdata.geo_szer;
                            this.data.geo_dlug = bigdata.geo_dlug;
                            inotes_.addElement(this.data.id, 2, this.data, date, marker);
                        }
                        
                        filmCont.appendChild(inotuj);
                        
                        var kiedy = document.createElement('span');
                        kiedy.innerHTML = data[i].kiedy;
                        kiedy.className = 'kiedy';
                        filmCont.appendChild(kiedy);

                        var tytul = document.createElement('a');
                        tytul.href = data[i].link;
                        tytul.target = '_blank';
                        tytul.opis = data[i].opis;
                        tytul.onmouseover = function() { overlib(this.opis, WIDTH, '400', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); };
                        tytul.onmouseout = function() { nd(); };
                        
                        tytul.innerHTML = data[i].tytul + ', ';
                        filmCont.appendChild(tytul);

                        var gatunek = document.createElement('span');
                        gatunek.innerHTML = data[i].gatunek + ', ';
                        filmCont.appendChild(gatunek);

                        var czas = document.createElement('span');
                        czas.innerHTML = data[i].czas + ' min';
                        filmCont.appendChild(czas);

                    }
                }
            });
        }
        
        var img = document.createElement('img');
        img.src = 'img/map/window_film.png';
        img.onmouseover = function() { return overlib('Pokaż repertuar układając go filmami', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        img.onmouseout = function() { nd(); }
        img.id = 'window_kino_film_button';
        img.className = 'clickable';
        sortuj.appendChild(img);
        img.onclick = function() {
            calendar_.setKinoUpdaterId(this.id);
            var content = new Object();
            
            this.className = 'clickable selected';
            document.getElementById('window_kino_godzina_button').className = 'clickable';
            
            var date = calendar_.getSelectedDate();
            var rep = document.getElementById('window_kino_repdate_text');
            rep.innerHTML = 'Repertuar ważny <b>' + calendar_.getSelectedDateText() + '</b>. Datę można zmienić w kalendarzu.';

            content.date = date.getDate() + '-' + (date.getMonth() + 1) + '-' + date.getFullYear();
            content.id = bigdata.id;
            
            windowBig.dataContainer.innerHTML = '<p style="text-align: center"><img class="loader" src="/img/map/loader.gif" /></p>';
            
            dojo.xhrPost({
                url: 'http://' + servername + '/application/film.php',
                handleAs: "json",
                content: content,
                timeout: 100000, // 25 sec
                window: windowBig,
                bigdata: bigdata,
                load: function(data, xhr)
                {

                    xhr.args.window.dataContainer.innerHTML = '';
                    for (var i = 0; i < data.length; i++)
                    {
                        var filmCont = document.createElement('div');
                        xhr.args.window.dataContainer.appendChild(filmCont);
                        filmCont.className = 'film_container';

                        if (data[i].plakat.length > 0)
                        {
                            var plakat = document.createElement('img');
                            plakat.src = 'http://' + servername + '/application/filmplakat.php?id=' + data[i].id;
                            plakat.className = 'plakat';
                            filmCont.appendChild(plakat);
                        }

                        var tytul = document.createElement('a');
                        tytul.href = data[i].link;
                        tytul.target = '_blank';
                        tytul.innerHTML = data[i].tytul;
                        tytul.opis = data[i].opis;
                        tytul.onmouseover = function() { overlib(this.opis, WIDTH, '400', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); };
                        tytul.onmouseout = function() { nd(); };
                        filmCont.appendChild(tytul);

                        var gatunek = document.createElement('span');
                        gatunek.innerHTML = data[i].gatunek;
                        filmCont.appendChild(gatunek);

                        var seanse = document.createElement('span');
                        //seanse.innerHTML = 'seanse: ' + data[i].godziny;
                        var godziny = data[i].godziny;
                        while (godziny.length > 0)
                        {
                            var index = godziny.indexOf(',');
                            
                            if (index > 0)
                                var kiedy = godziny.substr(0, godziny.indexOf(','));
                            else
                                var kiedy = godziny.substr(0);
                                
                            var inotuj = document.createElement('img');
                            seanse.appendChild(inotuj);
                            if (index > 0)
                                seanse.appendChild(document.createTextNode(kiedy + ', '));
                            else
                                seanse.appendChild(document.createTextNode(kiedy));
                            inotuj.className = 'inotuj clickable';
                            inotuj.onmouseover = function() { return overlib('Dodaj do iNotesu', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
							       inotuj.onmouseout = function() { nd(); }
                            inotuj.src = 'http://imiejsca.pl/img/map/inotesadd.png';
                            inotuj.data = data[i];
                            inotuj.kiedy = kiedy;
                            inotuj.bigdata = xhr.args.bigdata;
                            inotuj.onclick = function()
                            {
                                var date = new Date(calendar_.getSelectedDate());
                                date.setHours(parseInt(this.kiedy.substr((this.kiedy[0] == '0')? 1: 0, this.kiedy.indexOf(':'))));
                                date.setMinutes(parseInt(this.kiedy.substr(this.kiedy.indexOf(':') + 1)));
                                /*date.setHours(parseInt(this.kiedy.substr(0, this.kiedy.indexOf(':'))));
                                date.setMinutes(parseInt(this.kiedy.substr(this.kiedy.indexOf(':') + 1)));*/
                                this.data.ulica = bigdata.ulica;
                                this.data.nr_bloku = bigdata.nr_bloku;
                                this.data.miasto = bigdata.miasto;
                                this.data.geo_szer = bigdata.geo_szer;
                                this.data.geo_dlug = bigdata.geo_dlug;
                                inotes_.addElement(this.data.id, 2, this.data, date, marker);
                            }
                            if (index > 0)
                                godziny = godziny.substr(index + 1);
                            else
                                godziny = '';
                            //alert(godziny);
                        }
                            
                        filmCont.appendChild(seanse);

                    }
                }
            });
        }
        
        var legenda = document.createElement('span');
        legenda.className = 'legenda';
        legenda.innerHTML = '<img style="margin-bottom: 3px;" src="img/map/inotesadd.png" /> - iNotuj';
        sortuj.appendChild(legenda);
        
        windowBig.dataContainer = document.createElement('div');
        windowBig.dataContainer.className = 'movie_data_container';
        windowBig.appendChild(windowBig.dataContainer);

        img.onclick();
    },
    
    markerShowBigWindowPlace: function(marker, bigdata)
    {
        if (map_.windowSmall)
            map_.windowSmall.gtfo();
            
        if ((bigdata.innerid) && (parseInt(bigdata.ikonka) == 0))
            return this.markerShowBigWindowMovie(marker, bigdata);
            
            
        var windowBig = map_.windowCreateAndShow(parseInt(bigdata.polecane) == 1);
        
        var leftContent = document.createElement('div');
        leftContent.className = 'window_left_content';
        windowBig.appendChild(leftContent);

        calendar_.handle.className = 'ontop';
        // notes
        inotes_.handle.className = 'ontop';
        
        // img
        var img = document.createElement('img');
        img.className = 'window_img';
        img.src = 'http://' + servername +'/application/miniaturka.php?id=' + bigdata.id;
        //http://imiejsca.pl/img/map/window_image.png
        leftContent.appendChild(img);
        
        // img
        var input = document.createElement('div');
        input.className = 'dodaj_zdjecie';
        input.innerHTML = 'nowe zdjęcie:<br><input type="file" />';
        input.style.display = 'none';
        leftContent.appendChild(input);
        
        var zglos = document.createElement('div');
        zglos.className = 'zglos_nieistniejace';
        zglos.innerHTML = '<a href="#">obiekt nie istnieje? Zgłoś!</a>';
        zglos.onclick = function() {
            alert('dziękujemy za zgłoszenie');
        }
        zglos.style.display = 'none';
        leftContent.appendChild(zglos);
        
        if (bigdata.id == 28158)
        {
            // panorama
            var panoramy = document.createElement('a');
            panoramy.innerHTML = 'zdjęcia panoramiczne';
            panoramy.href = '#';
            panoramy.className = 'window_panorama';
            leftContent.appendChild(panoramy);
            panoramy.onclick = function() 
            {
                var panorama = document.createElement('div');
                panorama.className = 'panorama';
                content.appendChild(panorama);
                
                
                    
                var panoramaObject = new Object();
                panoramaObject.panArray = [
                    {src: 'http://imiejsca.pl/panorama/index.php?id=1', desc: 'Dziedziniec restauracji'},
                    {src: 'http://imiejsca.pl/panorama/index.php?id=2', desc: 'Sala główna'}];
                
                panoramaObject.handle = panorama;
                panoramaObject.loadPanorama = function(index) {
                    this.index = index;
                    var inner = '<div style="margin-bottom: 3px; padding-left: 270px" ><a class="poprzednia" href="#">&#171; Poprzednia </a> &nbsp;&nbsp; <a class="nastepna" href="#"> Następna &#187;</a><a style="margin-left: 200px;" class="powrot" href="#">Powrót</a></div>';
                    inner += '<div><iframe style="height: 470px; width: 730px; overflow: hidden;  border: 0;" class="panorama_iframe" border="0" src="' + this.panArray[index].src + '"></iframe></div>';
                    inner += '<div>' + this.panArray[index].desc + '</div>';
                    this.handle.innerHTML = inner;          
                    
                    panoramaObject.close = function() {
                        this.handle.parentNode.removeChild(this.handle);
                    }
                    
                    var tmpList = dojo.query('a.powrot', this.handle);
                    tmpList[0].panorama = this;
                    tmpList[0].onclick = function() {
                        this.panorama.close();
                        return false;
                    }
                    
                    var tmpList = dojo.query('a.poprzednia', this.handle);
                    tmpList[0].panorama = this;
                    tmpList[0].onclick = function() {
                        this.panorama.loadPanorama((this.panorama.index - 1 < 0)? this.panorama.panArray.length - 1: this.panorama.index - 1);
                        return false;
                    }
                    
                    var tmpList = dojo.query('a.nastepna', this.handle);
                    tmpList[0].panorama = this;
                    tmpList[0].onclick = function() {
                        this.panorama.loadPanorama((this.panorama.index + 1) % this.panorama.panArray.length);
                        return false;
                    }
                }
                
                
                panoramaObject.loadPanorama(0);
            }
        }
        
        // mapka
        var subMapHandle = document.createElement('div');
        subMapHandle.className = 'window_submap';
        leftContent.appendChild(subMapHandle);
        var subMap = new GMap2(subMapHandle);
        
        var point = new GLatLng(bigdata.geo_szer, bigdata.geo_dlug);
        subMap.addOverlay(new GMarker(point));
        subMap.setCenter(point, 13);
        
        
        // edit
        var edit = document.createElement('a');
        edit.innerHTML = 'edytuj miejsce';
        edit.href = '#';
        edit.className = 'window_edit';
        leftContent.appendChild(edit);
        edit.onclick = function() {
            if (this.edycja) // zapisywanie miejsca
            {
                this.innerHTML = 'edytuj miejsce';
                this.edycja = false;
                
                var content = new Object();
                content.fields = [];
                
                var edycja = dojo.query('table td input');
                
                for (var i = 0; i < edycja.length; i++)
                {
                    var parent = edycja[i].parentNode;
                    var input = document.createElement('span');
                    input.innerHTML = edycja[i].value;
                    content.fields[edycja.className] = edycja[i].value;
                    parent.removeChild(edycja[i]);
                    parent.appendChild(input);
                }
                edycja = dojo.query('div.marker_big_window textarea');
                for (var i = 0; i < edycja.length; i++)
                {
                    var parent = edycja[i].parentNode;
                    var input = document.createElement('p');
                    input.className = edycja[i].className;
                    input.innerHTML = edycja[i].innerHTML;
                    if (bigdata.kategorie && bigdata.kategorie.length > 0)
            		   input.style.height = (180 - (Math.ceil(bigdata.kategorie.split(', ').length / 2) - 1) * 10) + 'px';
            	    else
            		   input.style.height = '220px';
                    input.style.height = edycja[i].style.height;
                    content.fields[edycja.className] = edycja[i].value;
                    parent.removeChild(edycja[i]);
                    parent.appendChild(input);
                }
                var img = dojo.query('div.marker_big_window img.window_img')[0];
                img.style.display = '';
                var input = dojo.query('div.marker_big_window div.dodaj_zdjecie')[0];
                input.style.display = 'none';
                var zglos = dojo.query('div.marker_big_window div.zglos_nieistniejace')[0];
                zglos.style.display = 'none';
                
                dojo.xhrPost({
                    url: 'http://' + servername + '/application/edit.php',
                    handleAs: "text",
                    content: content,
                    timeout: 2000, // 5 sec
                    load: function(data, args)
                    {
                        alert('Dziękujemy za poprawnie uzupełniony wpis.' + "\n" + 'Dodane przez Ciebie informacje pojawią się na stronie po zaakceptowaniu przez moderatora.');
                    }
                });
            } else
            {
                // wlaczamy tryb edytowania
                this.innerHTML = 'zapisz miejsce';
                var edycja = dojo.query('table td span');
                for (var i = 0; i < edycja.length; i++)
                {
                    var parent = edycja[i].parentNode;
                    var input = document.createElement('input');
                    input.value = edycja[i].innerHTML;
                    parent.removeChild(edycja[i]);
                    parent.appendChild(input);
                }
                
                edycja = dojo.query('div.marker_big_window p.opis');
                for (var i = 0; i < edycja.length; i++)
                {
                    var parent = edycja[i].parentNode;
                    var input = document.createElement('textarea');
                    input.innerHTML = edycja[i].innerHTML;
                    if (bigdata.kategorie && bigdata.kategorie.length > 0)  
            		   input.style.height = (160 - (Math.ceil(bigdata.kategorie.split(', ').length / 2) - 1) * 10) + 'px';
            	    else
            		   input.style.height = '200px';
                    input.className = edycja[i].className;
                    parent.removeChild(edycja[i]);
                    parent.appendChild(input);
                }
                
                var img = dojo.query('div.marker_big_window img.window_img')[0];
                img.style.display = 'none';
                var input = dojo.query('div.marker_big_window div.dodaj_zdjecie')[0];
                input.style.display = '';
                
                var zglos = dojo.query('div.marker_big_window div.zglos_nieistniejace')[0];
                zglos.style.display = '';
                
                this.edycja = true;
            }
        }
        
        var rightContent = document.createElement('div');
        rightContent.className = 'window_right_content';
        windowBig.appendChild(rightContent);
        
        // przyciski dodaj do
        var addTo = document.createElement('div');
        addTo.className = 'window_addto';
        rightContent.appendChild(addTo);
        
        addTo.appendChild(document.createTextNode('Poleć to miejsce:'));
        
        var img = document.createElement('img');
        img.src = 'img/map/facebook.gif';
        img.className = 'clickable';
        addTo.appendChild(img);
        img.onclick = function() {
            u = 'http://imiejsca.pl/?id=' + bigdata.id + '&kat=' + bigdata.ikonka;
            t = document.title;
            window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
            return false;
        }
        var img = document.createElement('img');
        img.src = 'img/map/grono.gif';
        img.className = 'clickable';
        addTo.appendChild(img);
        img.onclick = function() {
            u = 'http://imiejsca.pl/?id=' + bigdata.id + '&kat=' + bigdata.ikonka;
            window.open('http://grono.net/pub/popup/link/urlfetch/?url='+encodeURIComponent(u),'sharer','toolbar=0,status=0,width=626,height=436');    
        }
        var img = document.createElement('img');
        img.src = 'img/map/blip.gif';
        img.className = 'clickable';
        addTo.appendChild(img);
        img.onclick = function() {
            u = 'Jestem na imiejsca.pl. ' + 'http://imiejsca.pl/?id=' + bigdata.id + '&kat=' + bigdata.ikonka;
            window.open('http://blip.pl/dashboard?body='+encodeURIComponent(u),'sharer','toolbar=0,status=0,width=626,height=436');    
        }
        var img = document.createElement('img');
        img.src = 'img/map/flaker.gif';
        img.className = 'clickable';
        addTo.appendChild(img);
        img.onclick = function() {
            u = 'http://imiejsca.pl/?id=' + bigdata.id + '&kat=' + bigdata.ikonka;
            t = document.title;
            window.open('http://flaker.pl/add2flaker.php?url=' + encodeURIComponent(u) + '&title=' + encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
        }
        var img = document.createElement('img');
        img.src = 'img/map/delicious.png';
        img.className = 'clickable';
        addTo.appendChild(img);
        img.onclick = function() {
            u = 'http://imiejsca.pl/?id=' + bigdata.id + '&kat=' + bigdata.ikonka;
            t = document.title;
            window.open('http://delicious.com/post?url=' + encodeURIComponent(u),'sharer','toolbar=0,status=0,width=626,height=436');
        }
        var img = document.createElement('img');
        img.src = 'img/map/twitter.gif';
        img.className = 'clickable';
        addTo.appendChild(img);
        img.onclick = function() {
            u = 'http://imiejsca.pl/?id=' + bigdata.id + '&kat=' + bigdata.ikonka;
            t = document.title;
            window.open('http://twitter.com/home?status=' + encodeURIComponent(u),'sharer','toolbar=0,status=0,width=626,height=436');
        }
        var img = document.createElement('img');
        img.src = 'img/map/link_icon.jpg';
        img.className = 'clickable';
        addTo.appendChild(img);
        img.onclick = function() {
            alert('http://imiejsca.pl/?id=' + bigdata.id + '&kat=' + bigdata.ikonka);
            //alert('http://imiejsca.pl/' + bigdata.nazwa.replace(/[ +=?&-\/]/, '_') + '/' + bigdata.id);
        }
        
        var img = document.createElement('img');
        img.src = 'img/map/window_inotuj.png';
        img.style.marginLeft = '20px';
        img.className = 'clickable';
        img.onmouseover = function() { return overlib('Dodaj do iNotesu', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        img.onmouseout = function() { nd(); }
        addTo.appendChild(img);
        img.onclick = function() {
            inotes_.addElement(bigdata.id, bigdata.miejsce, bigdata, calendar_.getSelectedDate(), marker);
        }
        
        var img = document.createElement('img');
        img.src = 'img/map/window_drukuj.png';
        img.onmouseover = function() { return overlib('Drukuj do pliku PDF', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        img.onmouseout = function() { nd(); }
        img.className = 'clickable';
        addTo.appendChild(img);
        img.onclick = function() {
            //alert('pdf print');
            window.open('http://' + servername + '/application/robpdf.php?id=' + bigdata.id, 'wydruk');
        }
        
        // nazwa knajpy
        var nazwa = document.createElement('h1');
        nazwa.innerHTML = bigdata.nazwa;
        nazwa.className = 'name';
        rightContent.appendChild(nazwa);
       
        
        // ocena pod nazwa w gwiazdkach
        // stars
        var ocena = document.createElement('div');
        ocena.className = 'window_ocena';
        rightContent.appendChild(ocena);
        /*ocena.onmouseout = function() {
            if (!this.over)
            {
                var imgList = dojo.query('img', this);
                for (var i = 0; i < imgList.length; i++)
                {
                    imgList[i].src = 'img/map/window_blue_star_1.png';
                }            
            }
        }*/
        
        ocena.ustawOcene = function(ocena, dopisek) {
            var opisTekstowy = ['brak ocen', 'słabe', 'nic specjalnego', 'dobre', 'bardzo dobre', 'znakomite'];
            this.isover = true;
            var imgList = dojo.query('img', this);
            for (var i = 0; i < imgList.length; i++)
            {
                if (imgList[i].index != undefined)
                {
                    if (ocena >= imgList[i].index)
                        imgList[i].src = 'img/map/window_yellow_star_2.png';
                    else
                        imgList[i].src = 'img/map/window_blue_star_1.png';
                }
            }
            if (dopisek)
                this.ocenaOpis.innerHTML = opisTekstowy[ocena] + dopisek;
            else
                this.ocenaOpis.innerHTML = opisTekstowy[ocena];
                
        }
        
        var ocenaonmouseover = function() {
            this.parentNode.ustawOcene(this.index);
        }
        
        var ocenaonmouseout = function() {
            this.parentNode.isover = false;
        }
        
        var ocenaocen = function() {
            var imgList = dojo.query('img', this.parentNode);
            this.parentNode.onmouseout = null;
            for (var i = 0; i < imgList.length; i++)
            {
                 imgList[i].onmouseover = null;
                 imgList[i].onmouseout = null;      
            }
            
            var content = new Object();
            content.id = bigdata.id;
            content.type = bigdata.ikonka;
            var get = dojo.xhrGet({
                url: 'http://' + servername + '/application/ocen.php?id=' + marker.dataObject.id + '&ocena=' + this.index,
                handleAs: "json",
                timeout: 5000, // 5 sec
                ocenaNode: this,
                load: function(data, xhr)
                {
                    xhr.args.ocenaNode.parentNode.ocenaOpis.innerHTML = 'zagłosowała ' + data.glosow + ' osoba';
                }
            });
            
            //this.parentNode.removeChild(this.parentNode.ikonka);
        }
        
        for (var i = 1; i <= 5; i++)
        {
            var img = document.createElement('img');
            img.className = 'clickable';
            img.index = i;
            img.onmouseover = ocenaonmouseover;
//            img.onmouseover = ocenaonmouseou;
            img.onclick = ocenaocen;
            img.src = 'img/map/window_blue_star_1.png';
            ocena.appendChild(img);
        }
        
        /*var img = document.createElement('img');
        img.src = 'img/map/window_ocen.png';
        ocena.appendChild(img);
        ocena.ikonka = img;*/
        var ocenaOpis = document.createElement('span');
        ocena.appendChild(ocenaOpis);
        ocena.ocenaOpis = ocenaOpis;
        
        ocena.ustawOcene(bigdata.ocena, ' (zagłosuj)');
        
        // kategoria
        if (bigdata.kategorie)
        {
	        var kategorieArray = bigdata.kategorie.split(', ');
	        
	        var kat = document.createElement('ul');
	        kat.className = 'categoryplace';
	        var inner = '';
	        for (var i = 0; i < kategorieArray.length; i++)
	            inner += '<li>' + kategorieArray[i] + '</li>';
	        kat.innerHTML = inner;
	        windowBig.appendChild(kat);
        }
        
        /*var kat = document.createElement('h2');
        kat.innerHTML = bigdata.kategorie;
        kat.className = 'category';
        windowBig.appendChild(kat);*/
        
        var content = document.createElement('div');
        windowBig.appendChild(content);
        
        // tabela danych opisowych
        var tabela = document.createElement('table');
        tabela.className = 'window_table';
        content.appendChild(tabela);
        
        // miasto i adres
        var wiersz = document.createElement('tr');
        tabela.appendChild(wiersz);
        var th  = document.createElement('th');
        th.innerHTML = 'miasto:';
        wiersz.appendChild(th);
        var td  = document.createElement('td');
        wiersz.appendChild(td);
        var span  = document.createElement('span');
        span.onmouseover = function() { return overlib(bigdata.miasto, BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        span.onmouseout = function() { nd(); }
        span.innerHTML = bigdata.miasto;
        td.appendChild(span);
        //
        var th  = document.createElement('th');
        th.innerHTML = 'adres:';
        wiersz.appendChild(th);
        var td  = document.createElement('td');
        wiersz.appendChild(td);
        var span  = document.createElement('span');
        span.onmouseover = function() { return overlib(bigdata.ulica + ' ' + bigdata.nr_bloku, BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        span.onmouseout = function() { nd(); }
        span.innerHTML = bigdata.ulica + ' ' + bigdata.nr_bloku;
        td.appendChild(span);
        
        // email i www
        var wiersz = document.createElement('tr');
        tabela.appendChild(wiersz);
        var th  = document.createElement('th');
        th.innerHTML = 'email:';
        wiersz.appendChild(th);
        var td  = document.createElement('td');
        wiersz.appendChild(td);
        var span  = document.createElement('span');
        if (bigdata.email)
            span.innerHTML = '<a onmouseover="return overlib(\' ' + bigdata.email + '\', BGCOLOR, \'#1CA8D5\', FGCOLOR, \'white\');" onmouseout="nd();" href="mailto:' + bigdata.email + '">' + cutString(bigdata.email, 20) + '</a>';
        td.appendChild(span);
        //
        var th  = document.createElement('th');
        th.innerHTML = 'www:';
        wiersz.appendChild(th);
        var td  = document.createElement('td');
        wiersz.appendChild(td);
        var span  = document.createElement('span');
        if (bigdata.www)
            span.innerHTML = '<a onmouseover="return overlib(\' ' + bigdata.www + '\', BGCOLOR, \'#1CA8D5\', FGCOLOR, \'white\');" onmouseout="nd();" target="_blank" href="http://' + cutLink(bigdata.www) + '">' + cutDomain(bigdata.www, 20) + '</a>';
        td.appendChild(span);
        // cechy i ceny
        var wiersz = document.createElement('tr');
        tabela.appendChild(wiersz);
        var th  = document.createElement('th');
        th.innerHTML = 'telefon:';
        wiersz.appendChild(th);
        var td  = document.createElement('td');
        wiersz.appendChild(td);
        var span  = document.createElement('span');
        if (bigdata.telefon)
        {
            span.onmouseover = function() { return overlib(bigdata.telefon, BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
            span.onmouseout = function() { nd(); }
            span.innerHTML = cutString(bigdata.telefon, 25);
        }
        td.appendChild(span);
        //
        var th  = document.createElement('th');
        th.innerHTML = 'ceny:';
        wiersz.appendChild(th);
        var td  = document.createElement('td');
        wiersz.appendChild(td);
        var span  = document.createElement('span');
        if (bigdata.ceny)
        {
            span.onmouseover = function() { return overlib(bigdata.ceny, BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
            span.onmouseout = function() { nd(); }
            span.innerHTML = cutString(bigdata.ceny, 25);
        }
        td.appendChild(span);
        /*
        // cechy i ceny
        var wiersz = document.createElement('tr');
        tabela.appendChild(wiersz);
        var th  = document.createElement('th');
        th.innerHTML = 'telefon:';
        wiersz.appendChild(th);
        var td  = document.createElement('td');
        wiersz.appendChild(td);
        var span  = document.createElement('span');
        span.innerHTML = bigdata.telefon;
        td.appendChild(span);
        //*/
        
        /*wiersz.appendChild(telefon);
        var www  = document.createElement('td');
        www.innerHTML =  bigdata.dataObject.www;
        wiersz.appendChild(www);
        
        var wiersz = document.createElement('tr');
        tabela.appendChild(wiersz);
        var email = document.createElement('td');
        email.innerHTML =  bigdata.dataObject.email;
        wiersz.appendChild(email);*/
        
        var otwarte = '';
        if (bigdata.dnitygodnia.length > 0)
        {
            var dzienTygodnia = function(i)
            {
                switch (parseInt(i))
                {
                    case 1: return 'poniedzialek'; break;
                    case 2: return 'wtorek'; break;
                    case 3: return 'środa'; break;
                    case 4: return 'czwartek'; break;
                    case 5: return 'piątek'; break;
                    case 6: return 'sobota'; break;
                    case 7: return 'niedziela'; break;
                }
            }
            for (var i = 0; i < bigdata.dnitygodnia.length; i++)
            {
                //alert(bigdata.dnitygodnia[i].id_dzien);
                if (bigdata.dnitygodnia[i].od_godzina.length > 0)
                    otwarte += dzienTygodnia(bigdata.dnitygodnia[i].id_dzien) + ': ' + bigdata.dnitygodnia[i].od_godzina + ' - ' + bigdata.dnitygodnia[i].do_godzina + '<br>';
            }
            otwarte = '<p class="godziny_otwarcia"><u>Godziny otwarcia:</u><br>' + otwarte + '</p>';
        }
        var opis = document.createElement('p');
        opis.className = 'opis';
        content.appendChild(opis);
        if (bigdata.opis)
        {
            if (dojo.isOpera)
                bigdata.opis = bigdata.opis.replace(/<\/?p>/, '');
            opis.innerHTML = bigdata.opis.replace(/specjalność/i,'<b>specjalność</b>') + otwarte;
        }
        else
            opis.innerHTML = otwarte;
            
	   if (bigdata.kategorie && bigdata.kategorie.length > 0)  
		   opis.style.height = (230 - nazwa.offsetHeight - (Math.ceil(bigdata.kategorie.split(', ').length / 2) - 1) * (15 + (dojo.isOpera?3:0))) + 'px';
	   else
		   opis.style.height = (250 - nazwa.offsetHeight) + 'px';
        
        // opis
        /*var img = document.createElement('img');
        img.src = 'img/map/window_edytuj.png';
        window.header.appendChild(img);*/
        
    },
    
    markerShowBigWindowWydarzenie: function(marker, bigdata)
    {
        bigdata.id = bigdata.id_wydarzenie;
        
        if (map_.windowSmall)
            map_.windowSmall.gtfo();
            
        if ((bigdata.innerid) && (parseInt(bigdata.ikonka) == 0))
            return this.markerShowBigWindowMovie(marker, bigdata);
            
        var windowBig = map_.windowCreateAndShow();
        
        windowBig.className += ' wydarzenie';
        
        // notes
        calendar_.handle.className = 'ontop';
        inotes_.handle.className = 'ontop';
        
        var leftContent = document.createElement('div');
        leftContent.className = 'window_left_content';
        windowBig.appendChild(leftContent);

        
        // img
        var img = document.createElement('img');
        img.className = 'window_img';
        img.src = 'http://' + servername + '/application/miniaturka.php?w=1&id=' + bigdata.id;
        //http://imiejsca.pl/img/map/window_image.png
        leftContent.appendChild(img);
        
        // edit
        var edit = document.createElement('a');
        edit.innerHTML = 'edytuj wydarzenie';
        edit.href = '#';
        edit.className = 'window_edit';
        leftContent.appendChild(edit);
        edit.onclick = function() {
            if (this.edycja)
            {
                this.innerHTML = 'edytuj wydarzenie';
                this.edycja = false;
                
                var content = new Object();
                content.fields = [];
                
                var edycja = dojo.query('table td input');
                
                for (var i = 0; i < edycja.length; i++)
                {
                    var parent = edycja[i].parentNode;
                    var input = document.createElement('span');
                    input.innerHTML = edycja[i].value;
                    content.fields[edycja.className] = edycja[i].value;
                    parent.removeChild(edycja[i]);
                    parent.appendChild(input);
                }
                edycja = dojo.query('div.marker_big_window textarea');
                for (var i = 0; i < edycja.length; i++)
                {
                    var parent = edycja[i].parentNode;
                    var input = document.createElement('p');
                    input.className = edycja[i].className;
                    input.innerHTML = edycja[i].innerHTML;
                    content.fields[edycja.className] = edycja[i].value;
                    parent.removeChild(edycja[i]);
                    parent.appendChild(input);
                }
                dojo.xhrPost({
                    url: 'http://' + servername + '/application/edit.php',
                    handleAs: "text",
                    content: content,
                    timeout: 2000, // 5 sec
                    load: function(data, args)
                    {
                        //alert(data);
                    }
                });
            } else
            {
                // tryb edytowania 
                
                this.innerHTML = 'zapisz wydarzenie';
                var edycja = dojo.query('table td span');
                for (var i = 0; i < edycja.length; i++)
                {
                    var parent = edycja[i].parentNode;
                    var input = document.createElement('input');
                    input.value = edycja[i].innerHTML;
                    parent.removeChild(edycja[i]);
                    parent.appendChild(input);
                }
                
                edycja = dojo.query('div.marker_big_window p.opis');
                for (var i = 0; i < edycja.length; i++)
                {
                    var parent = edycja[i].parentNode;
                    var input = document.createElement('textarea');
                    input.innerHTML = edycja[i].innerHTML;
                    input.className = edycja[i].className;
                    parent.removeChild(edycja[i]);
                    parent.appendChild(input);
                }
                
                this.edycja = true;
            }
        }
        
        // mapka
        var subMapHandle = document.createElement('div');
        subMapHandle.className = 'window_submap';
        leftContent.appendChild(subMapHandle);
        var subMap = new GMap2(subMapHandle);
        
        var point = new GLatLng(bigdata.geo_szer, bigdata.geo_dlug);
        subMap.addOverlay(new GMarker(point));
        subMap.setCenter(point, 13);
        
        var rightContent = document.createElement('div');
        rightContent.className = 'window_right_content';
        windowBig.appendChild(rightContent);
        
        // przyciski dodaj do
        var addTo = document.createElement('div');
        addTo.className = 'window_addto';
        rightContent.appendChild(addTo);
        
        addTo.appendChild(document.createTextNode('Dodaj do:'));
        
        var img = document.createElement('img');
        img.src = 'img/map/facebook.gif';
        img.className = 'clickable';
        addTo.appendChild(img);
        img.onclick = function() {
            u = 'http://imiejsca.pl/?id=' + bigdata.id + '&kat=' + bigdata.ikonka;
            t = document.title;
            window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
            return false;
        }
        var img = document.createElement('img');
        img.src = 'img/map/grono.gif';
        img.className = 'clickable';
        addTo.appendChild(img);
        img.onclick = function() {
            u = 'http://imiejsca.pl/?id=' + bigdata.id + '&kat=' + bigdata.ikonka;
            window.open('http://grono.net/pub/popup/link/urlfetch/?url='+encodeURIComponent(u),'sharer','toolbar=0,status=0,width=626,height=436');    
        }
        var img = document.createElement('img');
        img.src = 'img/map/blip.gif';
        img.className = 'clickable';
        addTo.appendChild(img);
        img.onclick = function() {
            u = 'Jestem na imiejsca.pl. ' + 'http://imiejsca.pl/?id=' + bigdata.id + '&kat=' + bigdata.ikonka;
            window.open('http://blip.pl/dashboard?body='+encodeURIComponent(u),'sharer','toolbar=0,status=0,width=626,height=436');    
        }
        var img = document.createElement('img');
        img.src = 'img/map/flaker.gif';
        img.className = 'clickable';
        addTo.appendChild(img);
        img.onclick = function() {
            u = 'http://imiejsca.pl/?id=' + bigdata.id + '&kat=' + bigdata.ikonka;
            t = document.title;
            window.open('http://flaker.pl/add2flaker.php?url=' + encodeURIComponent(u) + '&title=' + encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
        }
        var img = document.createElement('img');
        img.src = 'img/map/delicious.png';
        img.className = 'clickable';
        addTo.appendChild(img);
        img.onclick = function() {
            u = 'http://imiejsca.pl/?id=' + bigdata.id + '&kat=' + bigdata.ikonka;
            t = document.title;
            window.open('http://delicious.com/post?url=' + encodeURIComponent(u),'sharer','toolbar=0,status=0,width=626,height=436');
        }
        var img = document.createElement('img');
        img.src = 'img/map/twitter.gif';
        img.className = 'clickable';
        addTo.appendChild(img);
        img.onclick = function() {
            u = 'http://imiejsca.pl/?id=' + bigdata.id + '&kat=' + bigdata.ikonka;
            t = document.title;
            window.open('http://twitter.com/home?status=' + encodeURIComponent(u),'sharer','toolbar=0,status=0,width=626,height=436');
        }
        var img = document.createElement('img');
        img.src = 'img/map/link_icon.jpg';
        img.className = 'clickable';
        addTo.appendChild(img);
        img.onclick = function() {
            alert('http://imiejsca.pl/?id=' + bigdata.id + '&kat=' + bigdata.ikonka);
            //alert('http://imiejsca.pl/' + bigdata.nazwa.replace(/[ +=?&-\/]/, '_') + '/' + bigdata.id);
        }
        
        var img = document.createElement('img');
        img.onmouseover = function() { return overlib('Dodaj do iNotesu', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        img.onmouseout = function() { nd(); }
        img.src = 'img/map/window_inotuj.png';
        img.className = 'clickable';
        addTo.appendChild(img);
        img.onclick = function() {
            var date = null;
            
            var regex = /^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
            var parts = bigdata.timestart.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
            var datestart = new Date(parts[0], parts[1]-1, parts[2], parts[3], parts[4], parts[5]);
            
            if (bigdata.timestop != '0000-00-00 00:00:00' && bigdata.timestop != bigdata.timestart)
            {
                date = new Date(calendar_.getSelectedDate());
                if (datestart.getHours() != 0 || datestart.getMinutes() != 0)
                {
                    date.setHours(datestart);
                    date.setMinutes(datestart);
                }
                else
                {
                    date.setHours(0);
                    date.setMinutes(0);
                }
            } else
                date = new Date(datestart);
            
            inotes_.addElement(bigdata.id, 0, bigdata, date, marker);
        }
        
        var img = document.createElement('img');
        img.className = 'clickable';
        img.onmouseover = function() { return overlib('Drukuj do pliku PDF', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        img.onmouseout = function() { nd(); }
        img.src = 'img/map/window_drukuj.png';
        addTo.appendChild(img);
        img.onclick = function() {
            //alert('pdf print');##
            window.open('http://' + servername + '/application/wydarzenia_pdf.php?miejsce=false&id=' + bigdata.id, 'wydruk');
        }
        
        // nazwa 
        var nazwa = document.createElement('h1');
        
        if (bigdata.nazwa.length < 15 && (bigdata.podnazwa))
            nazwa.innerHTML = bigdata.nazwa + '<br>' + bigdata.podnazwa;
        else
            nazwa.innerHTML = bigdata.nazwa;
        nazwa.className = 'name';
        rightContent.appendChild(nazwa);
        
        // data
        var regex = /^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
        var parts = bigdata.timestart.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
        var date = new Date(parts[0], parts[1]-1, parts[2], parts[3], parts[4], parts[5]);

        var dataText = date.getDate() + ' ' + calendar_.monthToWordInDate(date.getMonth() + 1) + ' ' + date.getFullYear(); 
        
        if (bigdata.timestop != '0000-00-00 00:00:00' && bigdata.timestop != bigdata.timestart)
        {
            var regex = /^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
            var parts = bigdata.timestop.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
            var datestop = new Date(parts[0], parts[1]-1, parts[2], parts[3], parts[4], parts[5]);
            
            dataText += ' do ' + datestop.getDate() + ' ' + calendar_.monthToWordInDate(datestop.getMonth() + 1) + ' ' + datestop.getFullYear(); 
        }
        if (date.getHours() != 0 || date.getMinutes() != 0)
            dataText += ',<br>godz. ' + date.getHours() + ':' + ((date.getMinutes() == 0)? '00': date.getMinutes());
        else
            dataText += '<br>';
        
        var kat = document.createElement('h2');
        kat.innerHTML = dataText;
        kat.className = 'godziny';
        windowBig.appendChild(kat);
        
        var content = document.createElement('div');
        windowBig.appendChild(content);
        
        // tabela danych opisowych
        var tabela = document.createElement('table');
        tabela.className = 'window_table';
        content.appendChild(tabela);
        
        var opis = document.createElement('p');
        opis.className = 'opis';
        content.appendChild(opis);
        opis.innerHTML = bigdata.opis_kontenera;
        
        
        // byc moze trzeba bedzie przyciac w bilecie
        var kategorie = bigdata.kategorie;
        
        // wyjete z biegu dokumentu kupowanie biletu
        if (bigdata.zrodlo)
        {
            var bilety = document.createElement('div');
            bilety.className = 'biletykup';
            content.appendChild(bilety);
            
            if (bigdata.zrodlo == 'eventim')
            {
                bilety.innerHTML = 'Kup bilet tutaj:<br><a target="_blank" href="http://www.eventim.pl/portal/pl/kup/' + bigdata.innerid + ',490/performance.html"><img src="/img/map/eventim.png" /></a>';
            } else
            {
                bilety.innerHTML = 'Kup bilet tutaj:<br><a target="_blank" href="http://www.ticketonline.pl/portal/start.jsp?lg=PL&m=4&lid=5001&eid=' + bigdata.innerid + '&affilateid=iczas.pl&wid=3"><img src="/img/map/ticketonline.png" /></a>';
            }
            
            tabela.className = 'window_table short';
            if (kategorie.length > 85)
                kategorie = kategorie.substr(0, 85) + '...';
        }
        
        // dopiero tutaj tabela bo byc moze trzeba ja pociac
        
        
        var tabelaInner = '<tr><th>kategoria:</th><td>' + kategorie + '</td></tr>';
        tabelaInner += '<tr><th>organizator:</th><td>' + bigdata.agentname + '</td></tr>';
        tabelaInner += '<tr><th>adres:</th><td>' + bigdata.adres + '</td></tr>';
        
        tabela.innerHTML = tabelaInner;
        
        
        
        // opis
        
        /*var img = document.createElement('img');
        img.src = 'img/map/window_edytuj.png';
        window.header.appendChild(img);*/
        
    }, // showBigWindowWydarzenie
    
    createDarkness: function()
    {
        if (!this.windowDark)
        {    
				var darkBackground = document.createElement('div');
	        darkBackground.id = 'dark_background';
	        document.body.appendChild(darkBackground);
	        var anim2 = dojo.animateProperty(
		        {
		            node: darkBackground,
		            properties: {
		                opacity: { start: 0, end: 0.5 }
		            }
		        }
		     ).play();
		     this.windowDark = darkBackground;
		  }
        //darkBackground.style.height = document.body.offsetHeight + 'px';
        //document.getElementById('page').appendChild(darkBackground);
        
        //darkBackground.style.width = document.body.offsetWidth + 'px';
        
    },
    
    destroyDarkness: function()
    {
        try
        {
            if (this.windowDark)
            {
                document.body.removeChild(this.windowDark);
                map_.windowDark = null;
            }
            //document.getElementById('page').removeChild(this.windowDark);
        } catch (e)
        {
            /*alert('assert failure -> prosze zapisz komunikaty jakie sie pojawia i wyslij na adres it@imiejsca.pl');
            alert(this.windowDark);
            alert(this.windowDark.parentNode);
            alert(this.windowDark.parentNode == document.body);*/
        }
    },
    
    windowCreateAndShow: function(polecane) {
        this.createDarkness();
        
        if (this.window)
            this.windowHideAndDestroy(window);

        var windowContainer = document.createElement('div');
        windowContainer.id = 'big_window_container';
        
        this.window = document.createElement('div');
        this.window.className = 'marker_big_window';
        //this.handle.parentNode.appendChild(windowContainer);
        //document.getElementById('page').appendChild(windowContainer);
        document.body.appendChild(windowContainer);
        windowContainer.style.cssFloat = 'left';
        windowContainer.style.width = '1px'; 
        windowContainer.style.left = (242 + document.getElementById('page').offsetLeft) + 'px';
        windowContainer.style.top = (110 + document.getElementById('page').offsetTop) + 'px';
        windowContainer.style.position = 'absolute';
        windowContainer.appendChild(this.window);
        
        var header = document.createElement('div');
        this.window.appendChild(header);
        this.window.header = header;
        header.className = 'window_header';
        
        var zamknijRect = document.createElement('div');
        zamknijRect.className = 'window_close clickable';
        zamknijRect.onclick = function() {
            this.parent.windowHideAndDestroy();
            nd();
        };
        zamknijRect.onmouseover = function() { return overlib('potwierdź/zamknij', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); };
        zamknijRect.onmouseout = function() { nd(); }
        header.zamknijRect = zamknijRect;
        this.window.header.zamknij = zamknijRect;
        zamknijRect.parent = map_;
        zamknijRect.style.backgroundColor = 'white';
        
        var animateOne = 
            dojo.animateProperty({
                node: zamknijRect,
                duration: 800,
                properties: { 
                    opacity: 0.0
                }
            });
        
        var animateTwo = 
            dojo.animateProperty({
                node: zamknijRect,
                duration: 800,
                properties: { 
                    opacity: 0.7
                }
            });
        //var animateOne = dojo.fadeOut({ node: zamknijRect, delay: 1000});
        //var animateTwo = dojo.fadeIn({ node: zamknijRect, delay: 500});
            
        dojo.connect(animateOne,"onEnd", dojo.hitch(animateTwo, function() {
            this.play();
        }));
        dojo.connect(animateTwo,"onEnd", dojo.hitch(animateOne, function() {
            this.play();
        }));
            
        /*var animateOne.onEnd = dojo.hitch(animateTwo, function() { this.play() });*/
        
        animateOne.play();
        
        header.appendChild(zamknijRect);
        
        this.gMap.disableScrollWheelZoom();
        
        if (polecane)
        {
            var kotylion = document.createElement('img');
            kotylion.src = '/img/map/kotylion.png';
            kotylion.className = 'kotylion';
            windowContainer.appendChild(kotylion);
        }   
         
        return this.window;
    },
    
    windowHideAndDestroy: function() {
        calendar_.handle.className = '';
        inotes_.handle.className = '';
        this.unlockTempMarker();
        
        this.gMap.enableScrollWheelZoom();
        this.destroyDarkness();
        //this.window.parentNode.parentNode.removeChild(this.window.parentNode);
        document.body.removeChild(this.window.parentNode);
        this.window = null;
    }
};


function initializeMap(handleId, pointManager)
{
    return new mapClass(document.getElementById(handleId), pointManager);
}

/*************************************************************************



                            pointManager
                                
                                
                                
                                
*************************************************************************/



function pointManagerClass()
{
    this.init();
}


pointManagerClass.prototype = {
    map: null,
    lines: false,
    
    aggregateWeb: [],
    aggregateVertical: 3,
    aggregateHorizontal: 6,
    aggregateLimit: 30,
    
    elements: [
        {
            'selected': false,
            'items': []
        }, 
        {
            'selected': false,
            'items': []
        },
        {
            'selected': false,
            'items': []
        },
        {
            'selected': false,
            'items': []
        },
        {
            'selected': false,
            'items': []
        }
    ],

    
    // events
    onActivate: function() {}, // manager zostal aktywowany i ma jakies punkty do pokazania
    onDeactivate: function() {}, // nic nie chcemy od managera
    onChange: function() {}, // cos sie zmienilo w punktach
    onElementActivate: function(itemIndex) {},
    onElementDeactivate: function(itemIndex) {},
    
    
    init: function()
    {
    },
    
    // mapa zglasza sie do point managera
    initMap: function(map)
    {
        this.map = map;
    },
    
    clearElements: function()
    {
    },
   
    
    /**
       mapa sie ruszyla, wysylamy jesli trzeba request o nowe punkty
    */
    updatePointsBounds: function()
    {
        var requestList = [];

        for (var i = 0; i < this.elements.length; i++)
        {
            
            if (this.elements[i].selected)
            {
                var request = new Object();

                request.bounds = this.optimizeBounds(this.map.getMapBoundsArray(), i);
                var date = calendar_.getSelectedDate();
                request.date = date.getDate() + '-' + (date.getMonth() + 1) + '-' + date.getFullYear();
                request.typeIndex = i;
                request.filter = sidebar_.getFiltersForMenuElement(i);
                requestList.push(request);
            }       
        }
        
        if (requestList.length > 0)
        {
            this.sendRequestList(requestList);
            this.onChange();
        }

    },
    
    
    /**
      czysci clustery z mapy
    **/
    clearAggregateWeb: function() {
        
        for (var i = 0; i < this.aggregateWeb.length; i++)
        {
            for (var j = 0; j < this.aggregateWeb[i].length; j++)
            {
                with (this.aggregateWeb[i][j])
                {
                    if (masterMarker)
                        this.map.gMap.removeOverlay(masterMarker);
                    else
                        for (var k = 0; k < items.length; k++)
                            this.hideSmallItem(items[k]);
                }
            }
        }
        map_.gMap.clearOverlays();
        
    },
    
    /**
      Metoda powinna wyczyscic stara siec i zbudowac nowa
      nastepnie powinna wsadzic odpowiednie obiekty zbierajace ikony w grupy
    **/
    recreateAggregateWeb: function(bounds) {
        this.aggregateWeb = [];
        
        var vStep = (bounds.getNorthEast().lng() - bounds.getSouthWest().lng()) / (this.aggregateVertical);
        var hStep = (bounds.getNorthEast().lat() - bounds.getSouthWest().lat()) / (this.aggregateHorizontal);
        
        var lngBottom = bounds.getSouthWest().lng();
        for (var i = 0; i < this.aggregateVertical; i++)
        {
            this.aggregateWeb[i] = [];
            var latLeft = bounds.getSouthWest().lat();
            
            for(var j = 0; j < this.aggregateHorizontal; j++)
            {
                var cluster = new Object();
                cluster.bounds = new GLatLngBounds(
                    new GLatLng(latLeft, lngBottom),
                    new GLatLng(latLeft + hStep, lngBottom + vStep));
                    
                cluster.items = [];
                cluster.index = i + ' ' + j;
                cluster.masterMarker = null;
                // cluster powinien umiec wyskalowac swoj uchwyt na ikonke
                cluster.getTopLeftScaled = function() {
                    var lat = 0;
                    var lng = 0;
                    
                    // zeby nie bylo dzielenia przez 
                    if (this.items.length > 0)
                    {
                        for (var i = 0; i < this.items.length; i++)
                        {
                            //alert(this.items[i].dataObject.geo_szer);
                            lat += parseFloat(this.items[i].dataObject.geo_szer);
                            lng += parseFloat(this.items[i].dataObject.geo_dlug);
                        }
                        
                        lat /= this.items.length;
                        lng /= this.items.length;
                        
                        /*var point = new GLatLng(lat, lng);
                        if (!this.bounds.containsLatLng(point))
                        {
                            alert(lat + ' x ' + lng);
                            alert(this.bounds.getCenter().lat() + ' ' + this.bounds.getCenter().lng());
                        }*/
                        return new GLatLng(lat, lng);
                    }
                }
                
                cluster.getCounters = function() {
                    var counters = [0, 0, 0, 0, 0];
                    for (var i = 0; i < this.items.length; i++)
                        counters[this.items[i].dataObject.ikonka]++;
                    //alert('a');
                    return counters;
                }
                
                if (this.lines)
                {
                    var poly = [
                        new GLatLng(
                            cluster.bounds.getNorthEast().lat(),
                            cluster.bounds.getSouthWest().lng()),
                        new GLatLng(
                            cluster.bounds.getNorthEast().lat(),
                            cluster.bounds.getNorthEast().lng()),
                        new GLatLng(
                            cluster.bounds.getSouthWest().lat(),
                            cluster.bounds.getNorthEast().lng()),
                        new GLatLng(
                            cluster.bounds.getSouthWest().lat(),
                            cluster.bounds.getSouthWest().lng()),
                        new GLatLng(
                            cluster.bounds.getNorthEast().lat(),
                            cluster.bounds.getSouthWest().lng())
                    ];
                    map_.gMap.addOverlay(new GPolyline(poly));
                }
                
                
                this.aggregateWeb[i][j] = cluster;
                latLeft += hStep;
            }
            lngBottom += vStep;
        }
        
        for (var i = 0; i < this.elements.length; i++)
        {
            var items = this.elements[i].items;
            for (var j in items)
            {
                if (this.itemShouldBeVisible(items[j]))
                {
                    var point = new GLatLng(items[j].dataObject.geo_szer, items[j].dataObject.geo_dlug);
                    //this.aggregateWeb[0][0].items.push(items[j]);
                    for (var k = 0; k < this.aggregateVertical; k++)
                    {
                        for (var l = 0; l < this.aggregateHorizontal; l++)
                        {
                            if (this.aggregateWeb[k][l].bounds.containsLatLng(point))
                                this.aggregateWeb[k][l].items.push(items[j]);
                        }
                    }
                } // czy cos z nimi robic
            } // itemy w elementach
        } // elementy
    },
    
    
    /**
      Metoda powinna przeleciec caly web, i dodac clustery odpowiednio do mapy
    **/
    drawAggregateWeb: function() {
        for (var i = 0; i < this.aggregateWeb.length; i++)
        {
            for (var j = 0; j < this.aggregateWeb[i].length; j++)
            {
                
                with (this.aggregateWeb[i][j])
                {
                    if (items.length > 0)
                    {
                        //alert(items.length);
                        // ilosc miejsc w kwadracie mniejsza od granicznej
                        if (items.length < this.aggregateLimit)
                        {
                            for (var k = 0; k < items.length; k++)
                                this.showSmallItem(items[k]);
                        } else { // ilosc miejsc w kwadracie kwalifikuje do agregacji
                            masterMarker = map_.createAggregateMarker(
                                getTopLeftScaled(),
                                getCounters());
                        }
                    }
                } // with
            }
        }
        
        
    },
    
    redrawIcons: function() {
        this.clearAggregateWeb();
        this.recreateAggregateWeb(map_.gMap.getBounds());
        this.drawAggregateWeb();
        if (inotes_.showingGlobal)
            inotes_.showGlobal();
        if (map_.promo)
            map_.promo.clearOnMap();
//        alert('draw finished');
    },
    
    /**
        punkty ktore nie sa na mapie, powinny sie pokazac
        punkty ktore nie powinny na niej byc niechaj znikna
    */
    /*updatePointsOnMap: function(sublist)
    {
        //if (!sublist)
        if (true)
        {
            for (var i = 0; i < this.elements.length; i++)
            {
                var items = this.elements[i].items;
                for (var j in items)
                {
                    if (this.itemShouldBeVisible(items[j]))
                        this.showSmallItem(items[j]);
                    else
                        this.hideSmallItem(items[j]);
                }
            }
        } else
        {
            for (var j in sublist)
            {
                if (this.itemShouldBeVisible(sublist[j]))
                    this.showSmallItem(sublist[j]);
                else
                    this.hideSmallItem(sublist[j]);
            }
            
        }
        //this.updatePointsBounds();
    },*/
    
    countItemInRect: function(rect, typeIndex)
    {
    },
    
    itemShouldBeVisible: function(item)
    {
        return (this.elements[item.dataObject.ikonka].selected == true);
    },
    
    showSmallItem: function(item)
    {
        if (!item.visible)
        {
            if (!item.marker)
                item.marker = this.addSmallItem(item.dataObject);
            item.marker.show();
            item.visible = true;
        }
    },
    
    hideSmallItem: function(item)
    {
        if (item.visible)
        {
            // deoptymalizacja!
            this.map.gMap.removeOverlay(item.marker);
            item.marker = null;
            //item.marker.hide();
            item.visible = false;
        }
    },
    
    addSmallItem: function(smallItemData)
    {
        var marker = this.map.createMarker(smallItemData, this.map.createIcon(smallItemData.ikonka, smallItemData.miejsce, smallItemData.innerid, smallItemData.polecane));
        GEvent.addListener(marker, 'mouseover', function() {
                map_.markerShowSmallWindow(this);
            }
        );
        
        GEvent.addListener(marker, 'mouseout', function() {
                if (map_.windowSmall)
                    map_.windowSmall.gtfo();
            }
        );
        
        GEvent.addListener(marker, 'click', function() {
                map_.markerShowBigWindowAjaxPlace(this);
            }
        );
        return marker;
    },
    
    sendRequestList: function(requestList)
    {
        map_.showLoader();
        var content = new Object();
        content.jsonRequest = dojo.toJson(requestList); 
        
        dojo.xhrPost({
            url: 'http://' + servername + '/application/icons.php',
            handleAs: "json",
            content: content,
            timeout: 100000, // 25 sec
            load: function(data,args)
            {
                try 
                {
                    //var sublist = new Array();
                    for (var i = 0; i < data.length; i++)
                    {
                        //pointManager_.addSmallItem(data[i]);
                        var item = data[i];
                        var typeIndex = parseInt(item.ikonka);
                        item.ikonka = typeIndex;
                        if (item.miejsce == '0')
                            item.id *= 10000000;
                        var elementList = pointManager_.elements[typeIndex].items;
                        if (!elementList[item.id])
                        {
                            var element = { 
                                'marker': null,
                                'visible': false,
                                'dataObject': item
                            };
                            elementList[element.dataObject.id] = element;
                            //sublist.push(element);
                        }
                    }
                    /*if (sublist.length > 0)
                        pointManager_.updatePointsOnMap(sublist);*/
                    pointManager_.redrawIcons();
                        
                    map_.hideLoader();
                } catch (e)
                {
                    // klopot z danymi serwera
                    map_.hideLoader();
                    //throw e;
                }
            },
            error: function() {
                map_.hideLoader();
            }
        });
    },
    
    
    
    optimizeBounds: function(newBound, typeIndex)
    {
        return [newBound];
    },
    
    
    /**
        dodano typ punktow do mapy
    */
    enablePointsType: function(typeIndex)
    {
        if (!this.elements[typeIndex].selected)
        {
            this.elements[typeIndex].selected = true;
            
            // jesli updatuje wszystkie punkty, to po prostu
            /* zakomentowane po dodaniu "wyskakujacego okna" */
            //this.updatePointsBounds();
            
            // jesli nie to powinienem robic to, ale tak nie robie
            /*var requestList = new Array();
            var request = new Object();
            
            request.bounds = this.optimizeBounds(this.map.getMapBoundsArray(), typeIndex);
            request.date = this.date.getDate() + '-' + this.date.getMonth() + '-' + this.date.getFullYear();
            request.typeIndex = typeIndex;
            request.filter = sidebar_.getFiltersForMenuElement(typeIndex);
            requestList.push(request);
            

            this.sendRequestList(requestList);*/
            
            //this.onChange();
            this.onActivate();
            this.onElementActivate(typeIndex);
        }
    },
    
    enableTypeCount: function()
    {
        var count = 0;
        for (var i = 0; i < this.elements.length; i++)
            if (this.elements[i].selected)
                count++;
        return count;
    },
    
    recreateAllPointsTypes: function() {
        for (var i in this.elements)
            this.elements[i].items = [];
        this.updatePointsBounds();
    },
    
    recreatePointsType: function(typeIndex)
    {
        this.elements[typeIndex].items = [];
        if (this.elements[typeIndex].selected)
            this.updatePointsBounds();
        else
            this.enablePointsType(typeIndex);
    },
    
    disablePointsType: function(typeIndex)
    {
        this.elements[typeIndex].selected = false;
        pointManager_.redrawIcons();
        //this.elements[typeIndex].items = [];
        /*if (this.elements[typeIndex].selected)
        {
            
            for (var i in this.elements[typeIndex].items)
            {
                var item = this.elements[typeIndex].items[i];
                this.hideSmallItem(item);
            }
            //alert('a');
            // deoptymalizacja!
            this.elements[typeIndex].items = [];
            
            this.elements[typeIndex].selected = false;
            this.onChange();
            this.onElementDeactivate(typeIndex);
            if (this.enableTypeCount() == 0)
                this.onDeactivate();
        }*/
        this.onChange();
        this.onElementDeactivate(typeIndex);
        if (this.enableTypeCount() == 0)
                this.onDeactivate();
    }
    

}

/*************************************************************************



                                MENU
                                
                                
                                
                                
*************************************************************************/



function menuClass(pointManager)
{
    this.init(pointManager);
}


menuClass.prototype = {
    elements: [],
    pointManager: null,
    subMap: null,
    
    init: function(pointManager)
    {
        this.pointManager = pointManager;
        var elements = dojo.query('ul#menu li a')
        
        for (var i = 0; i < elements.length; i++)
        {
            var element = elements[i];
            element.index = parseInt(element.href[element.href.length - 1]);
            this.elements[element.index] = element;
            element.state = 1;
            element.parent = this;
            if (element.index == 5)
            {
                element.onclick = function() {
                    var window = map_.windowCreateAndShow();
                    
                    window.header.style.height = '28px';
                    window.className += ' newplace';
                    
                    var contentContainer = document.createElement('form');
                    window.appendChild(contentContainer);
                    contentContainer.enctype = 'multipart/form-data';
                    //contentContainer.action = 
                    
                    var contentPage1 = document.createElement('div');
                    contentPage1.className = 'content';
                    contentContainer.appendChild(contentPage1);
                        
                    
                    /*var nazwaDiv = document.createElement('div');
                    nazwaDiv.className = 'field';
                    contentPage1.appendChild(nazwaDiv);
                    var label = document.createElement('label');
                    label.innerHTML = 'Nazwa: ';
                    nazwaDiv.appendChild(label);
                    var nazwaMiejsca = document.createElement('input');
                    nazwaDiv.appendChild(nazwaMiejsca);
                    
                    var miastoDiv = document.createElement('div');
                    miastoDiv.className = 'field';
                    contentPage1.appendChild(miastoDiv);
                    var label = document.createElement('label');
                    label.innerHTML = 'Miasto: ';
                    miastoDiv.appendChild(label);
                    var nazwaMiasto = document.createElement('input');
                    miastoDiv.appendChild(nazwaMiasto);
                    
                    var ulicaDiv = document.createElement('div');
                    ulicaDiv.className = 'field';
                    contentPage1.appendChild(ulicaDiv);
                    var label = document.createElement('label');
                    label.innerHTML = 'Ulica: ';
                    ulicaDiv.appendChild(label);
                    var nazwaAdres = document.createElement('input');
                    ulicaDiv.appendChild(ulicaDiv);
                    
                    var blokDiv = document.createElement('div');
                    blokDiv.className = 'field';
                    contentPage1.appendChild(blokDiv);
                    var label = document.createElement('label');
                    label.innerHTML = 'Nr bloku: ';
                    blokDiv.appendChild(label);
                    var blokAdres = document.createElement('input');
                    blokDiv.appendChild(blokAdres);*/
                    
                    
                    
                    var subMapHandle = document.createElement('div');
                    subMapHandle.className = 'window_submap';
                    contentPage1.appendChild(subMapHandle);
                    var subMap = new GMap2(subMapHandle);
                    menu_.subMap = subMap;
                    
                    var point = new GLatLng(52.173931692568, 18.8525390625);
                    subMap.setCenter(point, 6);
                    subMap.enableScrollWheelZoom();
                    subMap.addControl(new GSmallMapControl());
                    subMap.control = new Object();
                    subMap.control.map = subMap;
                    subMap.control.geoCoder = new GClientGeocoder();
                    
                    subMap.control.createPoint = function(point)
                    {
                        if (this.overlay)
                                this.map.removeOverlay(this.overlay);
                       this.overlay = new GMarker(point);
                       this.map.addOverlay(this.overlay);
                       //document.getElementById('latlgn').value = point.lat() + ' \\ ' + point.lng();
                    }
                    
                    var elementyOpisu = document.createElement('div');
                    elementyOpisu.className = 'elementyopisu';
                    elementyOpisu.innerHTML = '<p>Wprowadź informacje o miejscu, które chcesz dodać. ' +
                        ' To jest pierwszy krok po jego wykonaniu będzie można dodać rozszerzony opis i zdjęcie' + 
                        '<div class="field nazwa"><label>Nazwa:</label><input type="text" /></div>' +
                        '<div class="field miasto"><label>Miasto:</label><input type="text" /></div>' +
                        '<div class="field ulica"><label>Ulica:</label><input type="text" /></div>' +
                        '<div class="field nrb_loku"><label>Nr bloku:</label><input type="text" /></div>' +
                        '<div class="field rodzaj"><label>Rodzaj:</label><select id="rodzaj_select1"></select></div>';

                    contentPage1.appendChild(elementyOpisu);
                    
                    var rodzajSelect = document.getElementById('rodzaj_select1');
                    
                    rodzajSelect.pobierzKategorie = function(parent, handle, parentSelect)
                    {
                        var content = new Object();
                        content.parent = parent;
                        dojo.xhrPost({
                            url: 'http://' + servername + '/application/kategoria.php',
                            handleAs: "json",
                            content: content,
                            handle: handle,
                            timeout: 100000, // 5 sec
                            load: function(data, xhr)
                            {
                                for(var i = 0; i < data.length; i++)
                                {
                                    xhr.args.handle.options[i] = (new Option(data[i].short_name, data[i].id));
                                }
                                if (parentSelect && data.length > 0)
                                    elementyOpisu.appendChild(handle.parentNode);
                                else
                                    parentSelect.childs = [];
                            }
                        });
                    }
                    
                    
                    rodzajSelect.pobierzKategorie(null, rodzajSelect);
                    
                    rodzajSelect.destroyChilds = function(first) {
                        if (this.childs)
                            for (var i in this.childs)
                                this.childs[i].destroyChilds();
                        if (!first && this.parentNode)
                            this.parentNode.parentNode.removeChild(this.parentNode);
                    }
                    
                    rodzajSelect.onchange = function() {
                        this.destroyChilds(true);
                        
                        this.childs = [];
                        var div = document.createElement('div');
                        div.className = 'field';
//                        elementyOpisu.appendChild(div);
                        
                        var label = document.createElement('label');
                        div.appendChild(label);
                        label.innerHTML = '&nbsp';
                        
                        var select = document.createElement('select');
                        div.appendChild(select);
                        
                        this.childs.push(select)
                        select.pobierzKategorie = this.pobierzKategorie;
                        select.onchange = this.onchange;
                        select.destroyChilds = this.destroyChilds;

                        this.pobierzKategorie(this.options[this.selectedIndex].value, select, this);
                        
                        //alert(this.options[this.selectedIndex].value);
                    }
                                            
                    /*//subMap.control.miasto = nazwaMiasto;
                    //subMap.control.adres = nazwaAdres;
                    //nazwaAdres.control = subMap.control;
                    //nazwaMiasto.control = subMap.control;
                    nazwaMiasto.onchange = function() {
                        this.control.goToLocation();
                    }
                    
                    

                    
                    nazwaAdres.onchange = nazwaMiasto.onchange;
                    
                    subMap.control.goToLocation = function()
                    {
                        if (this.geoCoder) 
                        {
                            address = this.miasto.value + ' ' + this.adres.value;
                            
                            this.geoCoder.getLatLng(
                                address,
                                function(point) 
                                {
                                    if (!point) {
                                        //alert(address + " not found");
                                    } else {
                                        menu_.subMap.setCenter(point, 16);
                                        menu_.subMap.control.createPoint(point);
                                    }
                                }
                            );
                        }
                    }*/
                    
                    GEvent.addListener(subMap, "click", function(marker, point) {
                        this.control.createPoint(point);
                    });
                    
                    
                    var elementyOpisu2 = document.createElement('div');
                    elementyOpisu2.className = 'elementyopisu2';
                    elementyOpisu2.innerHTML = '<p><span class="szczegoly">Uzupełnij szczegóły dotyczące miejsca:</span> ' +
                        '<div class="field zdjecie"><label>Zdjęcie:</label><input type="file" /></div>' +
                        '<div class="field email"><label>Adres email:</label><input type="text" /></div>' +
                        '<div class="field www"><label>Strona www:</label><input type="text" /></div>' +
                        '<div class="field ceny"><label>Ceny:</label><input type="text" /></div>' +
                        '<div class="field cechy"><label>Cechy:</label><input type="text" /></div>' +
                        '<div class="field opis"><label>Opis:</label><textarea></textarea></div>';
                    var contentPage2 = document.createElement('div');
                    contentPage2.appendChild(elementyOpisu2);
                    
                    contentContainer.appendChild(contentPage2);
                    contentPage2.className = 'content';
                    contentPage2.style.display = 'none';
                    
                    var submit = document.createElement('input');
                    submit.type = 'submit';
                    submit.value = 'Dalej';
                    contentPage1.appendChild(submit);
                    submit.next = contentPage2;
                    
                    // goto page 2
                    submit.onclick = function() {
                        var error = false;
                        var elements = dojo.query('div.nazwa input, div.miasto input, div.ulica input', this.parentNode);
                        for (var i = 0; i < elements.length; i++)
                        {
                            if (elements[i].value.length <= 1)
                            {
                                flashHighlight(elements[i]);
                                //alert('Pole ' + elements[i].parentNode.firstChild.innerHTML + ' musi być wypełnione');
                                return false;
                            }
                        }
                        if (!error)
                        {
                            this.parentNode.style.display = 'none';
                            this.next.style.display = 'block';
                        }
                        
                        return false;
                        //map_.windowHideAndDestroy();
                        //return false;
                        
                        /*if (this.nazwa.value.length > 1) 
                        {
                            if (this.miasto.value.length > 1)
                            {
                                if (this.adres.value.length > 1) 
                                {
                                    this.parentNode.style.display = 'none';
                                    this.next.style.display = 'block';
                                } else
                                    warnBlink(this.adres);
                            } else
                                warnBlink(this.miasto);
                        } else
                            warnBlink(this.nazwa);
                            
                            
                        return false;*/
                    }
                    

                    
                    var submit = document.createElement('input');
                    submit.type = 'submit';
                    submit.value = 'Cofnij';
                    contentPage2.appendChild(submit);
                    submit.prev = contentPage1;
                    // goto page 2
                    submit.onclick = function() {
                        this.parentNode.style.display = 'none';
                        this.prev.style.display = 'block';
                        return false;
                    }
                    
                    var submit = document.createElement('input');
                    submit.type = 'submit';
                    submit.value = 'Zatwierdź';
                    contentPage2.appendChild(submit);
                    // send&close
                    submit.onclick = function() {
                        var content = new Object();
                        dojo.xhrPost({
                            url: 'http://' + servername + '/application/addnew.php',
                            handleAs: "json",
                            content: content,
                            timeout: 100000, // 5 sec
                            load: function(data, xhr)
                            {
                                alert('Dziękujemy! Wpis został poprawnie dodany.\n Obecnie czeka na akceptację moderatora.');
                            }
                        });
                        
                        map_.windowHideAndDestroy();
                    }
                    
                    
                }
            } else
                element.onclick = this.elementOnClick;
            element.onmousedown = function() { return false }
            element.onmouseout = this.elementOnMouseOut;
            element.onmouseover = this.elementOnMouseOver;
        }
        /*this.pointManager.onDeactivate = function() {
            sidebar_.minimizeHide();
        }*/
        
    },
    
    selectElement: function(index)
    {
        if (index < 5) {
            this.pointManager.enablePointsType(index);
            if (pageTracker)
                pageTracker._trackPageview('/menuglowne/select/' + index);
        }
        this.elements[index].selected = true;
    },
    
    unselectElement: function(index)
    {
        if (index < 5)
        {
            this.pointManager.disablePointsType(index);
            if (pageTracker)
                pageTracker._trackPageview('/menuglowne/unselect/' + index);
        }
        this.elements[index].selected = false;
    },
    
    elementOnMouseOver: function() {
        if (this.state != 3)
        {
            this.state = 2;
            this.firstChild.src = this.firstChild.src.replace(/_[0-9]/, '_2');
        }
    },
    
    elementOnMouseOut: function() {
        if (this.state != 3)
        {
            this.state = 1;
            this.firstChild.src = this.firstChild.src.replace(/_[0-9]/, '_1');
        }
    },
    
    elementOnClick: function() {
        if (this.state == 3)
        {
            this.parent.unselectElement(this.index);
            this.state = 1;
            this.firstChild.src = this.firstChild.src.replace(/_[0-9]/, '_2');
        } else // state 1
        {
            this.state = 3;
            this.parent.selectElement(this.index);
            this.firstChild.src = this.firstChild.src.replace(/_[0-9]/, '_3');
        }
        reloadBanners();
    }
}



function initializeMenu(pointManager)
{
    return new menuClass(pointManager);
}

/*************************************************************************



                                CALENDAR
                                
                                
                                
                                
*************************************************************************/


function calendarClass(handle)
{
    this.init(handle);
}

calendarClass.prototype = {
    handle: null,
    selected: null,
    selectedMonth: null,
    kinoUpdaterId: null, // identyfikator przycisku do updatowania aktualnego repertuaru
    filterWindow: null, // okienko filtra ktore ewentualnie trzeba bedzie updatowac
    //days: [], 
    
    init: function(handle) {
        this.handle = handle;
        this.selectMonth(new Date());
    },
    
    getSelectedDate: function()
    {
        if (this.selected)
            return this.selected.date;
        else
            return null;
    },
    
    getSelectedDateText: function()
    {
        var date = this.getSelectedDate();
        if (date)
            return date.getDate() + ' ' + this.monthToWordInDate(date.getMonth() + 1) + ' ' + date.getFullYear()
    },
    
    drawPrevMonth: function()
    {
        this.selectedMonth.setMonth(this.selectedMonth.getMonth() - 1);
        this.selectMonth(this.selectedMonth);
    },
    
    drawNextMonth: function()
    {
        this.selectedMonth.setMonth(this.selectedMonth.getMonth() + 1);
        this.selectMonth(this.selectedMonth);
    },
    
    setKinoUpdaterId: function(id)
    {
        this.kinoUpdaterId = id;
    },
    
    daySelect: function(day)
    {
        if (this.selected != day)
        {
            if (this.selected)
                this.selected.className = this.selected.oldClassName;
            this.selected = day;
            this.selected.oldClassName = this.selected.className;
            this.selected.className = this.selected.oldClassName + ' selected';
            pointManager_.recreateAllPointsTypes();
            var kinoImg = document.getElementById(this.kinoUpdaterId);
            
            // onupdate kina jesli zmienia sie data
            if (kinoImg)
                kinoImg.onclick();
            if (this.filterWindow)
                this.filterWindow.onclick();
        } else
        {
            /*if (this.selected)
            {
                this.selected.className = this.selected.oldClassName;
                this.selected = null;
            }*/
        }
    },
    
    selectMonth: function(month) 
    {
        //this.days = [];
        this.selectedMonth = month;
        if (this.handle.firstChild)
            this.handle.removeChild(this.handle.firstChild);
        var monthPage = this.drawMonthPage(month);
        var container = document.createElement('div');
	container.className = 'calendar_content_container';
        this.handle.appendChild(monthPage);

    },
    
    drawMonthPage: function(month, container)
    {
        var date = new Date(month);
        date.setDate(1);
        var today = new Date();
        
        container = document.createElement('div');
        container.className = 'calendar_content_container';
        
        var table = document.createElement('table');
//        var capt = document.createElement('caption');
        var capt = document.createElement('div');
        
        var aPrev = document.createElement('img');
        aPrev.src = 'http://imiejsca.pl/img/calendar/month_left2.png';
        aPrev.calendar = this;
        aPrev.className = 'Prev clickable';
        aPrev.onclick = function() {
            this.calendar.drawPrevMonth();
        }
        
        var aNext = document.createElement('img');
        aNext.src = 'http://imiejsca.pl/img/calendar/month_right2.png';
        aNext.calendar = this;
        aNext.className = 'Next clickable';
        aNext.onclick = function() {
            this.calendar.drawNextMonth();
        }
        
        capt.appendChild(aPrev);
        
        var spanName = document.createElement('span');
        spanName.className = 'month_name';
        capt.appendChild(spanName);
        //span.appendChild(document.createTextNode(this.monthToWord(date.getMonth() + 1) + ' ' + date.getFullYear()));
        spanName.appendChild(document.createTextNode(this.monthToWord(date.getMonth() + 1) + ' ' + this.yearLastDigits(date)));
        
        capt.appendChild(aNext);
        
        //capt.appendChild(span);
        container.appendChild(capt);
        
        // table to container
        container.appendChild(table);
        
        // IE need this shit
        var tbody = document.createElement('tbody');
        table.appendChild(tbody);
        
        //capt.innerHTML  =  + this.monthToWord(date.getMonth() + 1) + ' ' + date.getFullYear() + ' &raquo;';
        /*table.className = 'month'+(month.getMonth() + 1);
        var tr = document.createElement('tr');
        table.appendChild(tr);
        tr.innerHTML = '<th>Pn</th><th>Wt</th><th>Śr</th><th>Cz</th><th>Pt</th><th>Sb</th><th>Nd</th>';*/
        
        var trCount = 0;
        
        var dayMonday = (date.getDay() == 0? 6: date.getDay() - 1);
        var i = 0;
        var j = dayMonday;
        while (j > 0)
        {
            if (i % 7 == 0)
            {
                    trCount++;
                    var tr = document.createElement('tr');
                    tbody.appendChild(tr);
            }
            var td = this.newTd();
            td.className = 'oldDay clickable';
            tr.appendChild(td);
            i++;
            j--;
        }
        
        
        while (date.getMonth() == month.getMonth())
        {
            if (i % 7 == 0)
            {
                trCount++;
                var tr = document.createElement('tr');
                tbody.appendChild(tr);
            }
            var td = this.newTd(date);
            //this.days.push(td);
            
            if ((today.getDate() == date.getDate()) && (today.getMonth() == date.getMonth()) && (today.getYear() == date.getYear()))
            {
                td.oldClassName = 'today clickable';
                td.className = 'today clickable';
                
                // jesli nie ma nic zaznaczonego to zaznacz dzis
                if (!this.selected)
                    this.selected = td;
                
            }   
            else 
                if (date > today)
                    td.className = 'futureDay clickable';
                else
                    td.className = 'oldDay clickable';
                    
            td.innerHTML = date.getDate();
            td.date = new Date(date);
            
            if ((this.selected) && (this.selected.date.getDate() == date.getDate()) && (this.selected.date.getMonth() == date.getMonth()) && (this.selected.date.getYear() == date.getYear())) 
            {
                this.selected = td;
                td.className += ' selected';
            }
            
            tr.appendChild(td);
            date.setMilliseconds(date.getMilliseconds() + 86400000);
            i++;
        }
        if (trCount == 6)
            table.className = 'sixlines';
        
        return container;
    },
    
    yearLastDigits: function(date)
    {
        return date.getFullYear().toString().substr(2, 2);
    },
    
    monthToWordInDate: function(month)
    {
        switch (month)
        {
            case 1: return 'stycznia';
            case 2: return 'lutego';
            case 3: return 'marca';
            case 4: return 'kwietnia';
            case 5: return 'maja';
            case 6: return 'czerwca';
            case 7: return 'lipca';
            case 8: return 'sierpnia';
            case 9: return 'września';
            case 10: return 'października';
            case 11: return 'listopada';
            case 12: return 'grudnia';
        }
    },
    
    monthToWord: function(month)
    {
        switch (month)
        {
            case 1: return 'styczeń';
            case 2: return 'luty';
            case 3: return 'marzec';
            case 4: return 'kwiecień';
            case 5: return 'maj';
            case 6: return 'czerwiec';
            case 7: return 'lipiec';
            case 8: return 'sierpień';
            case 9: return 'wrzesień';
            case 10: return 'październik';
            case 11: return 'listopad';
            case 12: return 'grudzień';
        }
    },
    
    tdOnDayDown: function()
    {
        this.calendar.daySelect(this);
        return false;
    },
    
    newTd: function(date)
    {
        var td = document.createElement('td');
        td.calendar = this;
        td.date = date;
        
        td.onmousedown = this.tdOnDayDown;
        /*td.onmouseover = this.onDayOver;
        td.onmouseup = this.onDayUp;
        */
        return td;
    }
};


function initializeCalendar(handleId)
{
    return new calendarClass(document.getElementById(handleId));
}

/*************************************************************************



                                SIDEBAR
                                
                                
                                
                                
*************************************************************************/
function sidebarClass(handle)
{
    this.init(handle);
}


sidebarClass.prototype = {
    handle: null,
    contentHandle: null,
    minimized: true,
    visible: false,

    triangle: null,
    window: null,
    
    sprecyzujText: null,
    elementHelpers: [
        {
            handle: document.createElement('p'),
            windowHandle: document.createElement('a'),
            status: 0,
            active: 1,
            descr: '<span class="paragraphLike">kina z repertuarem:<br>kina:</span>',
            shortDescr: 'z repertuarem',
            index: 0,
            group: 0,
            selected: []
        },
        {
            handle: document.createElement('p'),
            windowHandle: document.createElement('a'),
            status: 0,
            active: 1,
            descr: 'knajpki wg kuchni:',
            shortDescr: 'kuchnia',
            index: 1,
            group: 1,
            selected: []
        },
        {
            handle: document.createElement('p'),
            windowHandle: document.createElement('a'),
            status: 0,
            active: 1,
            descr: 'zwiedzanie:',
            shortDescr: 'zwiedzanie',
            index: 2,
            group: 2,
            selected: []
        },
        {
            handle: document.createElement('p'),
            windowHandle: document.createElement('a'),
            status: 0,
            active: 1,
            descr: 'muzyka/scena:',
            shortDescr: 'muzyka/scena',
            index: 3,
            group: 3,
            selected: []
        },
        {
            handle: document.createElement('p'),
            windowHandle: document.createElement('a'),
            status: 0,
            active: 1,
            descr: 'zdrowy relaks:',
            shortDescr: 'relaks',
            index: 4,
            group: 4,
            selected: []
        },
        {
            handle: document.createElement('p'),
            windowHandle: document.createElement('a'),
            status: 0,
            active: 1,
            descr: 'knajpki wg typu:',
            shortDescr: 'typ',
            index: 5,
            group: 1,
            selected: []
        },
        {
            handle: document.createElement('p'),
            windowHandle: document.createElement('a'),
            status: 0,
            active: 0,
            descr: 'scena:',
            shortDescr: 'scena',
            index: 6,
            group: 3,
            selected: []
        },
        {
            handle: document.createElement('p'),
            windowHandle: document.createElement('a'),
            status: 0,
            active: 1,
            descr: 'sieciowe:',
            shortDescr: 'sieciowe',
            index: 7,
            group: 1,
            selected: []
        },
        {
            handle: document.createElement('p'),
            windowHandle: document.createElement('a'),
            status: 0,
            active: 1,
            descr: 'kina wg filmów:',
            shortDescr: 'filmy',
            index: 8,
            group: 0,
            selected: []
        },
        {
            handle: document.createElement('p'),
            windowHandle: document.createElement('a'),
            status: 0,
            active: 1,
            descr: 'kina bez repertuaru:',
            shortDescr: 'bez repertuaru',
            index: 9,
            group: 0,
            selected: []
        },
        {
            handle: document.createElement('p'),
            windowHandle: document.createElement('a'),
            status: 0,
            active: 1,
            descr: 'kup bilet:',
            shortDescr: 'kup bilet',
            index: 10,
            group: 3,
            selected: []
        }
        
    ],
    
    getFiltersForMenuElement: function(typeIndex)
    {
        var filterArray = [];
        for (var i in this.elementHelpers[typeIndex].selected)
        {
            // obejscie do kin, jesli 8(czyli filtrowanie kinem) to leca identyfikatory obiektow w filtrze
            if (typeIndex == 0)
                filterArray.push('id' + i);
            else
                if (typeIndex == 9)
                    filterArray.push('bi' + i);
                else
                    if (typeIndex == 10)
                        filterArray.push('wi' + i);
                    else
                        filterArray.push(i);
        }

        if (typeIndex == 3)
            return filterArray.concat(this.getFiltersForMenuElement(6), this.getFiltersForMenuElement(10));
        if (typeIndex == 1)
            return filterArray.concat(this.getFiltersForMenuElement(5), this.getFiltersForMenuElement(7));
        if (typeIndex == 0)
            return filterArray.concat(this.getFiltersForMenuElement(8), this.getFiltersForMenuElement(9));
            
        return filterArray;
    },
    
    init: function(handle, myself)
    {
        this.handle = handle;
        //this.hide();
        var tab = document.createElement('div');
        tab.className = 'sidebar_tab';
        this.handle.appendChild(tab);
        
        this.contentHandle = document.createElement('div');
        this.contentHandle.className = 'sidebar_content';
        this.handle.appendChild(this.contentHandle);
        
        /** search area **/
        var searchArea = document.createElement('form');
        searchArea.className = 'search_area';
        this.contentHandle.appendChild(searchArea);
        
        var searchType1 = document.createElement('span');
        searchType1.innerHTML = 'szukaj:';
        searchArea.appendChild(searchType1);
        searchArea.appendChild(document.createElement('br'));
        
        var searchEdit = document.createElement('input');
        searchEdit.type = 'text';
        searchEdit.onmouseover = function () { overlib('wpisz nazwę miejsca, miasto, ulicę albo dzielnicę i potwierdź naciskając enter', BGCOLOR, '#1CA8D5', FGCOLOR, 'white') };
        searchEdit.onmouseout = function () { nd(); };
        searchEdit.className = 'text';
        searchArea.appendChild(searchEdit);
        searchArea.dataInput = searchEdit;
        searchEdit.onmouseover = function () { overlib('wpisz nazwę miejsca, miasto, ulicę albo dzielnicę i potwierdź naciskając enter', BGCOLOR, '#1CA8D5', FGCOLOR, 'white') };
        var searchSubmit = document.createElement('input');
        searchSubmit.type = 'image';
        searchSubmit.className = 'submit';
        searchSubmit.src = 'http://' + servername + '/img/sidebar/search.png';;
        searchArea.appendChild(searchSubmit);
        
        searchArea.onsubmit = function() {
            map_.searchLocation(this.dataInput.value);
            if (pageTracker)
                pageTracker._trackPageview('/sidebar/search/' + this.dataInput.value);
            reloadBanners();
            
            return false;
        }
        
        /** filter area **/
        //this.contentHandle.innerHTML += '<h1>Preferencje szukania</h1>';
        var triangle = document.createElement('img');
        triangle.className = 'clickable';
        triangle.src = 'http://' + servername + '/img/sidebar/triangle.png';
        tab.appendChild(triangle);
        triangle.parent = this;
        this.triangle = triangle;
        
        // init listeners
        triangle.onclick = function(e) {
            if (this.parent.minimized)
                this.parent.maximize()
            else
                this.parent.minimize();
        }
        
        this.sprecyzujText = document.createElement('span');
        this.sprecyzujText.innerHTML = 'sprecyzuj kryteria:';
        this.sprecyzujText.style.display = 'none';
        this.contentHandle.appendChild(this.sprecyzujText);
        this.contentHandle.appendChild(document.createElement('br'));


        // metody dla helperow
        var groupAdd = function() 
        {
            this.activated = true;
            if (sidebar_.elementHelpers[this.group].activeCount > 0)
                sidebar_.elementHelpers[this.group].activeCount++;
            else
                sidebar_.elementHelpers[this.group].activeCount = 1;
        }
        
        var groupSub = function() 
        {
            this.activated = false;
            if (sidebar_.elementHelpers[this.group].activeCount > 0)
                sidebar_.elementHelpers[this.group].activeCount--;
            else
                sidebar_.elementHelpers[this.group].activeCount = 0;
        }
        
        var groupSetHighlight = function() 
        {
            var set = false;
            if (sidebar_.elementHelpers[this.group].activeCount > 0)
                set = true;
                
            for (var i = 0; i < sidebar_.elementHelpers.length; i++)
            {
                if (sidebar_.elementHelpers[i].group == this.group && sidebar_.elementHelpers[i].active == 1)
                {
                    if (set)
                    {
                        if (sidebar_.elementHelpers[i].activated)
                            sidebar_.elementHelpers[i].windowHandle.parentNode.className = 'elementHelper activated filtering';
                        else
                            sidebar_.elementHelpers[i].windowHandle.parentNode.className = 'elementHelper activated';
                    }
                    else
                        sidebar_.elementHelpers[i].windowHandle.parentNode.className = 'elementHelper activated filtering';
                        
                }
            }    
        }
        
        // helpers
        for (var i = 0; i < this.elementHelpers.length; i++)
        {
            var helper = this.elementHelpers[i];
            
            helper.groupAdd = groupAdd;
            helper.groupSub = groupSub;
            helper.groupSetHighlight = groupSetHighlight;
            
            if (helper.active)
            {
                if (helper.index == 10)
                    helper.handle.style.color = 'red';
                helper.handle.className = 'elementHelper';
                this.contentHandle.appendChild(helper.handle);
                //helper.handle.appendChild(document.createTextNode(helper.descr));
                var span = document.createElement('span');
                span.innerHTML = helper.descr;
                helper.handle.appendChild(span);
                
                helper.handle.appendChild(helper.windowHandle);
                helper.windowHandle.innerHTML = ' wszystkie';
                helper.windowHandle.href = "#";
                helper.windowHandle.helper = helper;
                
                // helper onClick
                helper.windowHandle.onclick = function() {
                    if (pageTracker)
                        pageTracker._trackPageview('/sidebar/filter/' + this.helper.index);
                    
                    var window = null;
                    var window_filters = null;
                    
                    if (!sidebar_.window)
                    {
                        window = sidebar_.windowCreateAndShow(this.helper);
                        
                        calendar_.filterWindow = helper.windowHandle;
                        
                        /*if (this.helper.index == 10)
                        {
                            calendar_.handle.className = 'ontop';
                            calendar_.filterWindow = helper.windowHandle;
                        }*/
                        
                        window_filters = document.createElement('div');
                        window.appendChild(window_filters);
                        window.column_container = window_filters;
                        window_filters.className = 'window_column_container';
                    } else
                    {
                        window = sidebar_.window;
                        window_filters = window.column_container;
                        //window_filters.innerHTML = '';
                    }
                    
                    sidebar_.drawSelectionWindowContainer(window_filters, this.helper);
                    //if (sidebar_.elementHelpers[i].group == this.group)
                    
                    return false;
                    
                } // helperonclick
            }
        }
        
        this.maximize();
        
        // events
        pointManager_.onActivate = function() {
            sidebar_.sprecyzujText.style.display = 'inline';
            sidebar_.show().maximize();
        }
        
        pointManager_.onElementActivate = function(itemIndex) {
            sidebar_.helperShow(itemIndex);
            // jesli ktos aktywuje kategorie to pokaz mu okno do niej
            sidebar_.elementHelpers[itemIndex].windowHandle.onclick();
        }
        
        pointManager_.onElementDeactivate = function(itemIndex) {
            sidebar_.helperHide(itemIndex);
        }
        
        pointManager_.onDeactivate = function() {
            sidebar_.sprecyzujText.style.display = 'none';
        }
        
    },
    
    helperShow: function(itemIndex)
    {
        var element = this.elementHelpers[itemIndex];
        if (element.active == 1)
        {
            element.handle.className = 'elementHelper activated filtering';
            var parent = element.handle.parentNode;
            parent.removeChild(element.handle);
            parent.appendChild(element.handle);
        }
            
        // ok - dla knajp zrobilismy 3 helpery.. zjebane ale to jest obejsci
        if (itemIndex == 1)
        {
            var element = this.elementHelpers[5];
            if (element.active == 1)
            {
                element.handle.className = 'elementHelper activated filtering';
                var parent = element.handle.parentNode;
                parent.removeChild(element.handle);
                parent.appendChild(element.handle);
            }
            var element = this.elementHelpers[7];
            if (element.active == 1)
            {
                element.handle.className = 'elementHelper activated filtering';
                var parent = element.handle.parentNode;
                parent.removeChild(element.handle);
                parent.appendChild(element.handle);
            }
        }
        
        if (itemIndex == 3)
        {
            /*var element = this.elementHelpers[6];
            if (element.active == 1)
            {
                element.handle.className = 'elementHelper activated filtering';
                var parent = element.handle.parentNode;
                parent.removeChild(element.handle);
                parent.appendChild(element.handle);
            }*/
            var element = this.elementHelpers[10];
            if (element.active == 1)
            {
                element.handle.className = 'elementHelper activated filtering';
                var parent = element.handle.parentNode;
                parent.removeChild(element.handle);
                parent.appendChild(element.handle);
            }
            
        }
        
        if (itemIndex == 0)
        {
            var element = this.elementHelpers[8];
            if (element.active == 1)
            {
                element.handle.className = 'elementHelper activated filtering';
                var parent = element.handle.parentNode;
                parent.removeChild(element.handle);
                parent.appendChild(element.handle);
            }
            var element = this.elementHelpers[9];
            if (element.active == 1)
            {
                element.handle.className = 'elementHelper activated filtering';
                var parent = element.handle.parentNode;
                parent.removeChild(element.handle);
                parent.appendChild(element.handle);
            }
        }
        element.groupSetHighlight();
    },
    
    helperHide: function(itemIndex)
    {
        var element = this.elementHelpers[itemIndex];
        if (element.active == 1)
            element.handle.className = 'elementHelper';
            
        // ok - dla knajp zrobilismy 2 helpery.. zjebane ale to jest obejsci
        if (itemIndex == 1)
        {
            var element = this.elementHelpers[5];
            if (element.active == 1)
                element.handle.className = 'elementHelper';
            var element = this.elementHelpers[7];
            if (element.active == 1)
                element.handle.className = 'elementHelper';
        }
        
        if (itemIndex == 3)
        {
            /*var element = this.elementHelpers[6];
            if (element.active == 1)
                element.handle.className = 'elementHelper';*/
            var element = this.elementHelpers[10];
            if (element.active == 1)
                element.handle.className = 'elementHelper';
        }
        
        if (itemIndex == 0)
        {
            var element = this.elementHelpers[8];
            if (element.active == 1)
                element.handle.className = 'elementHelper';
            var element = this.elementHelpers[9];
            if (element.active == 1)
                element.handle.className = 'elementHelper';
        }
    },
    
    drawSelectionWindowContainer: function(container, newHelper) 
    {
        //alert('trying to draw ' + newHelper.index + ' on ' + container);
        if (newHelper.index == 10)
            calendar_.handle.className = 'ontop';
            
        if (!container.loading)
        {
            container.loading = true;
            container.innerHTML = '';
            
            var content = new Object();
            content.index = newHelper.index; 
            var date = calendar_.getSelectedDate();
            content.date = date.getDate() + '-' + (date.getMonth() + 1) + '-' + date.getFullYear();
            content.bounds = dojo.toJson(map_.getMapBoundsArray()); 
            dojo.xhrPost({
                url: 'http://' + servername + '/application/filters.php',
                handleAs: "json",
                content: content,
                container: container,
                timeout: 100000, // 5 sec
                load: function(data, xhr)
                {
                    var container = xhr.args.container;
                    container.loading = false;
                    if (xhr.args.content.index == 10 && data.length == 0)
                    {
                        container.innerHTML = '<span class="sorry_text">Przykro nam :(<br>W Twojej okolicy chwilowo nie ma imprez, na które możesz kupić bilet.</span>';
                    } else
                    {
                        var cboxonclick = function()
                        {
                            if (this.checked)
                                this.parentNode.parentNode.parentNode.wszystkie.checked = false;
                        }
                        
                        var labelonclick = function()
                        {
                            this.parentNode.firstChild.checked = !this.parentNode.firstChild.checked;
                            this.parentNode.firstChild.onclick();
                        }
                        
                        
                        // wszystkie
                        var checkbox = document.createElement('input');
                        checkbox.type = 'checkbox';
                        checkbox.onclick = function() {
                            var checked = this.checked;
                            if (this.checked)
                            {
                                var cBoxList = dojo.query('div input', this.parentNode.parentNode.parentNode);
                                for (var i = 0; i < cBoxList.length; i++)
                                    cBoxList[i].checked = false;
                            }
                            this.checked = checked;
                        }
                        
                        var div = document.createElement('div');
                        div.className = 'window_element';
                            
                        div.appendChild(checkbox);
                        
                        var label = document.createElement('label');
                        label.onclick = labelonclick;
                        label.innerHTML = '<span class="wszystkie">wszystkie</span>';
                        div.appendChild(label);
                        
                        if (container.parentNode.helper.index == 1 || container.parentNode.helper.index == 5) 
                        {
                            // szukam polecanego i wkladam na poczatek listy
                            var przestawPolecanego = function(array)
                            {
                                for (var i = 0; i < array.length; i++)
                                {
                                    if (array[i].short_name == 'polecane')
                                    {
                                        return new Array().concat(array.slice(i, i + 1)).concat(array.slice(0, i).concat(array.slice(i + 1)));
                                    }
                                }
                                return array;
                            }
                            data = przestawPolecanego(data);
                        }
                        
                        
                        var column = document.createElement('div');
                        if (parseInt(content.index) == 10)
                            column.className = 'window_elements_column wide';
                        else
                            column.className = 'window_elements_column';
                        container.appendChild(column);
                        
                        column.appendChild(div);
                        container.wszystkie = checkbox;
                      
                        if (parseInt(content.index) == 10)
                            var columnSize = Math.ceil(data.length / 2) + 1;
                        else
                            var columnSize = Math.ceil(data.length / 4) + 1;
                            
                        var inne = null;
                        var polecane = null;
                        
                        for (var i = 0; i < data.length; i++)
                        {
                            if (((i + 1) % columnSize) == 0)
                            {
                                var column = document.createElement('div');
                                if (parseInt(content.index) == 10)
                                    column.className = 'window_elements_column wide';
                                else
                                    column.className = 'window_elements_column';
                                container.appendChild(column);
                            }
                            
                            var element = data[i];
                            
                            var div = document.createElement('div');
                            div.className = 'window_element';
                            
                            //miniaturka
                            if (container.parentNode.helper.index == 10)
                            {
                                //div.className += ' kupbilet';
                                var miniaturka = document.createElement('img');
                                miniaturka.src = '/application/vsmall_miniaturka.php?w=1&id=' + element.id;
                                div.appendChild(miniaturka);
                                //console.debug(container.parentNode.helper.index);
                            }
                            
                            var checkbox = document.createElement('input');
                            checkbox.type = 'checkbox';
                            
                            if (container.parentNode.helper.selected[element.id])
                                checkbox.checked = true;
                            checkbox.index = element.id;
                            checkbox.name = element.short_name;
                            checkbox.onclick = cboxonclick;
                            
                            div.appendChild(checkbox);
                            
                            var label = document.createElement('label');
                            label.onclick = labelonclick;
                            label.innerHTML = element.short_name;
                            
                            
                            // obejscia do inne i do klubow
                            if (element.short_name == 'klub')
                                label.className = 'kluby';
                            if (element.short_name == 'polecane')
                                label.className = 'polecane';
                                
                            div.appendChild(label);
                            
                            
                            if (element.short_name == 'inne')
                            {
                                label.className = 'inne';
                                inne = div;
                            }
                            else
                                column.appendChild(div);
                            
                        } // for
                        if (inne)
                            column.appendChild(inne);
                            
                        
                        
                    } // if pusto
                } // load
            }); // xhrPost
        } // container loading
    },
    
    saveWindowToHelper: function(container, helper) {
        var selected = [];
        var newName = new String();
        
        var cBoxList = dojo.query('div div div input', container);
        for (var i = 0; i < cBoxList.length; i++)
        {
            if (cBoxList[i].checked)
            {
                if (cBoxList[i].name.length != 0)
                {
                    selected[cBoxList[i].index] = cBoxList[i].name;
                    if (newName.length == 0)
                    {
                        newName += cBoxList[i].name;
                    }
                    else
                        newName += ', ' + cBoxList[i].name;
                }
            }
        }
        
        helper.selected = selected;
        if (newName.length == 0)
        {
            //helper.windowHandle.parentNode.className = 'elementHelper activated';
            if (helper.activated)
                helper.groupSub();
            helper.windowHandle.innerHTML = ' wszystkie';
        }
        else
        {
            //helper.windowHandle.parentNode.className = 'elementHelper activated filtering';
            helper.groupAdd();
            helper.windowHandle.innerHTML = newName;
        }
        
        helper.groupSetHighlight();
        
        calendar_.handle.className = '';
        calendar_.filterWindow = null;
        
        var trueIndex = helper.index;
        if ((trueIndex == 5) || (trueIndex == 7))
            trueIndex = 1;
        if (trueIndex == 6 || trueIndex == 10)
            trueIndex = 3;
        if ((trueIndex == 8) || (trueIndex == 9))
            trueIndex = 0;
        return trueIndex;
    },
    
    windowCreateAndShow: function(helper) {
        if (this.window)
            this.windowHideAndDestroy(window);
        
        this.window = map_.windowCreateAndShow();
        this.window.className += ' selection_window';

        /*var windowContainer = document.createElement('div');
        
        this.window = document.createElement('div');
        this.window.className = 'selection_window';
        this.handle.parentNode.appendChild(windowContainer);
        windowContainer.style.cssFloat = 'left';
        windowContainer.style.width = '1px'; 
        windowContainer.style.position = 'relative';
        windowContainer.appendChild(this.window);*/
        
        this.window.helper = helper;
        
        /*var header = document.createElement('div');
        this.window.appendChild(header);
        header.className = 'window_header';
        
        var zamknijRect = document.createElement('div');
        zamknijRect.className = 'window_close';
        zamknijRect.onclick = function() {
            sidebar_.windowHideAndDestroy();
        };
        header.appendChild(zamknijRect);*/
        
        var header = this.window.header;
        
        header.zamknijRect.onclick = function() 
        {
            var trueIndex = sidebar_.saveWindowToHelper(this.parentNode.parentNode, this.parentNode.parentNode.helper);
            sidebar_.windowHideAndDestroy();
            pointManager_.recreatePointsType(trueIndex);
            nd();
        }
        
        var inner = '';
        var counter = 0;
        var upperMenu = document.createElement('div');
        upperMenu.className = 'upperMenu';
        header.appendChild(upperMenu);
        for (var i = 0; i < this.elementHelpers.length; i++)
        {
            if (this.elementHelpers[i].group == helper.group && this.elementHelpers[i].active == 1)
            {
                var elementDiv = document.createElement('div');
                elementDiv.className = 'clickable ' + ((this.elementHelpers[i].index == 10)?'important': '');
                elementDiv.oldClassName = elementDiv.className;
                if (this.elementHelpers[i] == helper)
                    elementDiv.className += ' selected';
                elementDiv.innerHTML = this.elementHelpers[i].shortDescr;
                elementDiv.helper = this.elementHelpers[i];
                elementDiv.onclick = function() 
                {
                    if (!this.parentNode.parentNode.parentNode.column_container.loading)
                    {
                        for (var i = 0; i < this.parentNode.childNodes.length; i++)
                            this.parentNode.childNodes[i].className = this.parentNode.childNodes[i].oldClassName;
                        this.className += ' selected';
                        sidebar_.saveWindowToHelper(this.parentNode.parentNode.parentNode, this.parentNode.parentNode.parentNode.helper);
                        this.parentNode.parentNode.parentNode.helper = this.helper;
                        sidebar_.drawSelectionWindowContainer(this.parentNode.parentNode.parentNode.column_container, this.helper);
                        if (this.helper.index == 10)
                            calendar_.filterWindow = this.helper.windowHandle;
                    }
                }
                upperMenu.appendChild(elementDiv);
                counter++;
            }
        }
        if (counter == 1)
            upperMenu.style.visibility = 'hidden';
            
        //
        
        this.window.header.zamknij.parent = sidebar_;
        
        /*var img = document.createElement('img');
        img.src = 'img/sidebar/window_potwierdz.png';
        img.className = 'clickable';
        header.appendChild(img);
        img.onclick = function() {
            var trueIndex = sidebar_.saveWindowToHelper(this.parentNode.parentNode, this.parentNode.parentNode.helper);
            sidebar_.windowHideAndDestroy();
            pointManager_.recreatePointsType(trueIndex);
            //pointManager_.disablePointsType(trueIndex);
            //pointManager_.enablePointsType(trueIndex);
            
            reloadBanners();
        };*/
        
        
        return this.window;
    },
    
    windowHideAndDestroy: function() {
        map_.windowHideAndDestroy();
        this.window = null;
        //this.window.parentNode.parentNode.removeChild(this.window.parentNode);
        
        //document.body.style.backgroundColor = '';
    },

    
    hide: function() {
        this.visible = false;
        this.handle.style.display = 'none';
        return this;
    },
    
    show: function() {
        this.visible = true;
        this.handle.style.display = 'block';
        return this;
    },
    
    minimize: function() {
        if (!this.minimized)
        {
            var anim1 = dojo.animateProperty({
                node: this.handle,
                properties: {
                    left: 846
                }
            }).play();
            
            this.triangle.src = 'http://' + servername + '/img/sidebar/triangle2.png';
            
            this.minimized = true;
        }
        return this;
    },
    
    minimizeHide: function() {
        if (!this.minimized)
        {
            var anim1 = dojo.animateProperty({
                node: this.handle,
                properties: {
                }
            });
            
            dojo.connect(anim1, 'onEnd', function() {
                sidebar_.hide();
            });

            anim1.play();
            
            this.minimized = true;
        } else
            this.hide();
            
        return this;
    },
    
    maximize: function() {
        if (this.minimized)
        {
            var anim1 = dojo.animateProperty({
                node: this.handle,
                properties: {
                    left: 672
                }
            }).play();            
            this.triangle.src = 'http://' + servername + '/img/sidebar/triangle.png';
            this.minimized = false;
        }
        return this;
   
     }
     
}

function initializeSidebar(handleId)
{
    return new sidebarClass(document.getElementById(handleId));
}


/*************************************************************************



                                INVITER
                                
                                
                                
                                
*************************************************************************/

/*function inviterClass(handle)
{
    this.init(handle);
}


inviterClass.prototype = {
    handle: null,
    contentHandle: null,
    minimized: true,
    pages: [],
    pageIndex: 0,
    
    init: function(handle, myself)
    {
        this.handle = handle;
        
        var header_img = document.createElement('div');
        header_img.className = 'invite_headerimg';
        this.handle.appendChild(header_img);
        
        this.contentHandle = document.createElement('div');
        this.contentHandle.className = 'invite_content';
        this.handle.appendChild(this.contentHandle);
        
        
        var header = document.createElement('h1');
        this.contentHandle.appendChild(header);
        
        var left = document.createElement('img');
        left.className = 'clickable';
        left.src = 'http://imiejsca.pl/img/invite/arrow_left.png';
        header.appendChild(left);
        
        var nazwa = document.createTextNode('Instrukcje');
//        nazwa.innerHTML = '';
        header.appendChild(nazwa);
        
        var right = document.createElement('img');
        right.src = 'http://imiejsca.pl/img/invite/arrow_right.png';
        right.className = 'clickable';
        header.appendChild(right);
        
        this.pages = [
             '<img style="position: absolute; left: 5px; top: 50px" src="http://imiejsca.pl/img/invite/1.png"><img style="position: absolute; left: 5px; top: 123px" src="http://imiejsca.pl/img/invite/2.png">w kalendarzu<br /><b>zaznacz</b><br />interesujący Cię<br /><b>dzień</b><br /><br /><b>wybierz</b> ikonę<br />na górze strony<br />i <b>dostosuj</b><br />dodatkowe<br /><b>preferencje</b>',
             '<img style="position: absolute; left: 5px; top: 90px" src="http://imiejsca.pl/img/invite/3.png">dodaj miejsce do<br /><b>iNotesu,</b> dzięki<br /> czemu znaleziona<br /><b>informacja</b><br /> zostanie <b>zapamiętana</b><br />i umożliwi Ci<br />ponowne<br /><b>zlokalizowanie</b><br /> miejsca na mapie',
             '<img style="position: absolute; left: 5px; top: 46px" src="http://imiejsca.pl/img/invite/4.png"><img style="position: absolute; left: 5px; top: 98px" src="http://imiejsca.pl/img/invite/5.png"><b>podziel się</b><br /> swoimi iNotkami <br /><b>ze znajomymi</b><br /><br />razem<br /><b>zaplanujcie</b><br />Wasz <b>wolny czas!</b>'];
        
        var p = document.createElement('p');
        p.innerHTML = this.pages[this.pageIndex];
        
        this.contentHandle.appendChild(p);
        
        right.p = p;
        right.inviter = this;
        right.onclick = function() {
            with (this.inviter)
            {
                pageIndex++;
                if (pageIndex == pages.length)
                    pageIndex = 0;
                this.p.innerHTML = pages[pageIndex]; 
            }
        }
        
        left.p = p;
        left.inviter = this;
        left.onclick = function() {
            with (this.inviter)
            {
                pageIndex--;
                if (pageIndex < 0)
                    pageIndex = pages.length - 1;
                this.p.innerHTML = pages[pageIndex]; 
            }
        }
        
        
        /*var headname = document.createElement('img');
        headname.src = 'http://imiejsca.pl/img/invite/invite.png';
        this.contentHandle.appendChild(headname);
        headname.parent = this;
        
        var headname = document.createElement('br');
        this.contentHandle.appendChild(headname);
        
        var headname = document.createElement('img');
        headname.src = 'http://imiejsca.pl/img/invite/gg.png';
        this.contentHandle.appendChild(headname);
        headname.parent = this;
        
        var headname = document.createElement('img');
        headname.src = 'http://imiejsca.pl/img/invite/naszaklasa.png';
        this.contentHandle.appendChild(headname);
        headname.parent = this;
        
        var headname = document.createElement('img');
        headname.src = 'http://imiejsca.pl/img/invite/facebook.png';
        this.contentHandle.appendChild(headname);
        headname.parent = this;*/
        
        
        /*var world = document.createElement('img');
        world.src = 'http://imiejsca.pl/img/inotes/showplaces.png';
        this.header.appendChild(world);
        world.parent = this;
       
        // init listeners
        headname.onclick = function(e) {
            if (this.parent.minimized)
                this.parent.maximize();
            else
                this.parent.minimize();
        }
        
        mail.onclick = function() {
            this.parent.sendNotes();
        }
        
        world.onclick = function() {
            this.parent.showGlobal();
        }*/ /*
        this.maximize();
        
    },
    
    maximize: function()
    {
        if (this.minimized)
        {
            anim = dojo.animateProperty({
                node: this.handle,
                properties: {
                    height: 200                }
            }).play();
            
            var p = dojo.query('div.invite_content p');
            dojo.animateProperty({
                node: p[0],
                properties: {
                    opacity: 100
                }
            }).play();
            
            this.minimized = false;
        }
    },
    
    minimize: function()
    {
        if (!this.minimized)
        {
            anim = dojo.animateProperty({
                node: this.handle,
                properties: {
                    height: 54
                }
            }).play();
            
            var p = dojo.query('div.invite_content p');
            dojo.animateProperty({
                node: p[0],
                properties: {
                    opacity: 0
                }
            }).play();
            
            this.minimized = true;
        }
    }
}



function initializeInviter(handleId)
{
    return new inviterClass(document.getElementById(handleId));
}*/


function iNotesClass(handle)
{
    this.init(handle, {name: 'anonymous', lat: 0, lon: 0});
}


iNotesClass.prototype = {
    handle: null,
    header: null,
    sidebar: null,
    
    minimized: true,
    elements: [],
    tab: null,
    date: null,
    showingGlobal: false,
    skip: 0, 
    
    setNewDate: function(date, force)
    {
        if (!sameDates(date, this.date) || force)
        {
            this.date = date;
            this.setTabWithDate(date);
            this.redrawTabList();
        }
    },
    
    createTab: function(date, elements)
    {
        var tab = { 
            'date': date, 
            'inotes': this,
            'skip': 0,
            'handle': document.getElementById('iNotes_content'),
            'elements': [] };
        
        tab.handle.innerHTML = '';
        
        tab.elementBelong = function(element)
        {
            return (sameDates(element.date, this.date));
        }
        
        tab.getElementById = function(id, typ)
        {
            for(var i = 0; i < this.elements.length; i++)
                if (this.elements[i].id == id && this.elements[i].typ == typ)
                    return i;
        }
        
        tab.removeElement = function(id, typ, notFullRemove)
        {
            var index = this.inotes.getElementById(id, typ, this.date);
            var element = this.inotes.elements[index];
            
            if (this.inotes.showingGlobal && !notFullRemove)
                this.inotes.hideElementFromMap(element);
            
            if (element.div)
            {
                element.div.parentNode.removeChild(element.div);
                element.div = null;
            }
                
            if (!notFullRemove)
                this.inotes.elements = removeFromArray(this.inotes.elements, index);
            this.elements = removeFromArray(this.elements, this.getElementById(id, typ));
            
            if (this.elements.length == 0)
            {
                this.inotes.removeActiveTab();
                this.inotes.redrawTabList();
            }
            
            this.refreshLocalUpDown();
            
            this.inotes.saveToCookie();
        }
        
        tab.refreshLocalUpDown = function()
        {
            if (this.elements.length - this.skip > 4)
                document.getElementById('iNotes_arrow_down').style.display = 'block';
            else
                document.getElementById('iNotes_arrow_down').style.display = 'none';
            
            if (this.skip > 0)
                document.getElementById('iNotes_arrow_up').style.display = 'block';
            else
                document.getElementById('iNotes_arrow_up').style.display = 'none';
        }
        
        tab.scrollDown = function()
        {
            if (this.elements.length - this.skip > 4)
            {
                this.skip++;
                
                var elements = dojo.query('div#iNotes_content div.element');
                for (var i = 0; i < this.elements.length; i++)
                {
                    var s = this.skip;
                    var element = this.elements[i];
                    element.div.style.position = 'relative';
                    
                    dojo.animateProperty({
                        node: element.div,
                        properties: {
                            top: (- s * 40)
                        }
                    }).play();
                }
            }
            this.refreshLocalUpDown();
        }
        
        tab.scrollUp = function()
        {
            if (this.skip > 0)
            {
                this.skip--;
                var elements = dojo.query('div#iNotes_content div.element');
                for (var i = 0; i < this.elements.length; i++)
                {
                    var s = this.skip;
                    var element = this.elements[i];
                    element.div.style.position = 'relative';
                    
                    dojo.animateProperty({
                        node: element.div,
                        properties: {
                            top: (- s * 40)
                        }
                    }).play();
                }
            }
            this.refreshLocalUpDown();
        }
        
        tab.addElement = function(element)
        {
            this.elements.push(element);
            this.handle.appendChild(this.inotes.drawElement(element));
            
            var subdeleteOnClick = function()
            {
                this.tab.removeElement(this.parentNode.element.id, this.parentNode.element.typ);
                nd();
            }
            
            var subdeleteList = dojo.query('img.delete', this.handle);
            for (var i = 0; i < subdeleteList.length; i++)
            {
                subdeleteList[i].tab = this;
                subdeleteList[i].onclick = subdeleteOnClick;
            }
            
            this.refreshLocalUpDown();
        }
        
        if (elements)
        {
            for (var i = 0; i < elements.length; i++)
                tab.addElement(elements[i]);
        }
        
        return tab;
    },
    
    createElement: function(id, typ, innerdata, date, marker)
    {
        var inner = new Object();
        if (innerdata.nazwa)
            inner.nazwa = innerdata.nazwa;
        else
            inner.nazwa = innerdata.tytul;
        inner.ulica = innerdata.ulica;
        inner.nr_bloku = innerdata.nr_bloku;
        inner.miasto = innerdata.miasto;
        inner.geo_szer = innerdata.geo_szer;
        inner.geo_dlug = innerdata.geo_dlug;
        
        
        return { 'id': id, 'typ': typ, 'innerdata': inner, 'date': new Date(date) };
    },
    
    
    showElementOnMap: function(element)
    {
        if (element.marker)
            this.hideElementFromMap(element);
            
		  var found = null;        
        for (var i = 0; i < this.elements.length; i++)
        {
        		if (element !== this.elements[i] && this.elements[i].marker && !found)
        		{
        			if ((this.elements[i].innerdata.geo_szer == element.innerdata.geo_szer) && (this.elements[i].innerdata.geo_wys == element.innerdata.geo_wys))
        			{
        				element.marker = this.elements[i].marker;
        				
        				found = element.marker;
        			} 
        		}
        }
        
        if (!found)
        {    
	        var icon = map_.createIcon(10, null, element.date);
	        element.marker = map_.createMarker(element.innerdata, icon);
	        found = element.marker;
	        element.marker.list = [];
	        
	        var marker = element.marker;
	        marker.dataObject = element.innerdata;
	        GEvent.addListener(marker, 'mouseover', function() {
	                map_.markerShowSmallWindow(this, true);
	                /*var nazwy = '';
						 for (var i = 0; i < this.list.length; i++)
						 {
							 nazwy += this.list[i].innerdata.nazwa + ' ';
						 }
	                 
	                alert(nazwy);*/
	            }
	        );
	        
	        GEvent.addListener(marker, 'mouseout', function() {
	                if (map_.windowSmall)
	                    map_.windowSmall.gtfo();
	            }
	        );
	        
        } /*else
	        alert('found place for: ' + element.innerdata.nazwa);*/
	     
	     found.list.push(element);

    },
    
    hideElementFromMap: function(element)
    {
        if (element.marker)
        {
				var foundIndex = null;            
            for (var i = 0; i < element.marker.list.length; i++)
            {
	            if (element.marker.list[i] === element)
		            foundIndex = i;
            }
				if (element.marker.list.length <= 1)
					map_.gMap.removeOverlay(element.marker);
				else	            
	            element.marker.list = removeFromArray(element.marker.list, foundIndex);
					
            element.marker = null;
        }
    },
    
    drawElement: function(element)
    {
        if (!element.div)
        {
            element.div = document.createElement('div');
            element.div.className = 'element';
            element.div.element = element;
        }
            
        var inner = '';
        if (element.typ != 1 && (element.date.getHours() != 0 || element.date.getMinutes() != 0))
            inner = '<span class="godzina">' + element.date.getHours() + ':' + ((element.date.getMinutes() < 10)? '0' + element.date.getMinutes(): element.date.getMinutes()) + '</span>';
        /*else
            inner = '<span class="godzina"></span>';*/
           
        inner += '<span class="nazwa">' + element.innerdata.nazwa + '</span>';
        
        inner += '<span class="miasto">' + element.innerdata.miasto + '</span>';
        inner += '<span class="adres">' + element.innerdata.ulica + ' ' + element.innerdata.nr_bloku + '</span>';
        /*if (element.innerdata.telefon)
            inner += '<span class="telefon">' + element.innerdata.telefon + '</span>';*/
        inner += '<img onmouseover="overlib(\'skasuj iNotkę\', BGCOLOR, \'#1CA8D5\', FGCOLOR, \'white\')" onmouseout="nd();" class="delete clickable" src="/img/inotes/notes_placedelete.png" />';
        
        element.div.innerHTML = inner;
        return element.div;
    },
    
    getDistinctDateList: function()
    {
        var daty = [];
        
        
        for(var i = 0; i < this.elements.length; i++)
        {
            var byla = false;
            for (var j = 0; j < daty.length; j++)
            {
                if (sameDates(daty[j], this.elements[i].date))
                    byla = true;
            }
            if (!byla)
                daty.push(this.elements[i].date);
        }
        return daty.sort(function(a, b) {
            return (a.getTime() - b.getTime());
        });
    },
    
    redrawTabList: function()
    {
        var tabOnClick = function()
        {
            this.notes.setNewDate(this.date);
            return false;
        }
        
        this.sidebar.innerHTML = '';
        var dates = this.getDistinctDateList();
        
        if (dates.length - this.skip > 4)
	        document.getElementById('iNotes_sidebar_arrow_down').style.visibility = 'visible';
        else
		document.getElementById('iNotes_sidebar_arrow_down').style.visibility = 'hidden';
	if (this.skip > 0)
		document.getElementById('iNotes_sidebar_arrow_up').style.visibility = 'visible';
	else
		document.getElementById('iNotes_sidebar_arrow_up').style.visibility = 'hidden';
        
        for (var i = this.skip; i < Math.min(this.skip + 4, dates.length); i++)
        {
            var div = document.createElement('div');
            div.notes = this;
            div.date = dates[i];
            if (sameDates(dates[i], this.date))
                div.className = 'tabListElement clickable selected';
            else
                div.className = 'tabListElement clickable';
            this.sidebar.appendChild(div);
            div.innerHTML = dates[i].getDate() + '<br>' + this.monthToRoman(dates[i].getMonth() + 1);
            
            div.onclick = tabOnClick;
        }
    },
    
    getElementsByDate: function(date)
    {
        var elements = [];
        for (var i = 0; i < this.elements.length; i++)
            if (sameDates(date, this.elements[i].date))
                elements.push(this.elements[i]);
        return elements;
    },
    
    removeActiveTab: function()
    {
        while (this.tab && this.tab.elements.length > 0)
            this.tab.removeElement(this.tab.elements[0].id, this.tab.elements[0].typ, true);
        this.tab = null;
    },
    
    setTabWithDate: function(date)
    {
        this.removeActiveTab();
        this.tab = this.createTab(date, this.getElementsByDate(date));
    },
    
    addElement: function(id, typ, innerdata, date, marker)
    {
        if (this.minimized)
            this.maximize();
            
        if (this.getElementById(id, typ, date) === false)
        {
            if (!this.tab)
            {
                this.tab = this.createTab(this.date, this.getElementsByDate(this.date));
                this.redrawTabList();
            }
            
            var newElement = this.createElement(id, typ, innerdata, date, marker);
            
            var daty = this.getDistinctDateList();
            var bylo = false;
            for (var i = 0; i < daty.length; i++)
            {
                if (sameDates(daty[i], newElement.date))
                    bylo = true;
            }
                
            this.elements.push(newElement);    
            
            if (this.tab.elementBelong(newElement))
                this.tab.addElement(newElement);
                
            if (!sameDates(this.date, newElement.date))
                this.setNewDate(newElement.date, false);
            else
                if (!bylo)
                    this.redrawTabList();            
            
                
            if (this.showingGlobal)
                this.showElementOnMap(newElement);
            
            this.saveToCookie();
            return true;
        } else
            return false;
    },
    
    getElementById: function(id, typ, date)
    {
        for(var i = 0; i < this.elements.length; i++)
            if (this.elements[i].id == id && this.elements[i].typ == typ)
            {
                if (date)
                {
                    if (sameDates(date, this.elements[i].date))
                        return i;
                } else
                    return i;
            }
                
        return false;
    },
    
    sendNotes: function()
    {
        //alert('sending');
    },
    
    showGlobal: function()
    {
        if (this.showingGlobal)
            this.hideGlobal();
            
        this.showingGlobal = true;
        for (var i = 0; i < this.elements.length; i++)
        {
            this.showElementOnMap(this.elements[i]);
        }
            
    },
    
    hideGlobal: function()
    {
        if (this.showingGlobal)
        {
            for (var i = 0; i < this.elements.length; i++)
            {
                this.hideElementFromMap(this.elements[i]);
            }
            this.showingGlobal = false;
        }
    },
    
    saveToCookie: function()
    {
        dojo.cookie('imiejsca.pl.notes', this.saveToJson());
    },
    
    saveToJson: function() 
    {
        var tempArray = [];
        
        for (var i = 0; i < this.elements.length; i++)
        {
            tempArray[i] = { 'div': this.elements[i].div, 'marker': this.elements[i].marker };
            this.elements[i].div = null;
            this.elements[i].marker = null;
            
            this.elements[i].dateString = '';
            if (this.elements[i].typ != 1 && (this.elements[i].date.getHours() != 0 || this.elements[i].date.getMinutes() != 0))
                this.elements[i].dateString += this.elements[i].date.getHours() + ':' + ((this.elements[i].date.getMinutes() < 10)? '0' + this.elements[i].date.getMinutes(): this.elements[i].date.getMinutes());
            this.elements[i].dateString += ' ' + this.elements[i].date.getDate() + ' ' + this.elements[i].date.getMonth() + ' ' + this.elements[i].date.getFullYear();
            
            this.elements[i].date = this.elements[i].date.getTime();
        }
        var json = dojo.toJson(this.elements);
        for (var i = 0; i < this.elements.length; i++)
        {
            this.elements[i].div = tempArray[i].div;
            this.elements[i].marker = tempArray[i].marker;
            var date = new Date();
            date.setTime(this.elements[i].date);
            this.elements[i].date = date;
            this.elements[i].dateString = null;
        }
        return json;
    },
    
    loadFromCookie: function()
    {
        if (dojo.cookie('imiejsca.pl.notes'))
        {
            this.elements = dojo.fromJson(dojo.cookie('imiejsca.pl.notes'));
            for (var i = 0; i < this.elements.length; i++)
            {
                var date = new Date();
                date.setTime(this.elements[i].date);
                this.elements[i].date = date;
            }
        }
    },
    
    monthToRoman: function(month)
    {
        switch (month)
        {
            case 1: return 'I'; break;
            case 2: return 'II'; break;
            case 3: return 'III'; break;
            case 4: return 'IV'; break;
            case 5: return 'V'; break;
            case 6: return 'VI'; break;
            case 7: return 'VII'; break;
            case 8: return 'VIII'; break;
            case 9: return 'IX'; break;
            case 10: return 'X'; break;
            case 11: return 'XI'; break;
            case 12: return 'XII'; break;
        }
    },
    
    init: function(handle, myself)
    {
        this.handle = handle;
        this.myself = myself;

        var header_img = document.createElement('div');
        header_img.className = 'iNotes_headerimg';
        this.handle.appendChild(header_img);

        this.contentColumn = document.createElement('div');
        this.contentColumn.className = 'iNotes_column';
        this.handle.appendChild(this.contentColumn);
        
        this.header = document.createElement('div');
        this.header.className = 'iNotes_header';
        this.contentColumn.appendChild(this.header);
        
        this.sidebarContainer = document.createElement('div');
        this.sidebarContainer.className = 'iNotes_sidebar_container';
        this.handle.appendChild(this.sidebarContainer);
        
        var arrow = document.createElement('img');
        arrow.src = 'http://imiejsca.pl/img/inotes/notes_sidebar_up.png';
        arrow.id = 'iNotes_sidebar_arrow_up';
        arrow.className = 'notesarrowsidebar clickable';
        arrow.onmouseover = function() { return overlib('przesuń w górę', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        arrow.onmouseout = function() { nd(); }
        arrow.style.visibility = 'hidden';
        arrow.parent = this;
        arrow.onclick = function() {
            this.parent.skip--;
            this.parent.redrawTabList();
        }
        this.sidebarContainer.appendChild(arrow);
        
        this.sidebar = document.createElement('div');
        this.sidebar.className = 'iNotes_sidebar';
        this.sidebarContainer.appendChild(this.sidebar);
        
        var arrow = document.createElement('img');
        arrow.src = 'http://imiejsca.pl/img/inotes/notes_sidebar_down.png';
        arrow.id = 'iNotes_sidebar_arrow_down';
        arrow.className = 'notesarrowsidebar clickable';
        arrow.onmouseover = function() { return overlib('przesuń w dół', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        arrow.onmouseout = function() { nd(); }
        arrow.parent = this;
        arrow.style.visibility = 'hidden';
        arrow.onclick = function() {
            this.parent.skip++;
            this.parent.redrawTabList();
        }
        this.sidebarContainer.appendChild(arrow);
        
        
        /*var headname = document.createElement('img');
        headname.src = 'http://imiejsca.pl/img/inotes/inotes.png';
        this.header.appendChild(headname);
        headname.parent = this;*/
        
        var headname = document.createElement('span');
        headname.innerHTML = 'iNotes';
        headname.className = 'clickable';
        headname.parent = this;
        headname.onmouseover = function() { return overlib('zwiń/rozwiń iNotes', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        headname.onmouseout = function() { nd(); }
        this.header.appendChild(headname);
        
        var mail = document.createElement('img');
        mail.src = 'http://imiejsca.pl/img/inotes/mail.png';
		mail.onmouseover = function() { return overlib('wyślij iNotes', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        mail.onmouseout = function() { nd(); }
        mail.className = 'clickable';
        this.header.appendChild(mail);
        mail.parent = this;
        
        var print = document.createElement('img');
        print.src = 'http://imiejsca.pl/img/inotes/mail.png';
		print.onmouseover = function() { return overlib('wydrukuj iNotes', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        print.onmouseout = function() { nd(); }
        print.className = 'clickable';
        this.header.appendChild(print);
        print.parent = this;
        print.style.display = 'none';
        
        var world = document.createElement('img');
        world.src = 'http://imiejsca.pl/img/inotes/showplaces.png';
		world.onmouseover = function() { return overlib('pokaż iNotki na mapie', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        world.onmouseout = function() { nd(); }
        world.className = 'clickable';
        world.style.marginTop = '-1px';
        world.parent = this;
        this.header.appendChild(world);
        
        var arrow = document.createElement('img');
        arrow.src = 'http://imiejsca.pl/img/inotes/notes_sidebar_down.png';
        arrow.id = 'iNotes_arrow_down';
        arrow.onmouseover = function() { return overlib('przesuń w dół', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        arrow.onmouseout = function() { nd(); }
        arrow.className = 'notesarrow clickable';
        arrow.style.left = '92px';
        arrow.style.top = '186px';
        arrow.parent = this;
        arrow.onclick = function() {
            this.parent.tab.scrollDown();
        }
        this.handle.appendChild(arrow);
        
        var arrow = document.createElement('img');
        arrow.src = 'http://imiejsca.pl/img/inotes/notes_sidebar_up.png';
        arrow.id = 'iNotes_arrow_up';
        arrow.onmouseover = function() { return overlib('przesuń w górę', BGCOLOR, '#1CA8D5', FGCOLOR, 'white'); }
        arrow.onmouseout = function() { nd(); }
        arrow.className = 'notesarrow clickable';
        arrow.style.left = '92px';
        arrow.style.top = '172px';
        arrow.parent = this;
        arrow.onclick = function() {
            this.parent.tab.scrollUp();
        }
        this.handle.appendChild(arrow);
        
        
        var content = document.createElement('div');
        content.id = 'iNotes_content';
        this.contentColumn.appendChild(content);
        
        this.date = calendar_.getSelectedDate();
        this.loadFromCookie();
        this.setNewDate(calendar_.getSelectedDate(), true);
       
        // init listeners
        headname.onclick = function(e) {
            if (this.parent.minimized)
            {
                this.parent.maximize();
                if (invite_)
                    invite_.minimize();
            }
            else
            {
                this.parent.minimize();
                if (invite_)
                    invite_.maximize();
            }
        }
        
        print.onclick = function() {
            console.dir(this.elements);
            //dojo.toJson();
            //dojo.cookie('imiejsca.pl.notesprint')
            //window.open('http://' + servername + '/application/inotes_pdf.php');
        }
        
        mail.onclick = function() {
            //this.parent.sendNotes();
            
            
            var email = prompt('Podaj adres e-mail na który chcesz wysłać iNotki');
            if (email)
            {
                var content = new Object();
                content.notes = this.parent.saveToJson();
                content.to = email;
                dojo.xhrPost({
                    url: 'http://' + servername+'/application/mail.php',
                    handleAs: "text",
                    content: content,
                    timeout: 5000, // 5 sec
                    load: function(data, args)
                    {
                        alert(data);
                    }
                });
            }
        }
        
        world.onclick = function() {
            if (this.parent.showingGlobal)
                this.parent.hideGlobal();
            else
                this.parent.showGlobal();
        }
        
        this.maximize();
        
        if (this.elements.length > 0)
            this.maximize();
            

    },
    
    minimize: function(inviterHandle)
    {
        if (!this.minmized)
        {
            dojo.animateProperty({
                node: this.handle,
                properties: {
                    height: 49
                }
            }).play();
            var imgs = dojo.query('div.iNotes_header img');
            for (var i = 0; i < imgs.length; i++)
                dojo.animateProperty({
                    node: imgs[i],
                    properties: {
                        opacity: 0
                    }
                }).play();
                
            dojo.animateProperty({
                node: 'iNotes_content',
                properties: {
                    opacity: 0
                }
            }).play();
            
            var div = dojo.query('div.iNotes_sidebar_container');
            dojo.animateProperty({
                node: div[0],
                properties: {
                    opacity: {start: 100, end: 0}
                }
            }).play();
            
            this.minimized = true;
        }
    },
    
    maximize: function()
    {
        if (this.minimized)
        {
            var a0 = dojo.animateProperty({
                node: this.handle,
                properties: {
                    height: 208
                }
            }).play();
            
            var imgs = dojo.query('div.iNotes_header img');
            for (var i = 0; i < imgs.length; i++)
                dojo.animateProperty({
                    node: imgs[i],
                    properties: {
                        opacity: {start: 0, end: 100}
                }
            }).play();
            
            dojo.animateProperty({
                node: imgs[1],
                properties: {
                    opacity: 100
                }
            }).play();
            
            dojo.animateProperty({
                node: 'iNotes_content',
                properties: {
                    opacity: 100
                }
            }).play();
            
            var div = dojo.query('div.iNotes_sidebar_container');
            dojo.animateProperty({
                node: div[0],
                properties: {
                    opacity: {start: 0, end: 100}
                }
            }).play();
            
            //dojo.fx.chain([a0, dojo.fx.combine([a1, a2])]).play();
            
            this.minimized = false;
        }
   }
}

function initializeNotes(handleId)
{
    return new iNotesClass(document.getElementById(handleId)); 
}


var olLoaded=0,pmStart=10000000,pmUpper=10001000,pmCount=pmStart+1,pmt='',pms=new Array(),olInfo=new Info('4.21',1),FREPLACE=0,FBEFORE=1,FAFTER=2,FALTERNATE=3,FCHAIN=4,olHideForm=0,olHautoFlag=0,olVautoFlag=0,hookPts=new Array(),postParse=new Array(),cmdLine=new Array(),runTime=new Array();
registerCommands('donothing,inarray,caparray,sticky,background,noclose,caption,left,right,center,offsetx,offsety,fgcolor,bgcolor,textcolor,capcolor,closecolor,width,border,cellpad,status,autostatus,autostatuscap,height,closetext,snapx,snapy,fixx,fixy,relx,rely,fgbackground,bgbackground,padx,pady,fullhtml,above,below,capicon,textfont,captionfont,closefont,textsize,captionsize,closesize,timeout,function,delay,hauto,vauto,closeclick,wrap,followmouse,mouseoff,closetitle,cssoff,compatmode,cssclass,fgclass,bgclass,textfontclass,captionfontclass,closefontclass');
if(typeof ol_fgcolor=='undefined')var ol_fgcolor="#CCCCFF";if(typeof ol_bgcolor=='undefined')var ol_bgcolor="#333399";if(typeof ol_textcolor=='undefined')var ol_textcolor="#000000";if(typeof ol_capcolor=='undefined')var ol_capcolor="#FFFFFF";if(typeof ol_closecolor=='undefined')var ol_closecolor="#9999FF";if(typeof ol_textfont=='undefined')var ol_textfont="Verdana,Arial,Helvetica";if(typeof ol_captionfont=='undefined')var ol_captionfont="Verdana,Arial,Helvetica";if(typeof ol_closefont=='undefined')var ol_closefont="Verdana,Arial,Helvetica";if(typeof ol_textsize=='undefined')var ol_textsize="1";if(typeof ol_captionsize=='undefined')var ol_captionsize="1";if(typeof ol_closesize=='undefined')var ol_closesize="1";if(typeof ol_width=='undefined')var ol_width="200";if(typeof ol_border=='undefined')var ol_border="1";if(typeof ol_cellpad=='undefined')var ol_cellpad=2;if(typeof ol_offsetx=='undefined')var ol_offsetx=10;if(typeof ol_offsety=='undefined')var ol_offsety=10;if(typeof ol_text=='undefined')var ol_text="Default Text";if(typeof ol_cap=='undefined')var ol_cap="";if(typeof ol_sticky=='undefined')var ol_sticky=0;if(typeof ol_background=='undefined')var ol_background="";if(typeof ol_close=='undefined')var ol_close="Close";if(typeof ol_hpos=='undefined')var ol_hpos=RIGHT;if(typeof ol_status=='undefined')var ol_status="";if(typeof ol_autostatus=='undefined')var ol_autostatus=0;if(typeof ol_height=='undefined')var ol_height=-1;if(typeof ol_snapx=='undefined')var ol_snapx=0;if(typeof ol_snapy=='undefined')var ol_snapy=0;if(typeof ol_fixx=='undefined')var ol_fixx=-1;if(typeof ol_fixy=='undefined')var ol_fixy=-1;if(typeof ol_relx=='undefined')var ol_relx=null;if(typeof ol_rely=='undefined')var ol_rely=null;if(typeof ol_fgbackground=='undefined')var ol_fgbackground="";if(typeof ol_bgbackground=='undefined')var ol_bgbackground="";if(typeof ol_padxl=='undefined')var ol_padxl=1;if(typeof ol_padxr=='undefined')var ol_padxr=1;if(typeof ol_padyt=='undefined')var ol_padyt=1;if(typeof ol_padyb=='undefined')var ol_padyb=1;if(typeof ol_fullhtml=='undefined')var ol_fullhtml=0;if(typeof ol_vpos=='undefined')var ol_vpos=BELOW;if(typeof ol_aboveheight=='undefined')var ol_aboveheight=0;if(typeof ol_capicon=='undefined')var ol_capicon="";if(typeof ol_frame=='undefined')var ol_frame=self;if(typeof ol_timeout=='undefined')var ol_timeout=0;if(typeof ol_function=='undefined')var ol_function=null;if(typeof ol_delay=='undefined')var ol_delay=0;if(typeof ol_hauto=='undefined')var ol_hauto=0;if(typeof ol_vauto=='undefined')var ol_vauto=0;if(typeof ol_closeclick=='undefined')var ol_closeclick=0;if(typeof ol_wrap=='undefined')var ol_wrap=0;if(typeof ol_followmouse=='undefined')var ol_followmouse=1;if(typeof ol_mouseoff=='undefined')var ol_mouseoff=0;if(typeof ol_closetitle=='undefined')var ol_closetitle='Close';if(typeof ol_compatmode=='undefined')var ol_compatmode=0;if(typeof ol_css=='undefined')var ol_css=CSSOFF;if(typeof ol_fgclass=='undefined')var ol_fgclass="";if(typeof ol_bgclass=='undefined')var ol_bgclass="";if(typeof ol_textfontclass=='undefined')var ol_textfontclass="";if(typeof ol_captionfontclass=='undefined')var ol_captionfontclass="";if(typeof ol_closefontclass=='undefined')var ol_closefontclass="";
if(typeof ol_texts=='undefined')var ol_texts=new Array("Text 0","Text 1");if(typeof ol_caps=='undefined')var ol_caps=new Array("Caption 0","Caption 1");
var o3_text="",o3_cap="",o3_sticky=0,o3_background="",o3_close="Close",o3_hpos=RIGHT,o3_offsetx=2,o3_offsety=2,o3_fgcolor="",o3_bgcolor="",o3_textcolor="",o3_capcolor="",o3_closecolor="",o3_width=100,o3_border=1,o3_cellpad=2,o3_status="",o3_autostatus=0,o3_height=-1,o3_snapx=0,o3_snapy=0,o3_fixx=-1,o3_fixy=-1,o3_relx=null,o3_rely=null,o3_fgbackground="",o3_bgbackground="",o3_padxl=0,o3_padxr=0,o3_padyt=0,o3_padyb=0,o3_fullhtml=0,o3_vpos=BELOW,o3_aboveheight=0,o3_capicon="",o3_textfont="Verdana,Arial,Helvetica",o3_captionfont="Verdana,Arial,Helvetica",o3_closefont="Verdana,Arial,Helvetica",o3_textsize="1",o3_captionsize="1",o3_closesize="1",o3_frame=self,o3_timeout=0,o3_timerid=0,o3_allowmove=0,o3_function=null,o3_delay=0,o3_delayid=0,o3_hauto=0,o3_vauto=0,o3_closeclick=0,o3_wrap=0,o3_followmouse=1,o3_mouseoff=0,o3_closetitle='',o3_compatmode=0,o3_css=CSSOFF,o3_fgclass="",o3_bgclass="",o3_textfontclass="",o3_captionfontclass="",o3_closefontclass="";
var o3_x=0,o3_y=0,o3_showingsticky=0,o3_removecounter=0;
var over=null,fnRef,hoveringSwitch=false,olHideDelay;
var isMac=(navigator.userAgent.indexOf("Mac")!=-1),olOp=(navigator.userAgent.toLowerCase().indexOf('opera')>-1&&document.createTextNode),olNs4=(navigator.appName=='Netscape'&&parseInt(navigator.appVersion)==4),olNs6=(document.getElementById)?true:false,olKq=(olNs6&&/konqueror/i.test(navigator.userAgent)),olIe4=(document.all)?true:false,olIe5=false,olIe55=false,docRoot='document.body';
if(olNs4){var oW=window.innerWidth;var oH=window.innerHeight;window.onresize=function(){if(oW!=window.innerWidth||oH!=window.innerHeight)location.reload();}}
if(olIe4){var agent=navigator.userAgent;if(/MSIE/.test(agent)){var versNum=parseFloat(agent.match(/MSIE[ ](\d\.\d+)\.*/i)[1]);if(versNum>=5){olIe5=true;olIe55=(versNum>=5.5&&!olOp)?true:false;if(olNs6)olNs6=false;}}
if(olNs6)olIe4=false;}
if(document.compatMode&&document.compatMode=='CSS1Compat'){docRoot=((olIe4&&!olOp)?'document.documentElement':docRoot);}
if(window.addEventListener)window.addEventListener("load",OLonLoad_handler,false);else if(window.attachEvent)window.attachEvent("onload",OLonLoad_handler);
var capExtent;
function overlib(){if(!olLoaded||isExclusive(overlib.arguments))return true;if(olCheckMouseCapture)olMouseCapture();if(over){over=(typeof over.id!='string')?o3_frame.document.all['overDiv']:over;cClick();}
olHideDelay=0;o3_text=ol_text;o3_cap=ol_cap;o3_sticky=ol_sticky;o3_background=ol_background;o3_close=ol_close;o3_hpos=ol_hpos;o3_offsetx=ol_offsetx;o3_offsety=ol_offsety;o3_fgcolor=ol_fgcolor;o3_bgcolor=ol_bgcolor;o3_textcolor=ol_textcolor;o3_capcolor=ol_capcolor;o3_closecolor=ol_closecolor;o3_width=ol_width;o3_border=ol_border;o3_cellpad=ol_cellpad;o3_status=ol_status;o3_autostatus=ol_autostatus;o3_height=ol_height;o3_snapx=ol_snapx;o3_snapy=ol_snapy;o3_fixx=ol_fixx;o3_fixy=ol_fixy;o3_relx=ol_relx;o3_rely=ol_rely;o3_fgbackground=ol_fgbackground;o3_bgbackground=ol_bgbackground;o3_padxl=ol_padxl;o3_padxr=ol_padxr;o3_padyt=ol_padyt;o3_padyb=ol_padyb;o3_fullhtml=ol_fullhtml;o3_vpos=ol_vpos;o3_aboveheight=ol_aboveheight;o3_capicon=ol_capicon;o3_textfont=ol_textfont;o3_captionfont=ol_captionfont;o3_closefont=ol_closefont;o3_textsize=ol_textsize;o3_captionsize=ol_captionsize;o3_closesize=ol_closesize;o3_timeout=ol_timeout;o3_function=ol_function;o3_delay=ol_delay;o3_hauto=ol_hauto;o3_vauto=ol_vauto;o3_closeclick=ol_closeclick;o3_wrap=ol_wrap;o3_followmouse=ol_followmouse;o3_mouseoff=ol_mouseoff;o3_closetitle=ol_closetitle;o3_css=ol_css;o3_compatmode=ol_compatmode;o3_fgclass=ol_fgclass;o3_bgclass=ol_bgclass;o3_textfontclass=ol_textfontclass;o3_captionfontclass=ol_captionfontclass;o3_closefontclass=ol_closefontclass;
setRunTimeVariables();
fnRef='';
o3_frame=ol_frame;
if(!(over=createDivContainer()))return false;
parseTokens('o3_',overlib.arguments);if(!postParseChecks())return false;
if(o3_delay==0){return runHook("olMain",FREPLACE);}else{o3_delayid=setTimeout("runHook('olMain',FREPLACE)",o3_delay);return false;}}
function nd(time){if(olLoaded&&!isExclusive()){hideDelay(time);
if(o3_removecounter>=1){o3_showingsticky=0 };
if(o3_showingsticky==0){o3_allowmove=0;if(over!=null&&o3_timerid==0)runHook("hideObject",FREPLACE,over);}else{o3_removecounter++;}}
return true;}
function cClick(){if(olLoaded){runHook("hideObject",FREPLACE,over);o3_showingsticky=0;}
return false;}
function overlib_pagedefaults(){parseTokens('ol_',overlib_pagedefaults.arguments);}
function olMain(){var layerhtml,styleType;runHook("olMain",FBEFORE);
if(o3_background!=""||o3_fullhtml){
layerhtml=runHook('ol_content_background',FALTERNATE,o3_css,o3_text,o3_background,o3_fullhtml);}else{
styleType=(pms[o3_css-1-pmStart]=="cssoff"||pms[o3_css-1-pmStart]=="cssclass");
if(o3_fgbackground!="")o3_fgbackground="background=\""+o3_fgbackground+"\"";if(o3_bgbackground!="")o3_bgbackground=(styleType?"background=\""+o3_bgbackground+"\"":o3_bgbackground);
if(o3_fgcolor!="")o3_fgcolor=(styleType?"bgcolor=\""+o3_fgcolor+"\"":o3_fgcolor);if(o3_bgcolor!="")o3_bgcolor=(styleType?"bgcolor=\""+o3_bgcolor+"\"":o3_bgcolor);
if(o3_height>0)o3_height=(styleType?"height=\""+o3_height+"\"":o3_height);else o3_height="";
if(o3_cap==""){
layerhtml=runHook('ol_content_simple',FALTERNATE,o3_css,o3_text);}else{
if(o3_sticky){
layerhtml=runHook('ol_content_caption',FALTERNATE,o3_css,o3_text,o3_cap,o3_close);}else{
layerhtml=runHook('ol_content_caption',FALTERNATE,o3_css,o3_text,o3_cap,"");}}}
if(o3_sticky){if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;}
o3_showingsticky=1;o3_removecounter=0;}
if(!runHook("createPopup",FREPLACE,layerhtml))return false;
if(o3_autostatus>0){o3_status=o3_text;if(o3_autostatus>1)o3_status=o3_cap;}
o3_allowmove=0;
if(o3_timeout>0){if(o3_timerid>0)clearTimeout(o3_timerid);o3_timerid=setTimeout("cClick()",o3_timeout);}
runHook("disp",FREPLACE,o3_status);runHook("olMain",FAFTER);
return(olOp&&event&&event.type=='mouseover'&&!o3_status)?'':(o3_status!='');}
function ol_content_simple(text){var cpIsMultiple=/,/.test(o3_cellpad);var txt='<table width="'+o3_width+'" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass?'class="'+o3_bgclass+'"':o3_bgcolor+' '+o3_height)+'><tr><td><table width="100%" border="0" '+((olNs4||!cpIsMultiple)?'cellpadding="'+o3_cellpad+'" ':'')+'cellspacing="0" '+(o3_fgclass?'class="'+o3_fgclass+'"':o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass?' class="'+o3_textfontclass+'">':((!olNs4&&cpIsMultiple)?' style="'+setCellPadStr(o3_cellpad)+'">':'>'))+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>';
set_background("");return txt;}
function ol_content_caption(text,title,close){var nameId,txt,cpIsMultiple=/,/.test(o3_cellpad);var closing,closeevent;
closing="";closeevent="onmouseover";if(o3_closeclick==1)closeevent=(o3_closetitle?"title='"+o3_closetitle+"'":"")+" onclick";if(o3_capicon!=""){nameId=' hspace=\"5\"'+' align=\"middle\" alt=\"\"';if(typeof o3_dragimg!='undefined'&&o3_dragimg)nameId=' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"';o3_capicon='<img src=\"'+o3_capicon+'\"'+nameId+' />';}
if(close!="")
closing='<td '+(!o3_compatmode&&o3_closefontclass?'class="'+o3_closefontclass:'align="RIGHT')+'"><a href="javascript:return '+fnRef+'cClick();"'+((o3_compatmode&&o3_closefontclass)?' class="'+o3_closefontclass+'" ':' ')+closeevent+'="return '+fnRef+'cClick();">'+(o3_closefontclass?'':wrapStr(0,o3_closesize,'close'))+close+(o3_closefontclass?'':wrapStr(1,o3_closesize,'close'))+'</a></td>';txt='<table width="'+o3_width+'" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass?'class="'+o3_bgclass+'"':o3_bgcolor+' '+o3_bgbackground+' '+o3_height)+'><tr><td><table width="100%" border="0" cellpadding="2" cellspacing="0"><tr><td'+(o3_captionfontclass?' class="'+o3_captionfontclass+'">':'>')+(o3_captionfontclass?'':'<b>'+wrapStr(0,o3_captionsize,'caption'))+o3_capicon+title+(o3_captionfontclass?'':wrapStr(1,o3_captionsize)+'</b>')+'</td>'+closing+'</tr></table><table width="100%" border="0" '+((olNs4||!cpIsMultiple)?'cellpadding="'+o3_cellpad+'" ':'')+'cellspacing="0" '+(o3_fgclass?'class="'+o3_fgclass+'"':o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass?' class="'+o3_textfontclass+'">' :((!olNs4&&cpIsMultiple)?' style="'+setCellPadStr(o3_cellpad)+'">':'>'))+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>';
set_background("");return txt;}
function ol_content_background(text,picture,hasfullhtml){if(hasfullhtml){txt=text;}else{txt='<table width="'+o3_width+'" border="0" cellpadding="0" cellspacing="0" height="'+o3_height+'"><tr><td colspan="3" height="'+o3_padyt+'"></td></tr><tr><td width="'+o3_padxl+'"></td><td valign="TOP" width="'+(o3_width-o3_padxl-o3_padxr)+(o3_textfontclass?'" class="'+o3_textfontclass:'')+'">'+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'</td><td width="'+o3_padxr+'"></td></tr><tr><td colspan="3" height="'+o3_padyb+'"></td></tr></table>';}
set_background(picture);return txt;}
function set_background(pic){if(pic==""){if(olNs4){over.background.src=null;}else if(over.style){over.style.backgroundImage="none";}
}else{if(olNs4){over.background.src=pic;}else if(over.style){over.style.width=o3_width+'px';over.style.backgroundImage="url("+pic+")";}}}
var olShowId=-1;
function disp(statustext){runHook("disp",FBEFORE);
if(o3_allowmove==0){runHook("placeLayer",FREPLACE);(olNs6&&olShowId<0)?olShowId=setTimeout("runHook('showObject',FREPLACE,over)",1):runHook("showObject",FREPLACE,over);o3_allowmove=(o3_sticky||o3_followmouse==0)?0:1;}
runHook("disp",FAFTER);
if(statustext!="")self.status=statustext;}
function createPopup(lyrContent){runHook("createPopup",FBEFORE);
if(o3_wrap){var wd,ww,theObj=(olNs4?over:over.style);theObj.top=theObj.left=((olIe4&&!olOp)?0:-10000)+(!olNs4?'px':0);layerWrite(lyrContent);wd=(olNs4?over.clip.width:over.offsetWidth);if(wd>(ww=windowWidth())){lyrContent=lyrContent.replace(/\&nbsp;/g,' ');o3_width=ww;o3_wrap=0;}}
layerWrite(lyrContent);
if(o3_wrap)o3_width=(olNs4?over.clip.width:over.offsetWidth);
runHook("createPopup",FAFTER,lyrContent);
return true;}
function placeLayer(){var placeX,placeY,widthFix=0;
if(o3_frame.innerWidth)widthFix=18;iwidth=windowWidth();
winoffset=(olIe4)?eval('o3_frame.'+docRoot+'.scrollLeft'):o3_frame.pageXOffset;
placeX=runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix);
if(o3_frame.innerHeight){iheight=o3_frame.innerHeight;}else if(eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight')){iheight=eval('o3_frame.'+docRoot+'.clientHeight');}
scrolloffset=(olIe4)?eval('o3_frame.'+docRoot+'.scrollTop'):o3_frame.pageYOffset;placeY=runHook('verticalPlacement',FCHAIN,iheight,scrolloffset);
repositionTo(over,placeX,placeY);}
function olMouseMove(e){var e=(e)?e:event;
if(e.pageX){o3_x=e.pageX;o3_y=e.pageY;}else if(e.clientX){o3_x=eval('e.clientX+o3_frame.'+docRoot+'.scrollLeft');o3_y=eval('e.clientY+o3_frame.'+docRoot+'.scrollTop');}
if(o3_allowmove==1)runHook("placeLayer",FREPLACE);
if(hoveringSwitch&&!olNs4&&runHook("cursorOff",FREPLACE)){(olHideDelay?hideDelay(olHideDelay):cClick());hoveringSwitch=!hoveringSwitch;}}
function no_overlib(){return ver3fix;}
function olMouseCapture(){capExtent=document;var fN,str='',l,k,f,wMv,sS,mseHandler=olMouseMove;var re=/function[ ]*(\w*)\(/;
wMv=(!olIe4&&window.onmousemove);if(document.onmousemove||wMv){if(wMv)capExtent=window;f=capExtent.onmousemove.toString();fN=f.match(re);if(fN==null){str=f+'(e);';}else if(fN[1]=='anonymous'||fN[1]=='olMouseMove'||(wMv&&fN[1]=='onmousemove')){if(!olOp&&wMv){l=f.indexOf('{')+1;k=f.lastIndexOf('}');sS=f.substring(l,k);if((l=sS.indexOf('('))!=-1){sS=sS.substring(0,l).replace(/^\s+/,'').replace(/\s+$/,'');if(eval("typeof "+sS+"=='undefined'"))window.onmousemove=null;else str=sS+'(e);';}}
if(!str){olCheckMouseCapture=false;return;}
}else{if(fN[1])str=fN[1]+'(e);';else{l=f.indexOf('{')+1;k=f.lastIndexOf('}');str=f.substring(l,k)+'\n';}}
str+='olMouseMove(e);';mseHandler=new Function('e',str);}
capExtent.onmousemove=mseHandler;if(olNs4)capExtent.captureEvents(Event.MOUSEMOVE);}
function parseTokens(pf,ar){
var v,i,mode=-1,par=(pf!='ol_'),fnMark=(par&&!ar.length?1:0);
for(i=0;i<ar.length;i++){if(mode<0){
if(typeof ar[i]=='number'&&ar[i]>pmStart&&ar[i]<pmUpper){fnMark=(par?1:0);i--;}else{switch(pf){case 'ol_':
ol_text=ar[i].toString();break;default:
o3_text=ar[i].toString();}}
mode=0;}else{
if(ar[i]>=pmCount||ar[i]==DONOTHING){continue;}
if(ar[i]==INARRAY){fnMark=0;eval(pf+'text=ol_texts['+ar[++i]+'].toString()');continue;}
if(ar[i]==CAPARRAY){eval(pf+'cap=ol_caps['+ar[++i]+'].toString()');continue;}
if(ar[i]==STICKY){if(pf!='ol_')eval(pf+'sticky=1');continue;}
if(ar[i]==BACKGROUND){eval(pf+'background="'+ar[++i]+'"');continue;}
if(ar[i]==NOCLOSE){if(pf!='ol_')opt_NOCLOSE();continue;}
if(ar[i]==CAPTION){eval(pf+"cap='"+escSglQuote(ar[++i])+"'");continue;}
if(ar[i]==CENTER||ar[i]==LEFT||ar[i]==RIGHT){eval(pf+'hpos='+ar[i]);if(pf!='ol_')olHautoFlag=1;continue;}
if(ar[i]==OFFSETX){eval(pf+'offsetx='+ar[++i]);continue;}
if(ar[i]==OFFSETY){eval(pf+'offsety='+ar[++i]);continue;}
if(ar[i]==FGCOLOR){eval(pf+'fgcolor="'+ar[++i]+'"');continue;}
if(ar[i]==BGCOLOR){eval(pf+'bgcolor="'+ar[++i]+'"');continue;}
if(ar[i]==TEXTCOLOR){eval(pf+'textcolor="'+ar[++i]+'"');continue;}
if(ar[i]==CAPCOLOR){eval(pf+'capcolor="'+ar[++i]+'"');continue;}
if(ar[i]==CLOSECOLOR){eval(pf+'closecolor="'+ar[++i]+'"');continue;}
if(ar[i]==WIDTH){eval(pf+'width='+ar[++i]);continue;}
if(ar[i]==BORDER){eval(pf+'border='+ar[++i]);continue;}
if(ar[i]==CELLPAD){i=opt_MULTIPLEARGS(++i,ar,(pf+'cellpad'));continue;}
if(ar[i]==STATUS){eval(pf+"status='"+escSglQuote(ar[++i])+"'");continue;}
if(ar[i]==AUTOSTATUS){eval(pf+'autostatus=('+pf+'autostatus==1)?0:1');continue;}
if(ar[i]==AUTOSTATUSCAP){eval(pf+'autostatus=('+pf+'autostatus==2)?0:2');continue;}
if(ar[i]==HEIGHT){eval(pf+'height='+pf+'aboveheight='+ar[++i]);continue;}
if(ar[i]==CLOSETEXT){eval(pf+"close='"+escSglQuote(ar[++i])+"'");continue;}
if(ar[i]==SNAPX){eval(pf+'snapx='+ar[++i]);continue;}
if(ar[i]==SNAPY){eval(pf+'snapy='+ar[++i]);continue;}
if(ar[i]==FIXX){eval(pf+'fixx='+ar[++i]);continue;}
if(ar[i]==FIXY){eval(pf+'fixy='+ar[++i]);continue;}
if(ar[i]==RELX){eval(pf+'relx='+ar[++i]);continue;}
if(ar[i]==RELY){eval(pf+'rely='+ar[++i]);continue;}
if(ar[i]==FGBACKGROUND){eval(pf+'fgbackground="'+ar[++i]+'"');continue;}
if(ar[i]==BGBACKGROUND){eval(pf+'bgbackground="'+ar[++i]+'"');continue;}
if(ar[i]==PADX){eval(pf+'padxl='+ar[++i]);eval(pf+'padxr='+ar[++i]);continue;}
if(ar[i]==PADY){eval(pf+'padyt='+ar[++i]);eval(pf+'padyb='+ar[++i]);continue;}
if(ar[i]==FULLHTML){if(pf!='ol_')eval(pf+'fullhtml=1');continue;}
if(ar[i]==BELOW||ar[i]==ABOVE){eval(pf+'vpos='+ar[i]);if(pf!='ol_')olVautoFlag=1;continue;}
if(ar[i]==CAPICON){eval(pf+'capicon="'+ar[++i]+'"');continue;}
if(ar[i]==TEXTFONT){eval(pf+"textfont='"+escSglQuote(ar[++i])+"'");continue;}
if(ar[i]==CAPTIONFONT){eval(pf+"captionfont='"+escSglQuote(ar[++i])+"'");continue;}
if(ar[i]==CLOSEFONT){eval(pf+"closefont='"+escSglQuote(ar[++i])+"'");continue;}
if(ar[i]==TEXTSIZE){eval(pf+'textsize="'+ar[++i]+'"');continue;}
if(ar[i]==CAPTIONSIZE){eval(pf+'captionsize="'+ar[++i]+'"');continue;}
if(ar[i]==CLOSESIZE){eval(pf+'closesize="'+ar[++i]+'"');continue;}
if(ar[i]==TIMEOUT){eval(pf+'timeout='+ar[++i]);continue;}
if(ar[i]==FUNCTION){if(pf=='ol_'){if(typeof ar[i+1]!='number'){v=ar[++i];ol_function=(typeof v=='function'?v:null);}}else{fnMark=0;v=null;if(typeof ar[i+1]!='number')v=ar[++i]; opt_FUNCTION(v);} continue;}
if(ar[i]==DELAY){eval(pf+'delay='+ar[++i]);continue;}
if(ar[i]==HAUTO){eval(pf+'hauto=('+pf+'hauto==0)?1:0');continue;}
if(ar[i]==VAUTO){eval(pf+'vauto=('+pf+'vauto==0)?1:0');continue;}
if(ar[i]==CLOSECLICK){eval(pf+'closeclick=('+pf+'closeclick==0)?1:0');continue;}
if(ar[i]==WRAP){eval(pf+'wrap=('+pf+'wrap==0)?1:0');continue;}
if(ar[i]==FOLLOWMOUSE){eval(pf+'followmouse=('+pf+'followmouse==1)?0:1');continue;}
if(ar[i]==MOUSEOFF){eval(pf+'mouseoff=('+pf+'mouseoff==0)?1:0');v=ar[i+1];if(pf!='ol_'&&eval(pf+'mouseoff')&&typeof v=='number'&&(v<pmStart||v>pmUpper))olHideDelay=ar[++i];continue;}
if(ar[i]==CLOSETITLE){eval(pf+"closetitle='"+escSglQuote(ar[++i])+"'");continue;}
if(ar[i]==CSSOFF||ar[i]==CSSCLASS){eval(pf+'css='+ar[i]);continue;}
if(ar[i]==COMPATMODE){eval(pf+'compatmode=('+pf+'compatmode==0)?1:0');continue;}
if(ar[i]==FGCLASS){eval(pf+'fgclass="'+ar[++i]+'"');continue;}
if(ar[i]==BGCLASS){eval(pf+'bgclass="'+ar[++i]+'"');continue;}
if(ar[i]==TEXTFONTCLASS){eval(pf+'textfontclass="'+ar[++i]+'"');continue;}
if(ar[i]==CAPTIONFONTCLASS){eval(pf+'captionfontclass="'+ar[++i]+'"');continue;}
if(ar[i]==CLOSEFONTCLASS){eval(pf+'closefontclass="'+ar[++i]+'"');continue;}
i=parseCmdLine(pf,i,ar);}}
if(fnMark&&o3_function)o3_text=o3_function();
if((pf=='o3_')&&o3_wrap){o3_width=0;
var tReg=/<.*\n*>/ig;if(!tReg.test(o3_text))o3_text=o3_text.replace(/[ ]+/g,'&nbsp;');if(!tReg.test(o3_cap))o3_cap=o3_cap.replace(/[ ]+/g,'&nbsp;');}
if((pf=='o3_')&&o3_sticky){if(!o3_close&&(o3_frame!=ol_frame))o3_close=ol_close;if(o3_mouseoff&&(o3_frame==ol_frame))opt_NOCLOSE(' ');}}
function layerWrite(txt){txt+="\n";if(olNs4){var lyr=o3_frame.document.layers['overDiv'].document
lyr.write(txt)
lyr.close()
}else if(typeof over.innerHTML!='undefined'){if(olIe5&&isMac)over.innerHTML='';over.innerHTML=txt;}else{range=o3_frame.document.createRange();range.setStartAfter(over);domfrag=range.createContextualFragment(txt);
while(over.hasChildNodes()){over.removeChild(over.lastChild);}
over.appendChild(domfrag);}}
function showObject(obj){runHook("showObject",FBEFORE);
var theObj=(olNs4?obj:obj.style);theObj.visibility='visible';
runHook("showObject",FAFTER);}
function hideObject(obj){runHook("hideObject",FBEFORE);
var theObj=(olNs4?obj:obj.style);if(olNs6&&olShowId>0){clearTimeout(olShowId);olShowId=0;}
theObj.visibility='hidden';theObj.top=theObj.left=((olIe4&&!olOp)?0:-10000)+(!olNs4?'px':0);
if(o3_timerid>0)clearTimeout(o3_timerid);if(o3_delayid>0)clearTimeout(o3_delayid);
o3_timerid=0;o3_delayid=0;self.status="";
if(obj.onmouseout||obj.onmouseover){if(olNs4)obj.releaseEvents(Event.MOUSEOUT||Event.MOUSEOVER);obj.onmouseout=obj.onmouseover=null;}
runHook("hideObject",FAFTER);}
function repositionTo(obj,xL,yL){var theObj=(olNs4?obj:obj.style);theObj.left=xL+(!olNs4?'px':0);theObj.top=yL+(!olNs4?'px':0);}
function cursorOff(){var left=parseInt(over.style.left);var top=parseInt(over.style.top);var right=left+(over.offsetWidth>=parseInt(o3_width)?over.offsetWidth:parseInt(o3_width));var bottom=top+(over.offsetHeight>=o3_aboveheight?over.offsetHeight:o3_aboveheight);
if(o3_x<left||o3_x>right||o3_y<top||o3_y>bottom)return true;
return false;}
function opt_FUNCTION(callme){o3_text=(callme?(typeof callme=='string'?(/.+\(.*\)/.test(callme)?eval(callme):callme):callme()):(o3_function?o3_function():'No Function'));
return 0;}
function opt_NOCLOSE(unused){if(!unused)o3_close="";
if(olNs4){over.captureEvents(Event.MOUSEOUT||Event.MOUSEOVER);over.onmouseover=function(){if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;} }
over.onmouseout=function(e){if(olHideDelay)hideDelay(olHideDelay);else cClick(e);}
}else{over.onmouseover=function(){hoveringSwitch=true;if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;} }}
return 0;}
function opt_MULTIPLEARGS(i,args,parameter){var k=i,re,pV,str='';
for(k=i;k<args.length;k++){if(typeof args[k]=='number'&&args[k]>pmStart)break;str+=args[k]+',';}
if(str)str=str.substring(0,--str.length);
k--;pV=(olNs4&&/cellpad/i.test(parameter))?str.split(',')[0]:str;eval(parameter+'="'+pV+'"');
return k;}
function nbspCleanup(){if(o3_wrap){o3_text=o3_text.replace(/\&nbsp;/g,' ');o3_cap=o3_cap.replace(/\&nbsp;/g,' ');}}
function escSglQuote(str){return str.toString().replace(/'/g,"\\'");}
function OLonLoad_handler(e){var re=/\w+\(.*\)[;\s]+/g,olre=/overlib\(|nd\(|cClick\(/,fn,l,i;
if(!olLoaded)olLoaded=1;
if(window.removeEventListener&&e.eventPhase==3)window.removeEventListener("load",OLonLoad_handler,false);else if(window.detachEvent){window.detachEvent("onload",OLonLoad_handler);var fN=document.body.getAttribute('onload');if(fN){fN=fN.toString().match(re);if(fN&&fN.length){for(i=0;i<fN.length;i++){if(/anonymous/.test(fN[i]))continue;while((l=fN[i].search(/\)[;\s]+/))!=-1){fn=fN[i].substring(0,l+1);fN[i]=fN[i].substring(l+2);if(olre.test(fn))eval(fn);}}}}}}
function wrapStr(endWrap,fontSizeStr,whichString){var fontStr,fontColor,isClose=((whichString=='close')?1:0),hasDims=/[%\-a-z]+$/.test(fontSizeStr);fontSizeStr=(olNs4)?(!hasDims?fontSizeStr:'1'):fontSizeStr;if(endWrap)return(hasDims&&!olNs4)?(isClose?'</span>':'</div>'):'</font>';else{fontStr='o3_'+whichString+'font';fontColor='o3_'+((whichString=='caption')? 'cap':whichString)+'color';return(hasDims&&!olNs4)?(isClose?'<span style="font-family: '+quoteMultiNameFonts(eval(fontStr))+';color: '+eval(fontColor)+';font-size: '+fontSizeStr+';">':'<div style="font-family: '+quoteMultiNameFonts(eval(fontStr))+';color: '+eval(fontColor)+';font-size: '+fontSizeStr+';">'):'<font face="'+eval(fontStr)+'" color="'+eval(fontColor)+'" size="'+(parseInt(fontSizeStr)>7?'7':fontSizeStr)+'">';}}
function quoteMultiNameFonts(theFont){var v,pM=theFont.split(',');for(var i=0;i<pM.length;i++){v=pM[i];v=v.replace(/^\s+/,'').replace(/\s+$/,'');if(/\s/.test(v)&&!/['"]/.test(v)){v="\'"+v+"\'";pM[i]=v;}}
return pM.join();}
function isExclusive(args){return false;}
function setCellPadStr(parameter){var Str='',j=0,ary=new Array(),top,bottom,left,right;
Str+='padding: ';ary=parameter.replace(/\s+/g,'').split(',');
switch(ary.length){case 2:
top=bottom=ary[j];left=right=ary[++j];break;case 3:
top=ary[j];left=right=ary[++j];bottom=ary[++j];break;case 4:
top=ary[j];right=ary[++j];bottom=ary[++j];left=ary[++j];break;}
Str+=((ary.length==1)?ary[0]+'px;':top+'px '+right+'px '+bottom+'px '+left+'px;');
return Str;}
function hideDelay(time){if(time&&!o3_delay){if(o3_timerid>0)clearTimeout(o3_timerid);
o3_timerid=setTimeout("cClick()",(o3_timeout=time));}}
function horizontalPlacement(browserWidth,horizontalScrollAmount,widthFix){var placeX,iwidth=browserWidth,winoffset=horizontalScrollAmount;var parsedWidth=parseInt(o3_width);
if(o3_fixx>-1||o3_relx!=null){
placeX=(o3_relx!=null?( o3_relx<0?winoffset+o3_relx+iwidth-parsedWidth-widthFix:winoffset+o3_relx):o3_fixx);}else{
if(o3_hauto==1){if((o3_x-winoffset)>(iwidth/2)){o3_hpos=LEFT;}else{o3_hpos=RIGHT;}}
if(o3_hpos==CENTER){placeX=o3_x+o3_offsetx-(parsedWidth/2);
if(placeX<winoffset)placeX=winoffset;}
if(o3_hpos==RIGHT){placeX=o3_x+o3_offsetx;
if((placeX+parsedWidth)>(winoffset+iwidth-widthFix)){placeX=iwidth+winoffset-parsedWidth-widthFix;if(placeX<0)placeX=0;}}
if(o3_hpos==LEFT){placeX=o3_x-o3_offsetx-parsedWidth;if(placeX<winoffset)placeX=winoffset;}
if(o3_snapx>1){var snapping=placeX % o3_snapx;
if(o3_hpos==LEFT){placeX=placeX-(o3_snapx+snapping);}else{
placeX=placeX+(o3_snapx-snapping);}
if(placeX<winoffset)placeX=winoffset;}}
return placeX;}
function verticalPlacement(browserHeight,verticalScrollAmount){var placeY,iheight=browserHeight,scrolloffset=verticalScrollAmount;var parsedHeight=(o3_aboveheight?parseInt(o3_aboveheight):(olNs4?over.clip.height:over.offsetHeight));
if(o3_fixy>-1||o3_rely!=null){
placeY=(o3_rely!=null?(o3_rely<0?scrolloffset+o3_rely+iheight-parsedHeight:scrolloffset+o3_rely):o3_fixy);}else{
if(o3_vauto==1){if((o3_y-scrolloffset)>(iheight/2)&&o3_vpos==BELOW&&(o3_y+parsedHeight+o3_offsety-(scrolloffset+iheight)>0)){o3_vpos=ABOVE;}else if(o3_vpos==ABOVE&&(o3_y-(parsedHeight+o3_offsety)-scrolloffset<0)){o3_vpos=BELOW;}}
if(o3_vpos==ABOVE){if(o3_aboveheight==0)o3_aboveheight=parsedHeight;
placeY=o3_y-(o3_aboveheight+o3_offsety);if(placeY<scrolloffset)placeY=scrolloffset;}else{
placeY=o3_y+o3_offsety;}
if(o3_snapy>1){var snapping=placeY % o3_snapy;
if(o3_aboveheight>0&&o3_vpos==ABOVE){placeY=placeY-(o3_snapy+snapping);}else{placeY=placeY+(o3_snapy-snapping);}
if(placeY<scrolloffset)placeY=scrolloffset;}}
return placeY;}
function checkPositionFlags(){if(olHautoFlag)olHautoFlag=o3_hauto=0;if(olVautoFlag)olVautoFlag=o3_vauto=0;return true;}
function windowWidth(){var w;if(o3_frame.innerWidth)w=o3_frame.innerWidth;else if(eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientWidth=='number'")&&eval('o3_frame.'+docRoot+'.clientWidth'))
w=eval('o3_frame.'+docRoot+'.clientWidth');return w;}
function createDivContainer(id,frm,zValue){id=(id||'overDiv'),frm=(frm||o3_frame),zValue=(zValue||1000);var objRef,divContainer=layerReference(id);
if(divContainer==null){if(olNs4){divContainer=frm.document.layers[id]=new Layer(window.innerWidth,frm);objRef=divContainer;}else{var body=(olIe4?frm.document.all.tags('BODY')[0]:frm.document.getElementsByTagName("BODY")[0]);if(olIe4&&!document.getElementById){body.insertAdjacentHTML("beforeEnd",'<div id="'+id+'"></div>');divContainer=layerReference(id);}else{divContainer=frm.document.createElement("DIV");divContainer.id=id;body.appendChild(divContainer);}
objRef=divContainer.style;}
objRef.position='absolute';objRef.visibility='hidden';objRef.zIndex=zValue;if(olIe4&&!olOp)objRef.left=objRef.top='0px';else objRef.left=objRef.top=-10000+(!olNs4?'px':0);}
return divContainer;}
function layerReference(id){return(olNs4?o3_frame.document.layers[id]:(document.all?o3_frame.document.all[id]:o3_frame.document.getElementById(id)));}
function isFunction(fnRef){var rtn=true;
if(typeof fnRef=='object'){for(var i=0;i<fnRef.length;i++){if(typeof fnRef[i]=='function')continue;rtn=false;break;}
}else if(typeof fnRef!='function'){rtn=false;}
return rtn;}
function argToString(array,strtInd,argName){var jS=strtInd,aS='',ar=array;argName=(argName?argName:'ar');
if(ar.length>jS){for(var k=jS;k<ar.length;k++)aS+=argName+'['+k+'], ';aS=aS.substring(0,aS.length-2);}
return aS;}
function reOrder(hookPt,fnRef,order){var newPt=new Array(),match,i,j;
if(!order||typeof order=='undefined'||typeof order=='number')return hookPt;
if(typeof order=='function'){if(typeof fnRef=='object'){newPt=newPt.concat(fnRef);}else{newPt[newPt.length++]=fnRef;}
for(i=0;i<hookPt.length;i++){match=false;if(typeof fnRef=='function'&&hookPt[i]==fnRef){continue;}else{for(j=0;j<fnRef.length;j++)if(hookPt[i]==fnRef[j]){match=true;break;}}
if(!match)newPt[newPt.length++]=hookPt[i];}
newPt[newPt.length++]=order;
}else if(typeof order=='object'){if(typeof fnRef=='object'){newPt=newPt.concat(fnRef);}else{newPt[newPt.length++]=fnRef;}
for(j=0;j<hookPt.length;j++){match=false;if(typeof fnRef=='function'&&hookPt[j]==fnRef){continue;}else{for(i=0;i<fnRef.length;i++)if(hookPt[j]==fnRef[i]){match=true;break;}}
if(!match)newPt[newPt.length++]=hookPt[j];}
for(i=0;i<newPt.length;i++)hookPt[i]=newPt[i];newPt.length=0;
for(j=0;j<hookPt.length;j++){match=false;for(i=0;i<order.length;i++){if(hookPt[j]==order[i]){match=true;break;}}
if(!match)newPt[newPt.length++]=hookPt[j];}
newPt=newPt.concat(order);}
hookPt=newPt;
return hookPt;}
function setRunTimeVariables(){if(typeof runTime!='undefined'&&runTime.length){for(var k=0;k<runTime.length;k++){runTime[k]();}}}
function parseCmdLine(pf,i,args){if(typeof cmdLine!='undefined'&&cmdLine.length){for(var k=0;k<cmdLine.length;k++){var j=cmdLine[k](pf,i,args);if(j >-1){i=j;break;}}}
return i;}
function postParseChecks(pf,args){if(typeof postParse!='undefined'&&postParse.length){for(var k=0;k<postParse.length;k++){if(postParse[k](pf,args))continue;return false;}}
return true;}
function registerCommands(cmdStr){if(typeof cmdStr!='string')return;
var pM=cmdStr.split(',');pms=pms.concat(pM);
for(var i=0;i< pM.length;i++){eval(pM[i].toUpperCase()+'='+pmCount++);}}
function registerNoParameterCommands(cmdStr){if(!cmdStr&&typeof cmdStr!='string')return;pmt=(!pmt)?cmdStr:pmt+','+cmdStr;}
function registerHook(fnHookTo,fnRef,hookType,optPm){var hookPt,last=typeof optPm;
if(fnHookTo=='plgIn'||fnHookTo=='postParse')return;if(typeof hookPts[fnHookTo]=='undefined')hookPts[fnHookTo]=new FunctionReference();
hookPt=hookPts[fnHookTo];
if(hookType!=null){if(hookType==FREPLACE){hookPt.ovload=fnRef;if(fnHookTo.indexOf('ol_content_')>-1)hookPt.alt[pms[CSSOFF-1-pmStart]]=fnRef;
}else if(hookType==FBEFORE||hookType==FAFTER){var hookPt=(hookType==1?hookPt.before:hookPt.after);
if(typeof fnRef=='object'){hookPt=hookPt.concat(fnRef);}else{hookPt[hookPt.length++]=fnRef;}
if(optPm)hookPt=reOrder(hookPt,fnRef,optPm);
}else if(hookType==FALTERNATE){if(last=='number')hookPt.alt[pms[optPm-1-pmStart]]=fnRef;}else if(hookType==FCHAIN){hookPt=hookPt.chain;if(typeof fnRef=='object')hookPt=hookPt.concat(fnRef);else hookPt[hookPt.length++]=fnRef;}
return;}}
function registerRunTimeFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){runTime=runTime.concat(fn);}else{runTime[runTime.length++]=fn;}}}
function registerCmdLineFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){cmdLine=cmdLine.concat(fn);}else{cmdLine[cmdLine.length++]=fn;}}}
function registerPostParseFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){postParse=postParse.concat(fn);}else{postParse[postParse.length++]=fn;}}}
function runHook(fnHookTo,hookType){var l=hookPts[fnHookTo],k,rtnVal=null,optPm,arS,ar=runHook.arguments;
if(hookType==FREPLACE){arS=argToString(ar,2);
if(typeof l=='undefined'||!(l=l.ovload))rtnVal=eval(fnHookTo+'('+arS+')');else rtnVal=eval('l('+arS+')');
}else if(hookType==FBEFORE||hookType==FAFTER){if(typeof l!='undefined'){l=(hookType==1?l.before:l.after);
if(l.length){arS=argToString(ar,2);for(var k=0;k<l.length;k++)eval('l[k]('+arS+')');}}
}else if(hookType==FALTERNATE){optPm=ar[2];arS=argToString(ar,3);
if(typeof l=='undefined'||(l=l.alt[pms[optPm-1-pmStart]])=='undefined'){rtnVal=eval(fnHookTo+'('+arS+')');}else{rtnVal=eval('l('+arS+')');}
}else if(hookType==FCHAIN){arS=argToString(ar,2);l=l.chain;
for(k=l.length;k>0;k--)if((rtnVal=eval('l[k-1]('+arS+')'))!=void(0))break;}
return rtnVal;}
function FunctionReference(){this.ovload=null;this.before=new Array();this.after=new Array();this.alt=new Array();this.chain=new Array();}
function Info(version,prerelease){this.version=version;this.prerelease=prerelease;
this.simpleversion=Math.round(this.version*100);this.major=parseInt(this.simpleversion/100);this.minor=parseInt(this.simpleversion/10)-this.major * 10;this.revision=parseInt(this.simpleversion)-this.major * 100-this.minor * 10;this.meets=meets;}
function meets(reqdVersion){return(!reqdVersion)?false:this.simpleversion>=Math.round(100*parseFloat(reqdVersion));}
registerHook("ol_content_simple",ol_content_simple,FALTERNATE,CSSOFF);registerHook("ol_content_caption",ol_content_caption,FALTERNATE,CSSOFF);registerHook("ol_content_background",ol_content_background,FALTERNATE,CSSOFF);registerHook("ol_content_simple",ol_content_simple,FALTERNATE,CSSCLASS);registerHook("ol_content_caption",ol_content_caption,FALTERNATE,CSSCLASS);registerHook("ol_content_background",ol_content_background,FALTERNATE,CSSCLASS);registerPostParseFunction(checkPositionFlags);registerHook("hideObject",nbspCleanup,FAFTER);registerHook("horizontalPlacement",horizontalPlacement,FCHAIN);registerHook("verticalPlacement",verticalPlacement,FCHAIN);if(olNs4||(olIe5&&isMac)||olKq)olLoaded=1;registerNoParameterCommands('sticky,autostatus,autostatuscap,fullhtml,hauto,vauto,closeclick,wrap,followmouse,mouseoff,compatmode');
var olCheckMouseCapture=true;if((olNs4||olNs6||olIe4)){olMouseCapture();}else{overlib=no_overlib;nd=no_overlib;ver3fix=true;}
