/** Main.class.js
*
* @desc javascript function commonlly used through out the imeal front page
*  
* @author DEV5
* @copyright iMeal Ltd.
* @package iMeal
* @version 1.00.20100820
* @kit ignore
* 
* @revision 2010-08-20 DEV5: file created
* @revision 2010-10-11 DEV5: new design and new features uploaded
* @revision 2010-10-25 DEV5: newsletter can be cancelled now
* @revision 2010-11-08 DEV5: first upload of the partner page
* @revision 2010-11-26 DEV5: event enquiry layer
* @revision 2010-12-30 DEV5: catering implemented
*/

var Main = function()
{
    return{
        //function to change the password-field
        loginPasswordFocus : function( oEle )
        {
            $(oEle).find('.login_password_text').hide();
            $(oEle).find('.login_password').show();
            $(oEle).find('input[name="login_password"]').val("");
            $(oEle).find('.login_password input[name="login_password"]').focus();
        },
        
        loginPasswordBlur : function( oEle )
        {
            var sPwd = $(oEle).find('input[name="login_password"]').val();
            if(!sPwd) {
                $(oEle).find('.login_password_text').show();
                $(oEle).find('.login_password').hide();
                PresetValue($(oEle).find('.login_password_text'), TXT_PREFILLED_LOGIN_PASSWORD);
            }
        },
        
        //function to log the user in through ajax
        login : function( oEle )
        {
            var sEmail = $(oEle).find("input[name='login_email']").val();
            var sPassword = $(oEle).find("input[name='login_password']").val();
            var bRememberLogin = ($(oEle).find("input[name='ch_remember']").attr("checked") == 1) ? 1 : 0;
            $.post("get/AppUser/", {action : "login", sLoginEmail : sEmail, sLoginPassword : sPassword, bRememberLogin : bRememberLogin}, createDelegate(this, this.login_Callback));
        },
        
        login_Callback : function(sAnswer)
        {
            //if the login was wrong the alertbox is shown
            if(sAnswer)
            {
                oAnswer = $.evalJSON(sAnswer);
                AlertBox.Show(oAnswer.sAlertTitle, oAnswer.sAlertContent);
                return false;
            }
            
            location.reload();
        },
        
        setRememberLogin : function()
        {
            var bRememberLogin = ($("#header input[name='ch_remember_logged']").attr("checked") == 1) ? 1 : 0;
            
            $.post("get/AppUser/", {action : "setRememberLogin", bRememberLogin : bRememberLogin});
        },
        
        sendPasswordReminder : function( sType )
        {
            //checks if the function comes from the save-button of the alert-box
            if(sType == 'save')
            {
                var sEmail = $('#alert_box .password_forgotten input[name="password_forgotten_email"]').val();
                $.post("get/AppUtils/", {action : "sendPassword", sEmail : sEmail}, createDelegate(this, this.sendPasswordReminder_Callback));
            }
        },
        
        sendPasswordReminder_Callback : function(sAnswer)
        {
            var oAnswer = $.evalJSON(sAnswer);
            if(oAnswer.bError)
            {
                AlertBox.Show(oAnswer.sTitle, oAnswer.sContent, {sText : oAnswer.sButtonGetPassword,sValue : "save"}, createDelegate(this, this.sendPasswordReminder));
            }
            else
            {
                AlertBox.Show(oAnswer.sTitle, oAnswer.sContent);
            }
        },
        
        m_bNamesLoaded : false,
        
        searchLoadRestaurantNames: function()
        {
            if(!this.m_bNamesLoaded)
            {
                $('#mmenu input[name="menu_search_restaurants"]').val("");
                $('#mmenu input[name="menu_search_restaurants"]').blur();
                $('#mmenu img.search_loader').show();
                $.post("get/AppUtils", { action : "getRestaurantNames"}, createDelegate(this, this.searchLoadRestaurantNames_Callback));
            }
        },
        
        searchLoadRestaurantNames_Callback: function(sAnswer)
        {
            var aRestaurants = sAnswer.split("~");
            $('#mmenu input[name="menu_search_restaurants"]').autocomplete(aRestaurants, { onlyFromList: true, matchContains: true, callback_func: "Main.searchGoToRestaurant"});
            this.m_bNamesLoaded = true;
            $('#mmenu img.search_loader').hide();
            $('#mmenu input[name="menu_search_restaurants"]').focus();
        },
        
        searchFieldFocus : function()
        {
        },
        
        searchGoToRestaurant: function()
        {
            $('#mmenu img.search_loader').show();
            var sRestaurantname = $('#mmenu input[name="menu_search_restaurants"]').val();
            if(sRestaurantname != '' && sRestaurantname != TXT_PREFILLED_RESTAURANT) {
                $.post("get/AppUtils", { action : "getRestaurantUrl", sRestaurantname : sRestaurantname}, createDelegate(this, this.searchGoToRestaurant_Callback));
            }
        },

        searchGoToRestaurant_Callback: function(answer)
        {
            location.href = answer + "/type/menucard";
        },
        
        showRegisterLayer : function()
        {
            var oCancelButton = {
                sText : "fp@alert_button_cancel",
                sValue : "cancel",
                sColor : "white"
            };
            
            var oSaveButton = {
                sText : "fp@alert_button_register",
                sValue : "register"
            };
            
            AlertBox.Show("fp@alert_register_layer_title", "get/AppUser/action/getRegisterLayer", new Array(oCancelButton, oSaveButton), createDelegate(Main, Main.registerUser));
        },
        
        //registers a user
        registerUser : function(sAnswer)
        {
            if(sAnswer == 'register')
            {
                if(!AlertBox.checkNeededFields(new Array("email", "password", "password_repeat"), "#alert_box .register_layer .error.missing_information"))
                {
                    return;
                }
                
                //checks if the passwords are the same
                var sPassword = $("#alert_box .register_layer input[name='password']").val();
                var sPasswordRepeat = $("#alert_box .register_layer input[name='password_repeat']").val();
                if(sPassword != sPasswordRepeat)
                {
                    var sErrorPasswords = $("#alert_box .register_layer .error.different_passwords").html();
                    LittleHelpLayer.Show("#alert_box .register_layer input[name='password_repeat']", sErrorPasswords);
                    return;
                }
                
                //collects the rest of the users input
                var sEmail = $("#alert_box .register_layer input[name='email']").val();
                var sFirstName = $("#alert_box .register_layer input[name='first_name']").val();
                var sLastName = $("#alert_box .register_layer input[name='last_name']").val();
                var sPhoneNumber = $("#alert_box .register_layer input[name='phone']").val();
                var sCaptcha = $("#alert_box .register_layer input[name='captcha']").val();
                var sSex = $("#alert_box .register_layer input[name='sex']").val();
                
                //shows the load-image
                AlertBox.showAjaxLoader();
                $.post("get/AppUser", { action : "registerUser", sEmail : sEmail, sFirstName : sFirstName, sLastName : sLastName, sPhoneNumber : sPhoneNumber, sSex : sSex, sPassword : sPassword, sCaptcha : sCaptcha }, createDelegate(this, this.registerUser_Callback));
            }
            else if(sAnswer == 'cancel')
            {
                AlertBox.Hide();
            }
        },
        
        registerUser_Callback : function( sAnswer )
        {
            var oAnswer = $.evalJSON(sAnswer);
            AlertBox.hideAjaxLoader();
            if(oAnswer.bError != undefined && oAnswer.bError)
            {
                LittleHelpLayer.Show("#alert_box .register_layer input[name='" + oAnswer.sFieldName + "']", oAnswer.sErrorMessage);
                return;
            }
            
            AlertBox.Show("fp@alert_register_layer_title", "fp@alert_register_layer_ready_content", {sText : "fp@alert_button_ok",sValue : "ok"}, createDelegate(this, this.reloadPage))
        },
        
        reloadPage : function()
        {
            location.reload();
        },
        
        //function to shot the register layer for a restauant
        showRegisterRestaurantLayer : function( sType )
        {
            //checks if the right type is given (should always be correct)
            if(sType == "advice" || sType == "register")
            {
                var oCancelButton = {
                    sText : "fp@alert_button_cancel",
                    sValue : "cancel",
                    sColor : "white"
                };
                
                var oSendButton = {
                    sText : "fp@alert_button_send",
                    sValue : sType
                };
                
                AlertBox.Show("fp@alert_register_restaurant_" + sType + "_layer_title", "elements/alert_register_restaurant_layer.tpl", new Array(oCancelButton, oSendButton), createDelegate(Main, Main.registerRestaurant));
                $("#alert_box .register_restaurant_layer ." + sType + "_text").show();
            }
        },
        
        //function to insert a restaurant
        registerRestaurant : function( sType )
        {
            switch ( sType )
            {
                //checks the functions and inserts the restaurant if everythings good
                case "register":
                case "advice":
                    var aNeededFields = new Array("name", "email", "restaurant_name", "restaurant_phone", "restaurant_zip");
                    if(!AlertBox.checkNeededFields(aNeededFields, "#alert_box .register_restaurant_layer .error.missing_information"))
                    {
                        //returns if a needed field is missing
                        return;
                    }
                    
                    //collects the data from the user
                    var oForm = $('#alert_box .register_restaurant_layer');
                    var oData = {
                        sType : sType,
                        sName : oForm.find("input[name='name']").val(),
                        sEmail : oForm.find("input[name='email']").val(),
                        sPhone : oForm.find("input[name='phone']").val(),
                        sRestaurantName : oForm.find("input[name='restaurant_name']").val(),
                        sRestaurantPhone : oForm.find("input[name='restaurant_phone']").val(),
                        bDelivery : (oForm.find("input[name='delivery']").attr("checked")) == 1 ? true : false,
                        bTakeAway : (oForm.find("input[name='take_away']").attr("checked")) == 1 ? true : false,
                        bRestaurant : (oForm.find("input[name='restaurant']").attr("checked")) == 1 ? true : false,
                        sRestaurantZip : oForm.find("input[name='restaurant_zip']").val(),
                        sRestaurantStreet : oForm.find("input[name='restaurant_street']").val(),
                        sComment : oForm.find("textarea[name='comment']").val(),
                        sCaptcha : oForm.find("input[name='captcha']").val()
                    }
                    
                    AlertBox.showAjaxLoader();
                    $.post("get/AppUtils", { action : "registerRestaurant", sData : $.toJSON(oData) }, createDelegate(this, this.registerRestaurant_Callback));
                    break;
                //closes the alert-box without doing anything
                case "cancel":
                    AlertBox.Hide();
                    break;
            }
        },
        
        registerRestaurant_Callback : function(sAnswer)
        {
            var oAnswer = $.evalJSON(sAnswer);
            AlertBox.hideAjaxLoader();
            if(oAnswer.bError != undefined && oAnswer.bError)
            {
                LittleHelpLayer.Show("#alert_box .register_restaurant_layer input[name='" + oAnswer.sFieldName + "']", oAnswer.sErrorMessage);
                return;
            }
            var sType = oAnswer.sType;
            AlertBox.Show(oAnswer.sAlertTitle, oAnswer.sAlertContent, {sText : oAnswer.sButtonText,sValue : "ok"}, createDelegate(AlertBox, AlertBox.Hide))
        },
        
        //function to keep the right and left boxes always in sight, also when scrolling
        updateLeftAndRightScrollPosition : function()
        {
            var nScrollTop = getScrollXY().top;
            var nTopFooter = $('.main_block.main_links').offset().top -8;
            
            //updates the left scroll position
            var oOffset = $('.left_scroll').offset();
            
            if(oOffset != null)
            {
                var nTop = oOffset.top;
                if(nScrollTop > nTop)
                {
                    $('.left_scroll .scroll_content').css("position", "fixed");
                    $('.left_scroll .scroll_content').css("top", "10px");
                    
                    var nScrollHeight = $('.left_scroll .scroll_content').height();
                    var nScrollTop = $('.left_scroll .scroll_content').offset().top;
                    var nScrollTop = $('.left_scroll .scroll_content').offset().top;
                    if((nScrollHeight + nScrollTop) > nTopFooter)
                    {
                        $('.left_scroll .scroll_content').css("top", (nTopFooter - (nScrollHeight + nScrollTop)) + "px");
                    }
                }
                
                if(nScrollTop < nTop)
                {
                    $('.left_scroll .scroll_content').css("position", "absolute");
                    $('.left_scroll .scroll_content').css("top", nTop + "px");
                }
            }
            
            //updates the right scroll position
            var oOffset = $('.right_scroll').offset();
            
            if(oOffset != null)
            {
                var nTop = oOffset.top;
                if(nScrollTop > nTop)
                {
                    $('.right_scroll .scroll_content').css("position", "fixed");
                    $('.right_scroll .scroll_content').css("top", "10px");
                    
                    var nScrollHeight = $('.right_scroll .scroll_content').height();
                    var nScrollTop = $('.right_scroll .scroll_content').offset().top;
                    if((nScrollHeight + nScrollTop) > nTopFooter)
                    {
                        $('.right_scroll .scroll_content').css("top", (nTopFooter - (nScrollHeight + nScrollTop)) + "px");
                    }
                }
                
                if(nScrollTop < nTop)
                {
                    $('.right_scroll .scroll_content').css("position", "absolute");
                    $('.right_scroll .scroll_content').css("top", nTop + "px");
                }
            }
        },
        
        //function to update the size of the scrollable boxes left and right
        updateLeftAndRightScrollSize : function()
        {
            var nHeight = getWindowSize().height;
            $('.left_scroll .details').css("max-height", (nHeight - 60) + "px");
            $('.right_scroll .details').css("max-height", (nHeight - 60) + "px");
            var nHighest = $('.restaurant_details .left_scroll .scroll_content').height();
            
            if($('.right_scroll .scroll_content').height() > nHighest)
            {
                nHighest = $('.restaurant_details .right_scroll .scroll_content').height();
            }
            $('.content .content_container').css("min-height", nHighest - 42 + "px");
            $('.right_scroll .checkout')
        },
        
        //function to show the contacts-layer
        showContactsLayer : function()
        {
            var oCancelButton = {
                sText : "fp@alert_button_cancel",
                sValue : "cancel",
                sColor : "white"
            };
            
            var oSendButton = {
                sText : "fp@alert_button_send",
                sValue : "send"
            };
            
            AlertBox.Show("fp@main_link_contact", "get/AppUser/action/getContactLayer", new Array(oCancelButton, oSendButton), createDelegate(this, this.sendContactEmail));
            
            //sets the autocomplete-values for the order-number
            var aOrderNumbers = $('#alert_box span.order_numbers').html().split("~");
            if(aOrderNumbers.length)
            {
                $('#alert_box input[name="order_number"]').autocomplete(aOrderNumbers, { matchContains: true });
            }
        },
        
        //function to send the contact-email
        sendContactEmail : function(sType)
        {
            if(sType == "send")
            {
                var aNeededFields = new Array("sex", "last_name", "email", "message");
                if(!AlertBox.checkNeededFields(aNeededFields, "#alert_box .contact_layer .error.missing_information"))
                {
                    //returns if a needed field is missing
                    return;
                }
                
                AlertBox.showAjaxLoader();
                var oData = {
                    sFirstName : $("#alert_box input[name='first_name']").val(),
                    sLastName : $("#alert_box input[name='last_name']").val(),
                    sSex : $("#alert_box input[name='sex']").val(),
                    sEmail : $("#alert_box input[name='email']").val(),
                    sOrderNumber : $("#alert_box input[name='order_number']").val(),
                    sSubject : $("#alert_box input[name='subject']").val(),
                    sMessage : $("#alert_box textarea[name='message']").val(),
                    sCaptcha : $("#alert_box input[name='captcha']").val()
                }
                
                //tries to send the email
                $.post("get/AppUser", { action : "sendContactEmail", sData : $.toJSON(oData) }, createDelegate(this, this.sendContactEmail_Callback));
            }
            else
            {
                AlertBox.Hide();
            }
        },
        
        //checks if the email has been sent
        sendContactEmail_Callback : function(sAnswer)
        {
            var oAnswer = $.evalJSON(sAnswer);
            if(oAnswer.bError)
            {
                LittleHelpLayer.Show("#alert_box [name='" + oAnswer.sFieldName + "']", oAnswer.sErrorMessage);
                AlertBox.hideAjaxLoader();
                return;
            }
            else
            {
                AlertBox.Show(oAnswer.sAlertTitle, oAnswer.sAlertContent);
            }
        },
        
        //function to create imeal-selects, radioboxes and checkboxes
        setInputFunctions : function(oEle)
        {
            //creates the imeal selects
            var imeal_selects = $(oEle).find('.imeal_select');
            for(i = 0; i < imeal_selects.length; i++)
            {
                new iMealSelect($(imeal_selects[i]));
            }
            
            //creates the checkboxes
            var chboxes = $(oEle).find(".checkbox");
            chboxes.each(function()
                        {
                            new iMealCheckbox(this);
                        });

            //creates the radioboxes
            var radioboxes = $(oEle).find(".radiobox");
            radioboxes.each(function()
                        {
                            new iMealRadioBox(this);
                        });
        },
        
        //function to show the event-enquiry-layer
        showEventEnquiryLayer : function(sCryptedRestaurantID)
        {
            if(sCryptedRestaurantID == undefined)
            {
                sCryptedRestaurantID = 0;
            }
            
            var oCancelButton = {
                sText : "fp@alert_button_cancel",
                sValue : "cancel",
                sColor : "white"
            };
            
            var oSendButton = {
                sText : "fp@alert_button_send",
                sValue : "send"
            };
            
            AlertBox.Show("fp@event_enquiry", "get/AppUtils/action/getEventEnquiryLayer/restaurantid/" + sCryptedRestaurantID, new Array(oCancelButton, oSendButton), createDelegate(this, this.sendEventEnquiryEmail));
            
            //presets the fields
            PresetValue($('#alert_box input[name="where"]'), TXT_EVENT_ENQUIRY_ZIP);
            PresetValue($('#alert_box input[name="number_people"]'), TXT_EVENT_ENQUIRY_NUMBER_PEOPLE);
            PresetValue($('#alert_box textarea[name="date"]'), TXT_EVENT_ENQUIRY_DATE_CONTENT);
            PresetValue($('#alert_box textarea[name="message"]'), TXT_EVENT_ENQUIRY_MESSAGE_CONTENT);
            PresetValue($('#alert_box input[name="first_name"]'), TXT_EVENT_ENQUIRY_FIRST_NAME);
            PresetValue($('#alert_box input[name="last_name"]'), TXT_EVENT_ENQUIRY_LAST_NAME);
            PresetValue($('#alert_box input[name="email"]'), TXT_EVENT_ENQUIRY_EMAIL_ADDRESS);
            PresetValue($('#alert_box input[name="phone"]'), TXT_EVENT_ENQUIRY_TELEPHONE_NUMBER);
            
            if($('#alert_box input[name="restaurant_url_name"]').length)
            {
                $('#alert_box span.goto_restaurant').click(function() {
                    Main.saveEventEnquiryToSession();
                })
            }
        },
        
        //function to save the data of the event-enquiry-layer to the session
        saveEventEnquiryToSession : function()
        {
            var oData = {
                sCryptedRestaurantID : $("#alert_box input[name='restaurantid']").val(),
                sFirstName : $("#alert_box input[name='first_name']").val(),
                sLastName : $("#alert_box input[name='last_name']").val(),
                sSex : $("#alert_box input[name='sex']").val(),
                sEmail : $("#alert_box input[name='email']").val(),
                sLocation : ($("#alert_box input[name='location'][value='OWN_LOCATION']").attr("checked") == 1) ? "OWN_LOCATION" : "PROVIDER_LOCATION",
                sPhone : $("#alert_box input[name='phone']").val(),
                sSubject : $("#alert_box input[name='subject']").val(),
                sMessage : $("#alert_box textarea[name='message']").val(),
                sDate : $("#alert_box textarea[name='date']").val(),
                sWhere : $("#alert_box input[name='where']").val(),
                sNumberPeople : $("#alert_box input[name='number_people']").val(),
                sCaptcha : $("#alert_box input[name='captcha']").val(),
                sLoginEmail : $("#alert_box input[name='login_email']").length ? $("#alert_box input[name='login_email']").val() : "",
                sLoginPassword : $("#alert_box input[name='login_password']").length ? $("#alert_box input[name='login_password']").val() : ""
            }
            $.post("get/AppUtils", { action : "saveEventEnquiryData", sData : $.toJSON(oData) }, createDelegate(this, this.saveEventEnquiryToSession_Callback));
        },
        
        saveEventEnquiryToSession_Callback : function(sAnswer)
        {
            if($('#alert_box input[name="restaurant_url_name"]').val())
            {
                location.href = "/" + $('#alert_box input[name="restaurant_url_name"]').val();
            }
            else
            {
                AlertBox.Hide();
            }
        },
        
        //function to send the event-enquiry-email
        sendEventEnquiryEmail : function(sType)
        {
            if(sType == "send")
            {
                var aNeededFields = new Array("sex", "email", "last_name", "phone", "where", "number_people", "date", "message");
                var aPresetValues = new Array("", TXT_EVENT_ENQUIRY_EMAIL_ADDRESS, TXT_EVENT_ENQUIRY_LAST_NAME, TXT_EVENT_ENQUIRY_TELEPHONE_NUMBER, TXT_EVENT_ENQUIRY_ZIP, TXT_EVENT_ENQUIRY_NUMBER_PEOPLE, TXT_EVENT_ENQUIRY_DATE_CONTENT, TXT_EVENT_ENQUIRY_MESSAGE_CONTENT);
                
                //checks if all the needed fields are given
                for(i = 0; i < aNeededFields.length; i++)
                {
                    if((!$('#alert_box [name="' + aNeededFields[i] + '"]').val()) || ($('#alert_box [name="' + aNeededFields[i] + '"]').val() == aPresetValues[i]))
                    {
                        var oField = $('#alert_box [name="' + aNeededFields[i] + '"]');
                        if(aNeededFields[i] == 'sex')
                        {
                            oField = $('#alert_box .imeal_select.sex');
                        }
                        LittleHelpLayer.Show(oField, $("#alert_box .contact_layer .error.missing_information").html().replace("'{$sMissingFieldTitle}'", ""));
                        return;
                    }
                }
                
                AlertBox.showAjaxLoader();
                var oData = {
                    sCryptedRestaurantID : $("#alert_box input[name='restaurantid']").val(),
                    sFirstName : $("#alert_box input[name='first_name']").val(),
                    sLastName : $("#alert_box input[name='last_name']").val(),
                    sSex : $("#alert_box input[name='sex']").val(),
                    sEmail : $("#alert_box input[name='email']").val(),
                    sLocation : ($("#alert_box input[name='location'][value='OWN_LOCATION']").attr("checked") == 1) ? "OWN_LOCATION" : "PROVIDER_LOCATION",
                    sPhone : $("#alert_box input[name='phone']").val(),
                    sSubject : $("#alert_box input[name='subject']").val(),
                    sMessage : $("#alert_box textarea[name='message']").val(),
                    sDate : $("#alert_box textarea[name='date']").val(),
                    sWhere : $("#alert_box input[name='where']").val(),
                    sNumberPeople : $("#alert_box input[name='number_people']").val(),
                    sCaptcha : $("#alert_box input[name='captcha']").val(),
                    sLoginEmail : $("#alert_box input[name='login_email']").length ? $("#alert_box input[name='login_email']").val() : "",
                    sLoginPassword : $("#alert_box input[name='login_password']").length ? $("#alert_box input[name='login_password']").val() : ""
                }
                
                //tries to send the email
                $.post("get/AppUtils", { action : "sendEventEnquiryEmail", sData : $.toJSON(oData) }, createDelegate(this, this.sendEventEnquiryEmail_Callback));
            }
            else
            {
                this.saveEventEnquiryToSession();
                AlertBox.Hide();
            }
        },
        
        //checks if the email has been sent
        sendEventEnquiryEmail_Callback : function(sAnswer)
        {
            var oAnswer = $.evalJSON(sAnswer);
            if(oAnswer.bError)
            {
                LittleHelpLayer.Show("#alert_box [name='" + oAnswer.sFieldName + "']", oAnswer.sErrorMessage);
                AlertBox.hideAjaxLoader();
                return;
            }
            else
            {
                AlertBox.Show(oAnswer.sAlertTitle, oAnswer.sAlertContent);
            }
        }
    }
}();

$(document).ready(function() {
    //shows the newsletter notification
    if(bCancelNewsletter != 0)
    {
        AlertBox.Show(TXT_CANCEL_NEWSLETTER_TITLE, TXT_CANCEL_NEWSLETTER_CONTENT)
    }
    
    Main.updateLeftAndRightScrollSize();
    
    //sets the autocomplete-values for the restaurant-search-field
    $('#mmenu input[name="menu_search_restaurants"]').focus(function() {
        Main.searchLoadRestaurantNames();
    })
    
    //sets the functions to advice or register a restaurant
    if($(".main_links").length)
    {
        $(".main_links .register_restaurant").click(function() {
            Main.showRegisterRestaurantLayer('register');
            return false;
        })
        $(".main_links .advice_restaurant").click(function() {
            Main.showRegisterRestaurantLayer('advice');
            return false;
        })
        
        //sets the function to show the contact-layer
        $(".main_links .contacts").click(function() {
            Main.showContactsLayer();
            return false;
        })
        
        //sets the function to show the contact-layer
        $(".main_links .event_enquiry").click(function() {
            Main.showEventEnquiryLayer();
            return false;
        })
        
        //sets the function to show the contact-layer
        $(".main_links .hotline_opening_hours").click(function() {
            AlertBox.Show("fp@main_link_hotline_opening_hours", "fp@alert_hotline_opening_hours_content");
        })
    }
    
    if(!USER_LOGGED_IN)
    {
        //creates the function for the login-form
        $(".login_container .login_button").click(function(e) {
            Main.login($(e.currentTarget).parents("form[name='login_form']"));
            return false;
        })
        
        $(".login_container form[name='login_form']").submit(function(e) {
            Main.login($(e.currentTarget));
            return false;
        })
        
        //email and password should be deleted when preset
        var aMeal = $(".login_container input[name='login_email']");
        for(i = 0; i < aMeal.length; i++)
        {
            PresetValue(aMeal[i], TXT_PREFILLED_LOGIN_EMAIL);
        }
        $(".login_container input[name='login_password_text']").val("");
        var aPassword = $(".login_container input[name='login_password_text']");
        for(i = 0; i < aPassword.length; i++)
        {
            PresetValue(aPassword[i], TXT_PREFILLED_LOGIN_PASSWORD);
        }
        
        DeleteValueOnFocus(".login_container input[name='login_password']");
        
        //creates the functions to change the password-text-field
        var aPasswordText = $(".login_container .login_password_text input");
        for(i = 0; i < aPasswordText.length; i++)
        {
            $(aPasswordText[i]).focus(function(e) {
                Main.loginPasswordFocus($(e.currentTarget).parents("form[name='login_form']"));
            })
        }
        var aPassword = $(".login_container .login_password input");
        for(i = 0; i < aPassword.length; i++)
        {
            $(aPassword[i]).blur(function(e) {
                Main.loginPasswordBlur($(e.currentTarget).parents("form[name='login_form']"));
            })
        }
        
        $(".login_container .password_forgotten").click(function() {
            AlertBox.Show("fp@alert_password_forgotten_title", "elements/alert_password_forgotten.tpl", {sText : "fp@alert_button_get_password",sValue : "save"}, createDelegate(Main, Main.sendPasswordReminder))
            return false;
        })
        
        //sets the function to open the register-layer
        $(".login_container .register.link").click(function() {
            Main.showRegisterLayer();
            return false;
        })
        
        //sets the function to open the register-layer
        if($(".main_links").length)
        {
            $(".main_links .register_as_customer").click(function() {
                Main.showRegisterLayer();
                return false;
            })
        }
    }
    else
    {
        $(".login_container .ch_remember_logged").click(function() {
            setTimeout("Main.setRememberLogin()", 200);
        })
    }
})

$(window).scroll(function() {
    if($('.left_scroll').length || $('.right_scroll').length)
    {
        Main.updateLeftAndRightScrollPosition();
    }
})

$(window).resize(function() {
    if($('.left_scroll').length || $('.right_scroll').length)
    {
        Main.updateLeftAndRightScrollSize();
    }
})

