// jQuery Ready-Handler
$(function() {

    // Hide all elements which should be initially hidden
    $(".hidden").hide();


    // External Links
    $('a[rel*=external]').live("click", function(event) {
		window.open(this.href);
		return false;
	});


    // External Links
    $('a.infografikChange').live("click", function(event) {
        event.preventDefault();
		$("a.infografikChange").each(function(){
            $(this).removeClass("infografikChangeOn");
        });
        $(this).addClass("infografikChangeOn");
        //alert($('#column3').css('backgroundPosition'));

        if ($('#column3').css('background-position-x')) {
            var pos = parseInt($('#column3').css('background-position-x').split(' ')[0]);
        } else {
            var pos = parseInt($('#column3').css('background-position').split(' ')[0]);
        };

        //alert(pos);

        if (pos == '35') {$('#column3').css('backgroundPosition', '-555px 216px');} else { $('#column3').css('backgroundPosition', '35px 216px');}
		return false;
	});



    //Scrollpane
    if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i)) || (navigator.userAgent.match(/Android/i)) ) { $('.scroll-pane').jScrollTouch();} else { $('.scroll-pane').jScrollPane({showArrows:true});}

});

(function($){

     var $t;
     var $t2;
     var $requestAnimationsFinished = 'false';
     var $body = $(document.body),
     $submenu = $('#subNav'),
     $layer1 = $('#layer1'),
     $layer2 = $('#layer2');

     $.Ajaxy.configure({

         'options': {relative_as_base : false,debug : false},

         'Controllers': {


             // Controller //
             // Generic Controller for Title and Reload-Check //
             /////////////////////////////////////////
             '_generic': {

                 request: function(){
                     $.blockUI({overlayCSS:  {  backgroundColor: 'rgba(255, 255, 255, 0.5)' },message: null });
                     $requestAnimationsFinished = 'false';
                     var Ajaxy = $.Ajaxy;
                     // Reset Error
                     $("#errorMessage").hide();
                     return true;
                 },

                 response: function(){
                     var Ajaxy = $.Ajaxy; var data = this.State.Response.data; var state = this.state||'unknown';
                     // Title
                    var title = data.title||false; // if we have a title in the response JSON
                    if ( !title && this.state||false ) title = 'jQuery Ajaxy - '+this.state; // if not use the state as the title
                    if ( title ) document.title = title; // if we have a new title use it
                    // Re-Initiate 3rd Party Skripts
                    $(".tiptip").tipTip({defaultPosition: "top",maxWidth: "300px"});
                    $("a.tiptip").click(function(event) 		 {event.preventDefault();});
                    $("#tiptip_holder").click(function(event) {tiptip_holder.fadeOut(200);});
                    $("a[rel^=\'prettyPhoto\']").prettyPhoto({theme: 'light_square'});
                    //Scrollpane
                    if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i)) || (navigator.userAgent.match(/Android/i)) ) { $('.scroll-pane').jScrollTouch();} else { $('.scroll-pane').jScrollPane({showArrows:true});}
                    return true;
                 },

                 error: function(){
                     var Ajaxy = $.Ajaxy; var data = this.State.Error.data||this.State.Response.data; var state = this.state||'unknown';
                     // Error
                     var error = data.error||data.responseText||'Unknown Error.';
                     var error_message = data.content||error;
                     return true;
                 }
             },


             // Controller //
             // Column 3 and 2 Change with Main Menu Change //
             /////////////////////////////////////////////////
             'ajaxy-column3and2': {

                 classname: 'ajaxy-column3and2',

                 request: function(){

                     var Ajaxy = $.Ajaxy;

                     // Rausfinden ob Column2 raus muss
                     var test = Ajaxy.currentState.hash;
                     pathArray = test.split( '/' );
                     newPathMainNavOn = '.contentColumn2_'+pathArray[1]+'';

                     //Layer 1 Raus falls nicht da..
                     if ( $(newPathMainNavOn).length == 0 ) {
                         //Main Menu Reset
                         $("a.ajaxy-column3and2").each(function(){
                            var NavelementID = $(this).attr('id')+'_on';
                            $("a."+NavelementID).each(function(){
                        	   $(this).removeClass(NavelementID);
                            });
                         });
                         $("#layer2").stop(false,false).animate({left:'-840', useTranslate3d:true},1000, function() {
                            $("#layer1").stop(false,false).animate({left:'-840', useTranslate3d:true},1000, function() {
                                 $requestAnimationsFinished = 'true';
                            });
                         });
                     } else {
                         // Sub-Menu Reset
                         $("a.subNavOn").each(function(){ $(this).removeClass('subNavOn');});
                         $("#layer2").stop(false,false).animate({left:'-840', useTranslate3d:true},1000, function() {
                             $requestAnimationsFinished = 'true';
                         });
                     }

                     return true;

                 },

                 refresh: function(){return true;},

                 response: function(){

                    var Ajaxy = $.Ajaxy; var data = this.State.Response.data; var state = this.state; var State = this.State;
                    var Action = this;

                        if( $requestAnimationsFinished == 'false') {

                            $t=setTimeout(function(){Ajaxy.trigger('ajaxy-column3and2', 'response', State);},200);

                        } else  {

                            clearTimeout($t);

                            if ( $(newPathMainNavOn).length == 0 ) {

                                $('#layer1').html(data.column2);
                                $('#layer2').html(data.column3);
                                // Set Main Menu
                                var test = State.raw.state;
                                pathArray = test.split( '/' );
                                newPath = '/'+pathArray[1]+'/'+pathArray[2]+'/'+pathArray[3]+'/';
                                newPathMainNav = 'nav_'+pathArray[1];
                                newPathMainNavOn = 'nav_'+pathArray[1]+'_on';
                                $('#'+newPathMainNav).addClass(newPathMainNavOn);
                                if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i)) || (navigator.userAgent.match(/Android/i)) ) { $('.scroll-pane').jScrollTouch();} else { $('.scroll-pane').jScrollPane({showArrows:true});}
                                //Animate
                                $("#layer1").animate({left:'0',useTranslate3d:true},1000, function() {
                                    $("#layer2").animate({left:'0',useTranslate3d:true},1000, function() {
                                        Action.documentReady($layer1);
                                        Action.documentReady($layer2);
                                        $.unblockUI();

                        			});
                                });

                            } else {

                                $('#layer2').html(data.column3);
                                // Sub-Menu Set
                                var test = State.raw.state;
                                pathArray = test.split( '/' );
                                newPath = '/'+pathArray[1]+'/'+pathArray[2]+'/';
                                $('#subNav a.ajaxy-column3and2[href*="'+HTTP_ROOT+newPath+'"]').addClass('subNavOn');
                                if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i)) || (navigator.userAgent.match(/Android/i)) ) { $('.scroll-pane').jScrollTouch();} else { $('.scroll-pane').jScrollPane({showArrows:true});}
                                //Animate
                                $("#layer2").animate({left:'0',useTranslate3d:true},1000, function() {
                                    Action.documentReady($layer2);
                                    $.unblockUI();
                    			});

                            }

                        }

                    return true;
                 }
             },



             // Controller //
             // Gallery Change //
             ////////////////////
             'gallery': {

                 classname: 'ajaxy-gallery',
                 //matches: /bildergalerie[A-Za-z0-9-]*\/$/,

                 request: function(){
                     var Ajaxy = $.Ajaxy;

                     //Main Menu Reset
                         $("a.ajaxy-column3and2").each(function(){
                            var NavelementID = $(this).attr('id')+'_on';
                            $("a."+NavelementID).each(function(){
                        	   $(this).removeClass(NavelementID);
                            });
                         });

                     $("#layer2").stop(false,false).animate({left:'-840', useTranslate3d:true},1000, function() {
                         $("#layer1").stop(false,false).animate({left:'-840', useTranslate3d:true},1000, function() {
                             $requestAnimationsFinished = 'true';
                        });
                     });
                     return true;
                 },

                 refresh: function(){return true;},

                 response: function(){

                    var Ajaxy = $.Ajaxy; var data = this.State.Response.data; var state = this.state; var State = this.State;
                    var Action = this;

                    if( $requestAnimationsFinished == 'false') {

                        $t=setTimeout(function(){Ajaxy.trigger('gallery', 'response', State);},200);

                    } else  {

                        clearTimeout($t);
                        // Set Main Menu
                                var test = State.raw.state;
                                pathArray = test.split( '/' );
                                newPath = '/'+pathArray[1]+'/'+pathArray[2]+'/'+pathArray[3]+'/';
                                newPathMainNav = 'nav_'+pathArray[1];
                                newPathMainNavOn = 'nav_'+pathArray[1]+'_on';
                                $('#'+newPathMainNav).addClass(newPathMainNavOn);
                        $('#layer1').html(data.column2);
                        $("#layer1").animate({left:'0',useTranslate3d:true},1000, function() {
                            $('#layer2').html(data.bigImg);
                            $('#backButton').hide();
                            //$('.galleryTextBox').hide();
                            // Check if Image is Loaded completely
                            $('#galleryImageBig').load(function() {
                            	$("#layer2").animate({left:'0',useTranslate3d:true},1000, function() {
                                    $('#backButton').fadeIn('slow');
                                    //$('.galleryTextBox').fadeIn('slow');
                                    Action.documentReady($layer1);
                            	    Action.documentReady($layer2);
                            	    $.unblockUI();
                            	});
                            });
                        });
                    }

                    return true;
                 }
             },



             // Controller //
             // Gallery Image Change with Thumbnail Change //
             ////////////////////////////////////////////////
             'gallery-image': {

                 classname: 'ajaxy-gallery-image',
                 //matches: /bildergalerie[A-Za-z0-9-]*\/[0-9]/,

                 request: function(){

                    var Ajaxy = $.Ajaxy;

                    if ( $('a.thumbActive').length == 0 ) {
                        //Main Menu Reset
                         $("a.ajaxy-column3and2").each(function(){
                            var NavelementID = $(this).attr('id')+'_on';
                            $("a."+NavelementID).each(function(){
                        	   $(this).removeClass(NavelementID);
                            });
                         });
                        $("#layer2").stop(false,false).animate({left:'-840', useTranslate3d:true},1000, function() {
                             $("#layer1").stop(false,false).animate({left:'-840', useTranslate3d:true},1000, function() {
                                 $requestAnimationsFinished = 'true';
                            });
                         });
                    } else {
                        // Thumbnail Change
                        $('a.thumbActive').removeClass('thumbActive');
                        $('a.ajaxy-gallery-image[href=' + HTTP_ROOT+window.location.hash.substring(1) + ']').addClass('thumbActive');
                        // Back Button and Tex-Block Fade-Out
                        //$('.galleryTextBox').fadeOut('slow');
                        $('#backButton').fadeOut('slow', function() {
                            // Animation Layer 2
                            $("#layer2").stop(false,false).animate({left:'-840', useTranslate3d:true},1000, function() {
                                 $requestAnimationsFinished = 'true';
                            });
                            return true;
                        });
                    }

                 },

                 refresh: function(){return true;},

                 response: function(){

                    var Ajaxy = $.Ajaxy; var data = this.State.Response.data; var state = this.state; var State = this.State;
                    var Action = this;

                    if( $requestAnimationsFinished == 'false') {

                        $t=setTimeout(function(){Ajaxy.trigger('gallery-image', 'response', State);},200);

                    } else  {

                        clearTimeout($t);
                        if ( $('a.thumbActive').length == 0 ) {

                            // Set Main Menu
                            var test = State.raw.state;
                            pathArray = test.split( '/' );
                            newPath = '/'+pathArray[1]+'/'+pathArray[2]+'/'+pathArray[3]+'/';
                            newPathMainNav = 'nav_'+pathArray[1];
                            newPathMainNavOn = 'nav_'+pathArray[1]+'_on';
                            $('#'+newPathMainNav).addClass(newPathMainNavOn);

                            $('#layer1').html(data.column2);
                            $("#layer1").animate({left:'0',useTranslate3d:true},1000, function() {
                                $('#layer2').html(data.bigImg);
                                $('#backButton').hide();
                                //$('.galleryTextBox').hide();
                                // Check if Image is Loaded completely
                                $('#galleryImageBig').load(function() {
                                	$("#layer2").animate({left:'0',useTranslate3d:true},1000, function() {
                                        $('#backButton').fadeIn('slow');
                                        //$('.galleryTextBox').fadeIn('slow');
                                        Action.documentReady($layer1);
                                	    Action.documentReady($layer2);
                                	    $.unblockUI();
                                	});
                                });
                            });
                        } else {

                            $('#layer2').html(data.bigImg);
                            $('#backButton').hide();
                            //$('.galleryTextBox').hide();
                            // Check if Image is Loaded completely
                            $('#galleryImageBig').load(function() {
                            	$("#layer2").animate({left:'0',useTranslate3d:true},1000, function() {
                                    $('#backButton').fadeIn('slow');
                                    //$('.galleryTextBox').fadeIn('slow');
                                    Action.documentReady('#layer2');
                                    $.unblockUI();
                            	});
                            });
                        }
                    }

                    return true;

                 }

             },




             //////////////////////////
             // Controller DEEPLINKS //
             //////////////////////////


             // Deeplink-Controller //
             // For Everything except Galleries //
             /////////////////////////////////////
             'ajaxy-deeplink': {

                 // Dummy-Classname - no classes asigned in DOM
                 classname: 'ajaxy-deeplink',
                 // Regex Match for URL Detection - Matches Everything that does NOT contain @bildergalerie@
                 matches: /^(?:(?!bildergalerie).)*$/,

                 request: function(){
                     var Ajaxy = $.Ajaxy;
                     // Main Menu Reset
                     $("a.ajaxy-column3and2").each(function(){
                        var NavelementID = $(this).attr('id')+'_on';
                        $("a."+NavelementID).each(function(){
                    	   $(this).removeClass(NavelementID);
                        });
                     });
                     $("#layer2").stop(false,false).animate({left:'-840', useTranslate3d:true},1000, function() {
                         $("#layer1").stop(false,false).animate({left:'-840', useTranslate3d:true},1000, function() {
                             $requestAnimationsFinished = 'true';
                         });
                     });
                     return true;
                 },

                 response: function(){

                    var Ajaxy = $.Ajaxy; var data = this.State.Response.data; var state = this.state; var State = this.State;
                    var Action = this;

                    if( $requestAnimationsFinished == 'false') {

                        $t=setTimeout(function(){Ajaxy.trigger('ajaxy-deeplink', 'response', State);},200);

                    } else  {

                        clearTimeout($t);
                        $('#layer1').html(data.column2);
                        $('#layer2').html(data.column3);
                        // Main Menu Set
                        var test = State.raw.state;
                        pathArray = test.split( '/' );
                        newPath = '/'+pathArray[1]+'/'+pathArray[2]+'/'+pathArray[3]+'/';
                        newPathMainNav = 'nav_'+pathArray[1];
                        newPathMainNavOn = 'nav_'+pathArray[1]+'_on';
                        $('#'+newPathMainNav).addClass(newPathMainNavOn);
                        if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i)) || (navigator.userAgent.match(/Android/i)) ) { $('.scroll-pane').jScrollTouch();} else { $('.scroll-pane').jScrollPane({showArrows:true});}
                        // Animation Layers
                        $("#layer1").animate({left:'0',useTranslate3d:true},1000, function() {
                            // Sub Menu Set
                            var test = State.raw.state;
                            pathArray = test.split( '/' );
                            newPath = '/'+pathArray[1]+'/'+pathArray[2]+'/';
                            $('#subNav a.ajaxy-column3-submenu[href*="'+HTTP_ROOT+newPath+'"]').addClass('subNavOn');
                            $("#layer2").animate({left:'0',useTranslate3d:true},1000, function() {
                                Action.documentReady($layer1);
                                Action.documentReady($layer2);
                                $.unblockUI();
                			});
                        });

                    }


                    return true;
                 }
             },






             // Deeplink-Controller //
             // For Image-Galleries //
             /////////////////////////////////////
             'ajaxy-deeplink-gallery': {

                 // Dummy-Classname - no classes asigned in DOM
                 classname: 'ajaxy-gallery-image-deeplink',
                 matches: /bildergalerie/,

                 request: function(){
                     var Ajaxy = $.Ajaxy;
                     // Main Menu Reset
                     $("a.ajaxy-column3and2").each(function(){
                        var NavelementID = $(this).attr('id')+'_on';
                        $("a."+NavelementID).each(function(){
                    	   $(this).removeClass(NavelementID);
                        });
                     });
                     $("#layer2").stop(false,false).animate({left:'-840', useTranslate3d:true},1000, function() {
                          $("#layer1").stop(false,false).animate({left:'-840', useTranslate3d:true},1000, function() {
                             $requestAnimationsFinished = 'true';
                         });
                     });
                     return true;
                 },

                 response: function(){

                    var Ajaxy = $.Ajaxy; var data = this.State.Response.data; var state = this.state; var State = this.State;
                    var Action = this;
                    if( $requestAnimationsFinished == 'false') {

                        $t=setTimeout(function(){Ajaxy.trigger('ajaxy-deeplink-gallery', 'response', State);},200);

                    } else  {

                        clearTimeout($t);
                        // Main Menu Set
                        var test = State.raw.state;
                        pathArray = test.split( '/' );
                        newPath = '/'+pathArray[1]+'/'+pathArray[2]+'/'+pathArray[3]+'/';
                        newPathMainNav = 'nav_'+pathArray[1];
                        newPathMainNavOn = 'nav_'+pathArray[1]+'_on';
                        $('#'+newPathMainNav).addClass(newPathMainNavOn);
                        // Animation Layers
                        $('#layer1').html(data.column2);
                        $("#layer1").animate({left:'0',useTranslate3d:true},1000, function() {
                            $('#layer2').html(data.bigImg);
                            $('#backButton').hide();
                            //$('.galleryTextBox').hide();
                            $('#galleryImageBig').load(function() {
                            	$("#layer2").animate({left:'0',useTranslate3d:true},1000, function() {
                                    $('#backButton').fadeIn('slow');
                                    //$('.galleryTextBox').fadeIn('slow');
                                    Action.documentReady($layer1);
                            	    Action.documentReady($layer2);
                            	    $.unblockUI();
                            	});
                            });
                        });
                    }
                    return true;
                 }
             }

         }
     });

     // All done
 })(jQuery);
 // Back to global scope

