/* $Id: main.js, 30158+1 2010/08/17 11:49:57 m.wensveen $ */

function stop(e) {
    if (!e) e = window.event;
    (e.stopPropagation) ? e.stopPropagation() : e.cancelBubble = true;
    (e.preventDefault) ? e.preventDefault() : e.returnValue = false;
    return false;
}

function prevDef(e) {
    if (!e) e = window.event;
    (e.preventDefault) ? e.preventDefault() : e.returnValue = false;
    return false;
}

function switchJsIdent(state) {
    if (state == "load") {
        $("body")
			.removeClass("noJs")
			.addClass("readyJs");
    }
    if (state == "ready") {
        $("body")
			.removeClass("noJs")
			.removeClass("readyJs")
			.addClass("activeJs");
    }
}

$(document).ready(function() {

    $("#sleave .single").not(":gt(3)").wrapAll("<div class=\"clearfix\"></div>");
    $("#sleave .single:gt(3)").not(":gt(7)").wrapAll("<div class=\"clearfix\"></div>");
    $("#sleave .single:gt(7)").not(":gt(11)").wrapAll("<div class=\"clearfix\"></div>");

    $("#submenu").each(function() {
        var submenu = $(this), availableWidth = submenu.width(), occupiedWidth = 0,
        items = submenu.find("> ul > li");

        items.each(function() {
            occupiedWidth += $(this).width();
        });
        if (occupiedWidth > availableWidth) {
            var adaptedMargin = Math.max(15 - (occupiedWidth - availableWidth) / items.length / 2, 4);
            items.children("a").css({ paddingLeft: adaptedMargin, paddingRight: adaptedMargin });
        }
    });
    var sitewide_timeout = null;

    switchJsIdent("ready");

    function connect_Menu() {
        // MAIN MENU (submenu)

        var submenu_timeout = null,
            graceTimer = null;


        $("#submenu ul ul").each(function() {

            /* looks for the total width of submenu items , if longer dan screen > set menu for 3 rows of content */
            var longestSubmenu = 0;
            var tempLongestSubMenu = 0;

            $(this).css({ position: "absolute", visibility: "hidden", display: "block" });

            $("li", this).each(function() {
                tempLongestSubMenu += $(this).width();
                if (tempLongestSubMenu > 980) {
                    $(this).addClass("nextline");
                    $(this).parent().parent().addClass("largesubmenu");
                }
            })

            $(this).css({ position: "", visibility: "", display: "" });

            if (tempLongestSubMenu > longestSubmenu) { longestSubmenu = tempLongestSubMenu }

            tempLongestSubMenu = 0;
            $(".nextline:first", $(this)).addClass("newline");
        });

        /* end :looks for the .......*/

        if ($(".active").hasClass("largesubmenu")) {
            $("#submenu").css("height", 106);
        } else {
            $("#submenu").css("height", 73);
        }

        //set selected class on the 1st level, clear selected and selected_l2 classes
        $("#submenu>ul>li>a").mouseover(function(e) {
            clearTimeout(graceTimer);
            clearTimeout(submenu_timeout);

            var targ = $(this).parent();

            graceTimer = setTimeout(function() {
                $("#submenu .selected").removeClass("selected");
                if ($.msieVersion() > 7 || $.msieVersion() === 0) {
                    $("#submenu .selected_l2").removeClass("selected_l2");
                }
                targ.addClass("selected");

                if ($("#submenu .selected").hasClass("largesubmenu")) {
                    $("#submenu").css("height", 106);
                } else {
                    $("#submenu").css("height", 73);
                }
            }, 200);
        });

        $("#submenu>ul>li>ul>li>a").mouseover(function(e) {
            clearTimeout(graceTimer);
            clearTimeout(submenu_timeout);

            $("#submenu .selected_l2").removeClass("selected_l2");
            $(this).parent().addClass("selected_l2");
        });

        // restore menu on mouseout
        $("#submenu").mouseout(function(e) {
            clearTimeout(graceTimer);
            clearTimeout(submenu_timeout);

            submenu_timeout = setTimeout(function() {
                $("#submenu .selected").removeClass("selected");
                if ($.msieVersion() > 7 || $.msieVersion() === 0) {
                    $("#submenu .selected_l2").removeClass("selected_l2");
                }

                $("#submenu .active:eq(0)").addClass("selected");

                if ($(".active").hasClass("largesubmenu")) {
                    $("#submenu").css("height", 106);
                } else {
                    $("#submenu").css("height", 73);
                }
            }, 200);
        });

        $("#submenu").mouseover(function(e) {
            clearTimeout(submenu_timeout);
        });

        // GLOBAL NAVIGATION (sitewide)

        $("#sidewide>li>a").mouseover(function(e) {
            $("#sidewide .open").removeClass("open");
            $(this).parent().addClass("open");
        });

        $("#sidewide").mouseout(function(e) {
            sitewide_timeout = setTimeout('$("#sidewide .open").removeClass("open");', 350)
        });

        $("#sidewide").mouseover(function(e) {
            clearTimeout(sitewide_timeout);
        });

    }

    function connect_JobListing() {

        $("#jobsearch").parent().next().remove();

        $("#jobsearch .active").addClass("open").next().addClass("active");

        $("#jobsearch dt").click(function(e) {
            prevDef(e);
            if ($(this).hasClass("open")) {
                $("#jobsearch .open").removeClass("open").next().slideUp(350);
                return false;
            }

            $("#jobsearch .open").removeClass("open").next().slideUp(350);
            $(this).addClass("open").next().slideDown(300);

        })

    }

    function connect_jobListingFilter() {

        jQuery.each($("#jobsearch .description"), function() {
            var len = 500;
            var p = $(this);
            if (p) {

                var allhtml = p.html();
                var trunc = allhtml.split("<A ")[0];
                var link = allhtml.split("<A ")[1];

                if (trunc.length == allhtml.length) {
                    trunc = allhtml.split("<a ")[0];
                    link = allhtml.split("<a ")[1];
                }

                if (trunc.length > len) {
                    trunc = trunc.substring(0, len);
                    trunc = trunc.replace(/\w+$/, '');
                    trunc += "...<br/><br/><a " + link;
                    p.html(trunc);
                }
            }

        });

        jQuery.each($("#jobsearchfilter .filter"), function() {
            var anyoneChosen = $(this).find("input:checked");
            if (anyoneChosen.length == 0) {
                $(this).find("table").hide();
            }
        });

        $(".filter h4", "#jobsearchfilter").click(function(e) {
            $(this).next().slideToggle(300)
        });

        $("td label", "#jobsearchfilter").click(function(e) {
            prevDef(e);
        });

        $("td", "#jobsearchfilter").click(function(e) {
            $(this).toggleClass("chosen")
            if ($(this).hasClass("chosen")) {
                $(this).find(">input").attr("checked", "true")
            } else {
                $(this).find(">input").removeAttr("checked")
            }
        });
    }

    function activate_thissite() {
        $("#sidewide>li>a[href^=/]").parent().addClass("thissite");
    }

    function preset() {
        $("[shape]").removeAttr("shape");
        $("[lang]").removeAttr("lang");
        $(".module [style]").not(".cufon, img, table").removeAttr("style");

        $("[class=MsoNormal]").removeClass("MsoNormal");
        $("[class=syntax]").removeClass("syntax");
        $("[class=syntaxChar]").removeClass("syntaxChar");
        $("[class=CodeChar]").removeClass("CodeChar");

        $("#submenu .active:eq(0)").addClass("selected");
        //$("#submenu .active:eq(1)").addClass("selected_l2");

        $("[disabled]").addClass("disabled");

        $("#sidewide>li>ul").parent().addClass("hasChildren");
        $("#submenu>ul>li>ul>li>ul").parent().addClass("hasChildren");

        $("#sidewide ul").hide();

        if ($("#jobsearchfilter").length > 0) {
            $("input:checked", ".filter").parent().addClass("chosen")
        }

        jQuery.each($(".validator"), function() {
            if ($(this).html() == "*") {
                $(this).addClass("required");
            };
        })
    }

    activate_thissite();
    preset();
    connect_Menu();
    connect_JobListing();
    connect_jobListingFilter();

    $.msieVersion = (function() {
        var detected = null;
        return function() {
            if (detected === null) {
                if (navigator.appName.toLowerCase() !== "microsoft internet explorer") {
                    detected = 0;
                }
                else {
                    var a = /MSIE ([0-9]{1,})[\.0-9]{0,}/i.exec(navigator.userAgent);
                    if (a === null || typeof a[1] === "undefined") {
                        detected = 0;
                    }
                    else {
                        detected = parseInt(a[1], 10);
                    }
                }
            }
            return detected;
        };
    } ());

});

function pt_debug(message) {
    if (console != 'undefined') {
        console.log(message);
    }
}

