//preload images plugin
(function($) {
    var cache = [];
    // Arguments are image paths relative to the current page.
    $.preLoadImages = function() {
        if(arguments[0] != undefined){
            var args_len = arguments[0].length;
            for (var i = args_len; i--;) {
                var cacheImage = document.createElement('img');
                cacheImage.src = arguments[0][i];
                cache.push(cacheImage);
            }
        }
    }
})(jQuery)

// source
$(document).ready(function()
{
    var galleries;
    var dataString = 'id='+connID;
    $.ajax({
        type: "POST",
        url: "imgsrch.php",
        data: dataString,
        dataType: "json",
        success: function(data) {
            if(data)
            {
                galleries = data;
                galleries.current = 0;
            }
        },
        statusCode: {
            500: function()
            {
                console.log("500");
            }
        }
    });
    var imgs = "<img src=\"";
    var imge = "\">";
    var img_nav_s = "<img style=\"z-index:10;position:relative;top:";
    var imge_b = "\"  alt=\"Back\">";
    var imge_n = "\"  alt=\"Next\">";
    jQuery.preLoadImages(initial_images);

    //start from index 3
    var selectedIndex = 3;

    //setup element variables
    var $indexBlock = $(".index_block");
    var $block1 = $('#block1');
    var $block2 = $('#block2');
    var $image1 = $('#img1');
    var $image2 = $('#img2');
    var $back = $(".back");
    var $tooltip = $("#tooltip");
    var $gal_layer = $("#gallery_layer");
    var $gallery  = $("#gallery");
    var $block_holder;

    //speed and easing settings
    var speed = 800;
    var back_speed = 1200;
    var img_speed = 880;
    var eas_back = "easeInOutQuart";
    var eas_block = "easeInOutQuart";
    var eas_image = "easeInOutCubic";

    var contact_form_visible = false;
    $('#contact_closer').css({
        opacity: 0
    });
    $("#feedb, #fclose, #contact_closer").click(function(event){
        event.preventDefault();
        if($("*").is(":animated"))
            return;
        var ospeed = 400;
        var cspeed = 200;
        if(!contact_form_visible)
        {
            $("#contact_submit").attr("disabled", false);

            $("#req_star").css("color", "#ffad00");
            $("#feedback_form:hidden").show();
            $("#inner_feedf").removeClass("form_red");

            $('#inner_feedf:hidden').show();
            $('#feedf').fadeIn();
            $("#navigation_container, #gallery_layer").css({
                opacity: 0.4
            });
            $(".menuContainer").css({
                opacity: 0.3
            });
            $('#contact_layer:hidden').show();
            $('#contact_closer:hidden').show();
            $("#submit_success:visible").hide();
            $("#submit_failure:visible").hide();
            $tooltip.hide();
            $("#icontact").blur();
            $('#feedf').animate(
            {
                height : '508'
            }, ospeed
            );
            $('#inner_feedf').animate(
            {
                top: '0'
            }, ospeed
            );
        }
        else
        {
            if(this.id == "contact_closer")
            {
                $('#feedf').fadeOut(cspeed, function(){
                    $('#inner_feedf').css("top", "-528px");
                    $('#feedf').css("height", "0px");
                    $('#contact_closer').hide();
                    $('#contact_layer').hide();
                    $("#navigation_container, .menuContainer, #gallery_layer").css({
                        opacity: 1.0
                    });
                });
            }
            else
            {
                $('#feedf').animate(
                {
                    height : '0'
                }, cspeed);
                $('#inner_feedf').animate(
                {
                    top: '-528'
                }, cspeed, function(){
                    $('#contact_layer').hide();
                    $('#contact_closer').fadeOut(cspeed);
                    $("#navigation_container, .menuContainer, #gallery_layer").css({
                        opacity: 1.0
                    });
                }
                );
            }
        }
        contact_form_visible = !contact_form_visible;
    });
    $("#tooltip").corner("5px");
    $("#iname, #icontact, #itext").mouseenter(function(event){
        event.preventDefault();
        var $focused = $(document.activeElement);
        var id = $focused.attr("id");
        if( !(("iname" == id) ||
            ("icontact" == id) ||
            ("itext" == id)))
            {
            var tIndex = 0;
            if(this.id == "icontact") tIndex = 1;
            if(this.id == "itext") tIndex = 2;
            $tooltip.css("top", tooltips[tIndex][0]);
            $tooltip.css("left", tooltips[tIndex][1]);
            $tooltip.children("#ttext").html(tooltips[tIndex][2]);
            $tooltip.removeClass("tooltip_red");
            $tooltip.addClass("tooltip_yellow");
            $(".tooltip_pointer").html("<img style=\"position:relative;top:-8px;\" src=\"images/hintarrowyellow.png\">");
            $tooltip.show();
        }
    });
    $("#iname, #icontact, #itext").mouseleave(function(event){
        event.preventDefault();
        var $focused = $(document.activeElement);
        var id = $focused.attr("id");
        if( !(("iname" == id) ||
            ("icontact" == id) ||
            ("itext" == id)))
            {
            $tooltip.hide();
        }
    });
    $("#iname, #icontact, #itext").focus(function(event){
        var tIndex = 0;
        if(this.id == "icontact") tIndex = 1;
        if(this.id == "itext") tIndex = 2;
        $tooltip.clearQueue();
        if($("#req_star").css("color") == "rgb(244, 59, 40)" && tIndex == 1)
        {
            $tooltip.css("top", tooltips[3][0]);
            $tooltip.css("left", tooltips[3][1]);
            $tooltip.children("#ttext").html(tooltips[3][2]);
            $tooltip.removeClass("tooltip_yellow");
            $tooltip.addClass("tooltip_red");
            $(".tooltip_pointer").html("<img style=\"position:relative;top:-8px;\" src=\"images/hintarrowred.png\">");
        }
        else
        {
            $tooltip.css("top", tooltips[tIndex][0]);
            $tooltip.css("left", tooltips[tIndex][1]);
            $tooltip.children("#ttext").html(tooltips[tIndex][2]);
            $tooltip.removeClass("tooltip_red");
            $tooltip.addClass("tooltip_yellow");
            $(".tooltip_pointer").html("<img style=\"position:relative;top:-8px;\" src=\"images/hintarrowyellow.png\">");
        }
        $tooltip.fadeIn();
        if($(this).val() == $("#"+this.id+"_label").text())
        {
            $(this).css("color", "black");
            $(this).val("");
        }
    });
    $("#iname, #icontact, #itext").focusout(function(event){
        event.preventDefault();
        if($(this).val() == "")
        {
            $(this).css("color", "#b4a18b");
            $(this).val($("#"+this.id+"_label").text());
        }
        $tooltip.hide();
    });
    $(".t1, .t2, .t3, .t4, .t5").mouseenter(function() {
        if(!$(this).hasClass("normal_cursor"))
        {
            $(this).css("color", "white");
        }
    });
    $(".t1, .t2, .t3, .t4, .t5").mouseleave(function() {
        if(!$(this).hasClass("normal_cursor"))
        {
            $(this).css("color", "#c9c9c9");
        }
    });
    $("#contact_form").submit(function(event){
        event.preventDefault();
        var notfilled = false;
        var name = $("#iname").attr("value");
        var contact = $("#icontact").attr("value");
        var text = $("#itext").val();
        if (  !(contact == "" ||
            contact == $("#icontact_label").html()))
            {
            var email_reg = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
            var isEmail = email_reg.test(contact);
            var tel_reg = /^[0\+]+[0-9\-\s\(\)]{8,}/;
            var isTelephone = tel_reg.test(contact);
            var email="";
            var phone="";
            if(!isEmail && isTelephone || isEmail && !isTelephone)
            {
                notfilled = false;
                if(isEmail) email = contact;
                if(isTelephone) phone = contact;
                var dataString = 'name='+ name + '&email=' + email + '&phone=' + phone+'&text=' + text;
                $.ajax({
                    type: "POST",
                    url: "mail.php",
                    data: dataString,
                    success: function(data) {
                        if(data == "ok")
                        {
                            $tooltip.hide();
                            $("#feedback_form").hide();
                            $("#iname").css("color", "#b4a18b");
                            $("#iname").val($("#iname_label").text());
                            $("#icontact").css("color", "#b4a18b");
                            $("#icontact").val($("#icontact_label").text());
                            $("#itext").css("color", "#b4a18b");
                            $("#itext").val($("#itext_label").text());
                            $("#inner_feedf").removeClass("form_red");
                            $("#submit_failure").hide();
                            $("#submit_success").show().delay(2000).queue(function()
                            {
                                $('#feedf').fadeOut(200, function(){
                                    $('#inner_feedf').css("top", "-528px");
                                    $('#feedf').css("height", "0px");
                                    $('#contact_closer').hide();
                                    $('#contact_layer').hide();
                                    $(".navigation, .menuContainer, #gallery_layer").css({
                                        opacity: 1.0
                                    });
                                    contact_form_visible = false;
                                }
                                );
                                $(this).dequeue();
                            }
                            );
                            contact_form_visible = false;
                        }
                        else
                        {
                            $tooltip.hide();
                            $("#feedback_form").hide();
                            $("#inner_feedf").addClass("form_red");
                            $("#submit_success").hide()
                            $("#submit_failure").show();
                        }
                    }
                });
            }
            else notfilled = true;
        }
        else notfilled = true;
        if(notfilled)
        {
            $("#req_star").css("color", "#f43b28");
            $("#icontact").focus();
            $tooltip.show();
        }
    });
    $("#fretry").click(function(event){
        event.preventDefault();
        $("#loading_img").show().queue(function(){
            $("#req_star").css("color", "#ffad00");
            $("#contact_submit").attr("disabled", true);
            $("#inner_feedf").removeClass("form_red");
            $("#feedback_form").show();
            $("#submit_success").hide();
            $("#submit_failure").hide().delay(1000).queue(function(){

                $("#contact_form").submit().queue(function(){
                    $("#contact_submit").attr("disabled", false);
                    $("#loading_img").hide();
                    $(this).dequeue();
                });
                $(this).dequeue();
            });
            $tooltip.hide();
            $("#icontact").blur();
            $(this).dequeue();
        });
    });
    var cur_img = 1;
    $img = $("#top_img");
    $img_back = $("#back_img");
    //gallery image switchings
    var cycle_images = function(event){
        event.preventDefault();
        //if something is currently being animated, break
        if($("*").is(":animated"))
            return;
        var str = $(this).attr('class');
        var index = parseInt(str.substring(2));

        //find place for the invisible element
        var farRight = parseInt($(window).width()) + 100;
        if(farRight < 1200) farRight = 1200;
        var farLeft = -farRight;
        var old_img = cur_img;
        if(index == 0)
        {
            if(cur_img == galleries["d"+galleries.current].length) cur_img = 1;
            else cur_img ++;
        }
        else cur_img = index;

        index = cur_img;
        $img_back.css({
            opacity: 1.0
        });
        $img_back.fadeIn();
        $img_back.css("backgroundImage", "url('"+galleries["d"+galleries.current][cur_img-1]+"')");
        $img.fadeOut({
            duration: speed/2, 
            easing: eas_block, 
            complete: function(event){
                $(".th"+cur_img).children("div").removeClass("img_thumb");
                $(".th"+cur_img).children("div").addClass("img_thumb_active");
                for(var i=1; i <= galleries["d"+galleries.current].length; i++)
                {
                    if(i!=cur_img)
                    {
                        $(".th"+i).children("div").removeClass("img_thumb_active");
                        $(".th"+i).children("div").addClass("img_thumb");
                    }
                }
            }
        });
    var $img_temp = $img;
    $img = $img_back;
    $img_back = $img_temp;
    };
    $(".th0").bind("click",cycle_images);
var teaser_selected=false;
//menu click handler
var click_handler = function(event){
    event.preventDefault();
    //if background is currently being animated, break
    if($back.is(":animated"))
        return;
    //get clicked element index. back/next are 7 and 8 for now )
    var str = $(this).attr('class');
    var index = parseInt(str.substring(1));

    var error = false;

    if($("#feedf").is(":visible"))
    {
        error = true;
    }
    //break if clicked on a selected index
    if(selectedIndex == index)
        if(!teaser_selected) error = true;
    if(!error && index == 7)
    {
        if(selectedIndex != 1) index = selectedIndex - 1;
        else error = true;
    }
    if(!error && index == 8)
    {
        if(selectedIndex != 5) index = selectedIndex + 1;
        else error = true;
    }
    var teaserIndex = 0;
    if(!error && (index > 10 && index < 20))
    {
        teaser_selected = true;
        teaserIndex = index - 11;
        index = selectedIndex;
    }
    else
    {
        teaser_selected = false;
        if(index % 10 == 0)
        {
            index = index / 10;
            teaserIndex = 0;
        }
    }
    if(!error) //no error
    {
        //put new data and image into hidden blocks
        $block1.css("zIndex", "1");
        $block2.css("zIndex", "1")
        $image1.css("zIndex", "1");
        $image2.css("zIndex", "-5");
        $image2.parents(".bg_img").show();
        if(index != 3) $image2.parents(".bg_img").css("zIndex", "-1");
        else $image2.parents(".bg_img").css("zIndex", "1");
        if($block_holder == null && selectedIndex == index && teaserIndex == 0 && teaser_selected)
        {
            cur_img = 1;
            jQuery.preLoadImages(galleries["d"+index]);
            galleries.current = index;
            $img.css("backgroundImage", "url('"+galleries["d"+index][0]+"')");
            var thumbs = '<a href="#" class="th1"><div class="img_thumb_active"></div></a>';
            for(var i=1;i<galleries["d"+index].length;i++)
            {
                thumbs += '<a href="#" class="th'+(i+1)+'"><div class="img_thumb"></div></a>';
                $(".th"+(i+1)).bind("click", cycle_images);
            }
            $("#thumbs_stars").html(thumbs);
            for(var i=0;i<galleries["d"+index].length;i++)
            {
                $(".th"+(i+1)).bind("click", cycle_images);
            }
            var gal_back_links = new gbl();
            $("#gal_main").html(gal_back_links.getMain(index));
            $(".g"+index).bind("click", click_handler);
            $gal_layer.show();
            $block_holder = $block2;
            $block2 = $gallery;
        }
        else
        {
            if($block_holder == null)
            {
                $gal_layer.hide();
            }
            $block2.children(".block").children(".title").html(titles[index][teaserIndex]);
            $block2.children(".block").children(".textbody").html(data[index][teaserIndex]);

            var tabs = [];
            var tabbacks = [];
            var tab_str = "";
            var tab_bg_str = "";
            if(index == 1) // shake
            {
                $block2.show();
                $image2.show();
                $image2.children(".content_image").html(imgs+images[index-1][teaserIndex]+imge);
                $block2.children(".block").children(".textbody").show();
                $block2.children(".block").children(".textbody").css("height", "90");
                if(teaserIndex == 0)
                {
                    tabs[0] = new Tab(gallery_tab.tab);
                    tabs[0].setText(gallery_tab.text);
                    tabs[0].setImg(gallery_tab.img);
                    tabs[1] = new Tab(coctail_tab.tab);
                    tabs[1].setText(coctail_tab.text);
                    tabs[1].setImg(coctail_tab.img);
                    tabbacks[0] = new TeaserBg({right: 0, width: 199});
                    tabbacks[1] = new TeaserBg({right: 202, width: 209});
                }
                if(teaserIndex == 1)
                {
                    tabs[0] = new Tab(shakes_tab.tab);
                    tabs[0].setText(shakes_tab.text);
                    tabs[0].setImg(shakes_tab.img);
                    tabbacks[0] = new TeaserBg({right: 0, width: 199});
                    $block2.children(".block").children(".textbody").css("height", "72");
                }
            }
            else if(index == 2)
            {
                $image2.hide();
                $block2.show();
                $block2.append($("#alc"));
                $("#alc").show();
                $block2.children(".block").children(".textbody").hide();
            }
            else if(index == 3)
            {
                $image2.show();
                $block2.hide();
                $image2.children(".content_image").html(imgs+images[index-1][0]+imge);
                $(".index_block").prependTo($image2);
                $(".index_block").show();
            }
            else if(index == 4)
            {
                $image2.show();
                $block2.show();
                $block2.children(".block").children(".textbody").show();
                $block2.children(".block").children(".textbody").css("height", "72");
                $image2.children(".content_image").html(imgs+images[index-1][teaserIndex]+imge);
                if(teaserIndex == 0)
                {
                    tabs[0] = new Tab(gallery_tab.tab);
                    tabs[0].setText(gallery_tab.text);
                    tabs[0].setImg(gallery_tab.img);
                    tabs[1] = new Tab(tea_tab.tab);
                    tabs[1].setText(tea_tab.text);
                    tabs[1].setImg(tea_tab.img);
                    tabbacks[0] = new TeaserBg({right: 0, width: 199});
                    tabbacks[1] = new TeaserBg({right: 202, width: 219});
                }
                if(teaserIndex == 1)
                {
                    tabs[0] = new Tab(coffee_tab.tab);
                    tabs[0].setText(coffee_tab.text, index);
                    tabs[0].setImg(coffee_tab.img);
                    tabbacks[0] = new TeaserBg({left: 0, width: 199});
                    $block2.children(".block").children(".textbody").css("height", "90");
                }
            }
            else if(index == 5)
            {
                $image2.show();
                $block2.show();
                $block2.children(".block").children(".textbody").show();
                $image2.children(".content_image").html(imgs+images[index-1][teaserIndex]+imge);
                if(teaserIndex == 0)
                {
                    //tabs[0] = new Tab(gallery_tab.tab);
                    //tabs[0].setText(gallery_tab.text);
                    //tabs[0].setImg(gallery_tab.img);
                    //tabs[0].setTabFloat("left");
                    //tabs[1] = new Tab(cookie_tab.tab);
                    //tabs[1].setText(cookie_tab.text);
                    //tabs[1].setImg(cookie_tab.img);
                    //tabbacks[0] = new TeaserBg({left: 0, width: 209});
                    //tabbacks[1] = new TeaserBg({left: 212, width: 219});
                    tabs[0] = new Tab(cookie_tab.tab);
                    tabs[0].setText(cookie_tab.text);
                    tabs[0].setImg(cookie_tab.img);
                    tabbacks[0] = new TeaserBg({left: 0, width: 209});
                    $block2.children(".block").children(".textbody").css("height", "54");
                }
                if(teaserIndex == 1)
                {
                    tabs[0] = new Tab(muffin_tab.tab);
                    tabs[0].setText(muffin_tab.text, index);
                    tabs[0].setImg(muffin_tab.img);
                    tabbacks[0] = new TeaserBg({left: 0, width: 199});
                    $block2.children(".block").children(".textbody").css("height", "54");
                }
            }
            if(tabs.length != 0 || tabbacks.length != 0)
            {
                var ind;
                for(ind = 0; ind < tabs.length; ind++)
                    tab_str += tabs[ind].getTab()+"\n";
                for(ind = 0; ind < tabbacks.length; ind++)
                    tab_bg_str += tabbacks[ind].getBg()+"\n";
                $block2.children(".tabs").html(tab_bg_str + tab_str);
                $block2.children(".tabs").show();
                $(".t10, .t20, .t30, .t40, .t50, .t11, .t12, .t13").bind("click", click_handler);
            }
            else
            {
                $block2.children(".tabs").hide();
            }
        }

        //find place for the invisible element
        var farRight = parseInt($(window).width()) + 100;
        if(farRight < 1200) farRight = 1200;
        var farLeft = -farRight;

        //if we are incrementing index, current block should
        //fly away to the left and a new one should come from the right
        var invStartFrom = farLeft;
        if(selectedIndex < index) invStartFrom = farRight;
        $block2.css("left", invStartFrom);
        $image2.css("left", invStartFrom);
        var visGoTo = farRight;
        if(selectedIndex < index) visGoTo = farLeft;

        //set the height at which the image of the block should slide in
        var top_coord = image_positions[index][teaserIndex].top;
        $image2.css("top", ""+top_coord+"px");
        var left_coord = image_positions[index][teaserIndex].left;

        //animations
        var w = parseInt($(window).width());
        $block1.animate({
            left: visGoTo
        }, {
            duration: speed,
            easing: eas_block
        });
        $block2.animate({
            left: 0
        }, {
            duration: speed,
            easing: eas_block
        });
        $image1.animate({
            left: visGoTo
        }, {
            duration: img_speed,
            easing: eas_image,
            complete: function(){
                $(this).parents(".bg_img").hide();
            }
        });
        if(selectedIndex != index || teaserIndex != 0 || teaser_selected == false)
        {
            $image2.animate({
                left: left_coord
            }, {
                duration: img_speed,
                easing: eas_image
            });
        }
        var backLeft = 0;
        if(index == selectedIndex)
        {
            backLeft = $back.css("left");
        }
        else
        {
            backLeft = ((w/2) - (index+2)*1000);
        }
        $back.animate(
        {
            left: backLeft
        },

        {
            duration: back_speed,
            easing: eas_back,
            complete: function(){
                $('.t7').html(img_nav_s + back_next_arr[index][0] + imge_b);
                $('.t8').html(img_nav_s + back_next_arr[index][1] + imge_n);

                //highlight selected element and set default view for unselected elements
                for(var i=1; i < 6; i++)
                {
                    var $tx = $(".t"+i).filter(function(index){
                      return $(this).hasClass("index_link") == false;
                    });
                    if(i != index)
                    {
                        if(i!=3) $tx.addClass("underline");
                        $tx.removeClass("normal_cursor");
                        $tx.css("color", "#c9c9c9");
                        $tx.addClass("hand_cursor");
                        $tx.removeClass("selected");
                        $("#p"+i).removeClass("starred");
                    }
                    else
                    {
                        if(teaserIndex == 0 && !teaser_selected)
                        {
                            if(i!=3) $tx.removeClass("underline");
                            $tx.addClass("normal_cursor");
                            $tx.css("color", "white");
                            $tx.addClass("selected");
                            $("#p"+i).addClass("starred");
                        }
                        else
                        {
                            $tx.removeClass("selected");
                            $tx.removeClass("normal_cursor");
                            if(i!=3) $tx.addClass("underline");
                            $tx.css("color", "#c9c9c9");
                            $tx.addClass("hand_cursor");
                        }
                    }
                }
                if(index != 2)
                    $("#alc").hide();
                if(index != 3)
                    $(".index_block").hide();
                $block1.css("zIndex", "2");
                $block2.hide();
                $image1.css("zIndex", "2");
            }
        });

    //currently another block is out of sight, so switch names
    var $temp_block = $block1;
    if($block_holder != null && $block1.attr("id") == "gallery")
    {
        $temp_block = $block_holder;
        $block_holder = null;
    }
    $block1 = $block2;
    $block2 = $temp_block;
    if(selectedIndex != index || teaserIndex != 0 || teaser_selected == false)
    {
        var $temp_img = $image1;
        $image1 = $image2;
        $image2 = $temp_img;
    }
    selectedIndex = index;
}
};
$(".t1, .t2, .t3, .t4, .t5, .t7, .t8, .t11, .t12, .t13").bind("click", click_handler);  
});

