var extranet; // This will be our namespace.


(function() { // Create our own scope to prevent global scope polution.

var $ = jQuery; // Make sure $ is jQuery.

    var getPageScrollTop = function() {
        // Adapted from http://www.quirksmode.org/viewport/compatibility.html
        // Explorer doesn't support pageYOffset, so we need to do it the hard way.
        return window.pageYOffset ||
                (document.documentElement && document.documentElement.scrollTop) ||
                document.body.scrollTop;
    };

    function viewProjectLayer(projectname, username, comment){
        var newprojectname = window.unescape(projectname);
        $("#projectmanagement").css({display:'block'});
        $("#username_hidden").attr('value',username);
        $("#projectname_hidden").attr('value',projectname);
        $("#newprojectname").attr('value',newprojectname);
        $("#comment").html(comment);        
    }

    function closeProjectLayer(layer){
        layer = layer || 'projectmanagement';
        $("#"+layer).css({display:'None'});
    }

    function viewAddToProject(username){
        $("#addtoproject").css({display:'block'});
        $("#addtoproject div.addtoproject_layer").css({
            top: getPageScrollTop() + 100 });
    }
    function viewEditComment(serial, comment){
        $("#editcommentform").css({display:'block'});
        $("#comment").html(comment);
        $("#comment").attr('name',"comment_"+serial);
        
    }
    function viewKildeinfo(){
        $("#kildeinfo").css({display:'block'});
                
    }
    function closeKildeinfo(){
        $("#kildeinfo").css({display:'none'});
                
    }
    function delete_verification(status, serial, projectname){
        $("#serial").attr('value',serial);
        if (projectname){
            $("#project").attr('value',projectname);
            }
        if (status){
            $("#status").attr('value',status);
            }
        $("#delete_verify").css({display:'block'});
        $("#delete_verify div.delete_layer").css({
            top: getPageScrollTop() + 100 });
        
    }
    function viewEditProjectComment(comment){
        $("#editprojectcommentform").css({display:'block'});
        $("#projectcomment").html(comment);
    }

    function viewLoginForm(){
        $.getJSON("logged_in",
            function(logged_in){
                if (logged_in) {
                    document.location = 'min_kunnskapskurv';
                } else {
                    $("#min_side_meny").css({display:'None'});
                    $("#loginform").css({display:'Block'});
                    $("#forgotpassword").css({display:'None'});
                    $("#newuser").css({display:'None'});
                }
            }
        );
    }
    function viewForgotPassword(){
        $("#min_side_meny").css({display:'None'});
        $("#loginform").css({display:'None'});
        $("#forgotpassword").css({display:'Block'});
        $("#newuser").css({display:'None'});
    }
    function viewNewUser(teacher){
    
        $("#loginform").css({display:'None'});
        $("#forgotpassword").css({display:'None'});
        $("#newuser").css({display:'Block'});
        if (!teacher){
            $("#nyhetsbrev").css({display:'None'});
            $("#nyhetsbrev_label").css({display:'None'});
        }
        else
        {
            $("#klassetrinn").css({display:'None'});
            $("#klassetrinn_label").css({display:'None'});
            $("#nyhetsbrev").css({display:'Block'});
            $("#nyhetsbrev_label").css({display:'Block'});
        }
    }
    
    var hideMenus = function(start) {
        var p = start || document;
        $(p).find("#loginform").css({display:'None'});
        $(p).find("#forgotpassword").css({display:'None'});
        $(p).find("#newuser").css({display:'None'});
    };

    var sortTables = function() {
        // Tablesorter doesn't support tables with no rows.
        var table = $("#mittInnhold");
        if (table.find('tr').length > 1) {
            table.tablesorter({sortList:[[1,1]], headerClass: 'tableheader'});
        }
    };

    var initForms = function() {
        var klassetrinn = $('#klassetrinn');
        if (klassetrinn.length == 0) {
            return // Do nothing.
        }

        var updateKlasseTrinn = function() {
            var choices = [];
            if ($('#skoletype').val() == 'gs') {
                choices = ['8.klasse', '9.klasse', '10.klasse'];
            } else {
                choices = ['Grunnkurs', 'VK1', 'VK2'];
            }
            
            klassetrinn.children().remove();
            for (var i=0;i<choices.length; i++) {
                var name = choices[i];
                var value = choices[i];
                klassetrinn.append('<option value="' + value + '">' + name + '</option>');
            };

        };

        $('#skoletype').change(updateKlasseTrinn);
        updateKlasseTrinn();
    };

    var validateForms = function() {
        $("#form_newuser").validate({
            
            rules: {
                fornavn: "required",
                etternavn: "required",
                skolenavn: "required",
                epost: {
                    required: true,
                    email: true
                }
                
                
            },
            messages: {
                fornavn: "Vennligst skriv inn fornavn",
                etternavn: "Vennligst skriv inn etternavn",
                skolenavn: "Vennligst fyll inn navnet på skolen din",
                epost: "Adressen er ikke en gyldig e-postadresse"
                
            }
        });
        
        $("#form_forgotpassword").validate({
            rules: {
                username: {
                    required: true,
                    email: true
                    }
                                
            },
            messages: {
                username: "Vennligst fyll inn en gyldig e-postadresse"
                
                
            }
        });         
        $("#form_loginform").validate({
            rules: {
                __ac_name: {
                    required: true,
                    email: true
                }
                                
            },
            messages: {
                __ac_name: "Venligst skriv inn en gyldig e-postadresse"
                
                
            }
        }); 
        $("#extranett_loginform").validate({
            rules: {
                __ac_name: {
                    required: true,
                    email: true
                }
                                
            },
            messages: {
                __ac_name: "Venligst skriv inn en gyldig e-postadresse"
                
                
            }
        });
        $("#form_teacher_info").validate({
            rules: {
                firstname: "required",
                lastname: "required",
                email: {
                    required: true,
                    email: true
                },
                email1: {
                    required: true,
                    email: true
                }
                
                
            },
            messages: {
                firstname: "Vennligst skriv inn fornavn",
                lastname: "Vennligst skriv inn etternavn",
                email: "Adressen er ikke en gyldig e-postadresse",
                email1: "Adressen er ikke en gyldig e-postadresse"
                
            }
        });
        
    };

    var initActions = function() {
        $("div.viewProjectLayer").click(function(evt) {
            evt.preventDefault();
            var name = $(this).find('.name').text();
            var username = $(this).find('.username').html();
            var comment = $(this).find('.comment').html();
            extranet.viewProjectLayer(name, username, comment);
        });

        $("div.viewEditProjectComment").click(function(evt) {
            evt.preventDefault();
            var comment = $(this).find('.comment').html();
            extranet.viewEditProjectComment(comment);
        });

        $("div.viewEditComment").click(function(evt) {
            evt.preventDefault();
            var serial = $(this).find('.serial').html();
            var comment = $(this).find('.comment').html();
            extranet.viewEditComment(serial, comment);
        });

        $(".action").mouseover(function(evt) {
            $(this).addClass('highlight');
        });

        $(".action").mouseout(function(evt) {
            $(this).removeClass('highlight');
        });
    };

    var initMenus = function() {
        $('#leftnav > li > ul.leftnav').each(function(i, n) {
            $(n).accordion({
                autoheight: true,
                selectedClass: 'open',
                event: "mouseover",
                active: '.on', 
                header: 'a.head_1'
            });
        });
    };

    var init = function() {
        sortTables();
        hideMenus();
        initForms();
        validateForms();
        initActions();
        initMenus();
    };

    $(document).ready(init);

    extranet = {
        'viewProjectLayer': viewProjectLayer,
        'closeProjectLayer': closeProjectLayer,
        'viewAddToProject': viewAddToProject,
        'viewEditComment': viewEditComment,
        'viewEditProjectComment': viewEditProjectComment,
        'viewNewUser' : viewNewUser,
        'viewForgotPassword' :viewForgotPassword,
        'viewLoginForm' : viewLoginForm,
        'delete_verification':delete_verification,
        'hideMenus': hideMenus,
        'viewKildeinfo' : viewKildeinfo,
        'closeKildeinfo' : closeKildeinfo
    };
        
})();

