var imageCache = {};
var page = (location.hash || '#home').replace('#', '');
var galleryPage = 0;
var inGallery = false;
var galleryTotal = 0;
var uploading = false;

(function($j) {
    $j.markPreloadedImage = function(ev) {
        if (!ev) {
            ev = window.event;
        }
        var doneImg = ev.target;
        $j(doneImg).removeClass('preloading').addClass('preloaded').remove();
    };

    $j.preloadImages = function(images, parentKey) {
        for (var key in images) {
            if (typeof images[key] == 'object') {
                $j.preloadImages(images[key], key);
            } else {
                var cacheImage = document.createElement('img');
                $j(cacheImage).addClass('preloading').appendTo('body').load($j.markPreloadedImage);
                // cacheImage.onload = $j.markPreloadedImage;
                cacheImage.src = images[key];
                
                if (parentKey !== undefined) {
                    eval('var cacheImageObj = {' + parentKey + ': {' + key + ': cacheImage }}');
                } else {
                    eval('var cacheImageObj = {' + key + ': cacheImage }');
                }
                $j.extend(true, imageCache, cacheImageObj);
            }
        }
    }

    var images = {
        'bg': {
            'home': 'img/home.jpg',
            'unternehmen': 'img/unternehmen.jpg',
            'wellness': 'img/wellness.jpg',
            'heizung': 'img/heizung.jpg',
            'energie': 'img/energie.jpg',
            'partner': 'img/partner.jpg',
            'jobs': 'img/jobs.jpg',
            'kontakt': 'img/kontakt.jpg'
        },
        'menu': {
            'home': 'img/home_menu.gif',
            'unternehmen': 'img/unternehmen_menu.gif',
            'wellness': 'img/wellness_menu.gif',
            'heizung': 'img/heizung_menu.gif',
            'energie': 'img/energie_menu.gif',
            'partner': 'img/partner_menu.gif',
            'jobs': 'img/jobs_menu.gif',
            'kontakt': 'img/kontakt_menu.gif'
        },
        'over': {
            'unternehmen': 'img/unternehmen_over.jpg',
            'wellness': 'img/wellness_over.jpg',
            'heizung': 'img/heizung_over.jpg',
            'energie': 'img/energie_over.jpg',
            'partner': 'img/partner_over.jpg',
            'jobs': 'img/jobs_over.jpg',
            'kontakt': 'img/kontakt_over.jpg'
        },
        'extra': {
            'controls': 'img/arrows.png'
        }
    };

    $j.preloadImages(images);

    $j.switchPage = function() {
        $j.closeGallery();
        var menuImg = imageCache['menu'][page].src;
        var bgImg = imageCache['bg'][page].src;
        $j('#main').css('background', 'url(' + bgImg + ') no-repeat 0 0 transparent');
        $j('#menu').css('background', 'url(' + menuImg + ') no-repeat ' + (page == 'partner' ? '-4px' : '0') + ' 0 transparent');
        $j('#main').parent().addClass(page).end().children('form, #gallery').hide();
        if (page == 'kontakt' || page == 'jobs') {
            $j('#form_' + page).show();
        }
        if (page == 'wellness' || page == 'heizung' || page == 'energie')
        {
            $j('#gallery').show();
        }
        location.hash = page;
    }

    $j.switchGalleryPage = function() {
        var newImg = $j(imageCache['gallery'][galleryPage]);

        if (newImg.hasClass('preloading')) {
            $j('.loader').show();
            setTimeout('jQuery.switchGalleryPage()', 1000);
        } else {
            $j('.loader').hide();
            $j('.gallery-image').remove();
            newImg.appendTo('#main').addClass('gallery-image');
        }
    }

    $j.closeGallery = function() {
        $j('.loader').hide();
        $j('.gallery-image').remove();
        $j('#gallery').show();
        $j('#controls').hide();
        $j('#controls a').addClass('disabled');
        inGallery = false;
    }

    $j.prevGalleryPage = function() {
        if (--galleryPage < 0) {
            galleryPage = 0;
        } else {
            if (galleryPage == 0) {
                $j('#prev').addClass('disabled');
            }
            $j('#next').removeClass('disabled');
            $j.switchGalleryPage();
        }
        return false;
    }

    $j.nextGalleryPage = function() {
        if (++galleryPage >= galleryTotal)
        {
            galleryPage = galleryTotal - 1;
        } else {
            if (galleryPage == galleryTotal -1) {
                $j('#next').addClass('disabled');
            }
            $j('#prev').removeClass('disabled');
            $j.switchGalleryPage();
        }
        return false;
    }

    $j(document).keydown(function(ev) {
        if (inGallery && ev.keyCode == 27) {
            $j.closeGallery();
        }
        if (inGallery && ev.keyCode == 37) {
            return $j.prevGalleryPage();
        }
        if (inGallery && ev.keyCode == 39) {
            return $j.nextGalleryPage();
        }
    });

    $j.upload = function(settings, type_err_message, err_handle) {
        uploading = true;
        _this = settings.inputObject;
        if (typeof type_err_message != 'string') {
            type_err_message = 'Bitte wählen Sie eine .rtf, .txt, .doc, .odt oder .pdf Datei!';
        }
        if (typeof err_handle != 'function') {
            err_handle = alert;
        }
        if (!_this.val().match(/(rtf|txt|doc|odt|pdf$)/)) {
            $j('#anhangen_text').val('');
            err_handle(type_err_message);
            return false;
        }
        url = settings.formAction.split('?')[0];
        params = settings.formAction.split('?')[1];
        settings.formAction = url + (params ? '&' + params : '');
        iframeID = String((new Date()).getTime()).replace(/\D/gi,'');
        _this.addClass('_enabled').after('<input type="hidden" name="field_name" id="field_name" class="_enabled" value="' + _this.attr('name') + '" />').parents('form').after('<iframe src="" width="1" height="1" border="0" style="display: none;" scrolling="no" name="' + iframeID + '"></iframe>');
        //.wrap('<form action="' + settings.formAction + '" target="' + iframeID + '" method="post" enctype="multipart/form-data" class="uploadForm"></form>')        iframe = form.next();
        _form = _this.parents('form')
        _action = _form.attr('action');
        _target = _form.attr('target');
        _method = _form.attr('method');
        _enctype = _form.attr('enctype');
        _encoding = _form.attr('encoding');
        _form.attr('action', settings.formAction).attr('target', iframeID).attr('method', 'post').attr('enctype', 'multipart/form-data').attr('encoding', 'multipart/form-data').addClass('uploadForm').find(':input:not(:disabled)').not('._enabled').addClass('_disabled').attr('disabled', 'disabled');
        _iframe = _form.nextAll('iframe');
        $j.frame_ld = function() {
            $j = jQuery;
            result = _iframe.contents().find('body').html();
            if (result == null || result == '') {
                $j('#anhangen_text').val('');
                err_handle('Der Anhang konnte nicht gespeichert werden! Bitte versuchen Sie es erneut!');
            }
            else
            {
                $j('#lebenslauf').val(result);
            }
            setTimeout('_iframe.remove()', 10);
            _this.removeClass('_enabled').next().remove();
            _form.attr('action', _action).attr('target', _target).attr('method', _method).attr('enctype', _enctype).attr('encoding', _encoding).removeClass('uploadForm').find('._disabled').removeAttr('disabled').removeClass('_disabled');
            uploading = false;
        };
        setTimeout('_iframe.load(jQuery.frame_ld);', 50);
        _form.get(0).submit();
        _this.val('');
    }
})(jQuery);

jQuery(document).ready(function($j) {
    $j.switchPage();

    $j('#menu a').live('click', function() {
        var id = $j(this).attr('id');
        $j('#main').parent().removeClass(page);
        page = id.replace('link_', '');
        $j.switchPage();
        return false;
    });

    $j('button[type="submit"]').click(function() {
        var formObj = $j(this).parents('form');
        formObj.validate({
            submitHandler: function() {
                if (uploading) {
                    return;
                }
                var data = formObj.serialize();
                $j.ajax({
                    url: 'send.php',
                    data: data,
                    type: 'post',
                    success: function() {
                    },
                    error: function() {
                    }
                });
                alert('Nachricht erfolgreich gesendet!');
                formObj.get(0).reset();
                clearTimeout(al_timer);
                jQuery('#ajax_loader').hide();
                return false;
            },
            onfocusout: false,
            onclick: false,
            onkeyup: false,
            showErrors: function(errorMap, errorList) {
                if (errorList.length > 0) {
                    alert('Bitte alle Felder ausfüllen!');
                }
            }
        });
    });


    $j('#gallery').click(function() {
        $j('.loader').show();
        // $j.post('gallery.php', {page: page}, function(imagesData) {
        //     galleryTotal = imagesData['total'];
        //     if (galleryTotal) {
        //         $j('#gallery').hide();
        //         //$j('#main').addClass('gallery');
        //         inGallery = true;
        //         imageCache['gallery'] = {};
        //         $j.preloadImages(imagesData['images'], 'gallery');
        //         galleryPage = 0;
        //         $j.switchGalleryPage();
        //         $j('#next').removeClass('disabled');
        //         $j('#controls').show();
        //     }
        $j.get('gallery/gallery.txt',
               function(images) {
                   galleryTotal = images[page].length;
                   if (galleryTotal > 0)
                   {
                       $j('#gallery').hide();
                       //$j('#main').addClass('gallery');
                       inGallery = true;
                       imageCache['gallery'] = {};
                       $j.preloadImages(images[page], 'gallery');
                       galleryPage = 0;
                       $j.switchGalleryPage();
                       $j('#next').removeClass('disabled');
                       $j('#controls').show();
                   }
               },
               'json');
    });

    $j('#anhangen').change(function() {
        $j('#anhangen_text').val($j(this).val());
        $j.upload({
            inputObject: $j(this),
            formAction: 'upload.php',
            isImage: false,
            isCroppable: false
        });
    });

    $j('#prev').click(function() {
        $j.prevGalleryPage();
    });

    $j('#next').click(function() {
        $j.nextGalleryPage();
    });

    var al_timer;
    var cur_height = $j(document).height();
    var cur_width = $j(document).width();
    $j('body')
        .append('<div id="ajax_loader" style="display: none; visibility: hidden">')
        .ajaxStart(function() {
            $j('#ajax_loader').hide().height(cur_height).width(cur_width).css('visibility', 'hidden').show();
            al_timer = setTimeout(function() {
                jQuery('#ajax_loader').css('visibility', 'visible');
            }, 500);
        })
        .ajaxComplete(function() {
            clearTimeout(al_timer);
            setTimeout(function() {
                jQuery('#ajax_loader').hide();
            }, 200);
        });
});

