﻿/*  ------------------------------------------------------------------

MG common JS library. Used on every page. 
Must be placed as the last .js file in master page, so that OOB JS functions
can be overridden in this file if needed.

Dependencies:
- jQuery
- OOB core.js

------------------------------------------------------------------ */


/*
Override for OOB ProcessDefaultOnLoad in init.js.
Function call to ProcessImn causes "Name ActiveX control" issue in IE7,
so it is commented out.
*/
function ProcessDefaultOnLoad(onLoadFunctionNames) {
    ProcessPNGImages();
    UpdateAccessibilityUI();
    //ProcessImn();
    for (var i = 0; i < onLoadFunctionNames.length; i++) {
        var expr = "if(typeof(" + onLoadFunctionNames[i] + ")=='function'){" + onLoadFunctionNames[i] + "();}";
        eval(expr);
    }
    if (typeof (_spUseDefaultFocus) != "undefined")
        DefaultFocus();
}


document.write('<style type="text/css"> .MGReferenceThumbnail{display:none;} .gridReferencesMain .referenceNavigator .col2 .webPartContent .linkList li{padding-left:0;} <\/style>');

function googleMaps() {

    window.setTimeout(function() {
        $(".mapArea div[@dir]").each(function(i) {

            if ($(this)[0].isPending == undefined) {

                if ($(this).parents("div.gridProductionUnit").length > 0) {
                    $(this).parents("div.webPartContent").css("margin-top", "40px").end().addClass("MGGoogleMap");
                }
                else { $(this).addClass("MGGoogleMap"); }
            }
        });
    }, 2000);


}
/* Closes layers in case the iframed page is browsed by admin */
function CloseModal(obj) {
    obj.parent.tb_remove(); return false;
}




/*JQUERY PLUGINS*/


/*
* jNice
* version: 1.0 (11.26.08)
* by Sean Mooney (sean@whitespace-creative.com) 
* Examples at: http://www.whitespace-creative.com/jquery/jnice/
* Dual licensed under the MIT and GPL licenses:
*   http://www.opensource.org/licenses/mit-license.php
*   http://www.gnu.org/licenses/gpl.html
*
* To Use: place in the head 
*  <link href="inc/style/jNice.css" rel="stylesheet" type="text/css" />
*  <script type="text/javascript" src="inc/js/jquery.jNice.js"></script>
*
* And apply the jNice class to the form you want to style
*
* To Do: Add textareas, Add File upload
*
******************************************** */
(function($) {
    $.fn.jNice = function(options) {
        var self = this;
        var safari = $.browser.safari; /* We need to check for safari to fix the input:text problem */
        /* Apply document listener */
        $(document).mousedown(checkExternalClick);
        /* each form */
        return this.each(function() {

            $('input:text:visible, input:password', this).each(TextAdd);
            $('textarea', this).each(TextAreaAdd);
            /* If this is safari we need to add an extra class */
            if (safari) { $('.jNiceInputWrapper').each(function() { $(this).addClass('jNiceSafari').find('input').css('width', $(this).width() + 11); }); }
            $('input:checkbox', this).each(CheckAdd);
            $('input:radio', this).each(RadioAdd);
            $('select', this).each(function(index) { SelectAdd(this, index); });
            /* Add a new handler for the reset action */
            $(this).bind('reset', function() { var action = function() { Reset(this); }; window.setTimeout(action, 10); });
            $('.jNiceHidden').css({ opacity: 0 });
        });
    }; /* End the Plugin */

    var Reset = function(form) {
        var sel;
        $('.jNiceSelectWrapper select', form).each(function() { sel = (this.selectedIndex < 0) ? 0 : this.selectedIndex; $('ul', $(this).parent()).each(function() { $('a:eq(' + sel + ')', this).click(); }); });
        $('a.jNiceCheckbox, a.jNiceRadio', form).removeClass('jNiceChecked');
        $('input:checkbox, input:radio', form).each(function() { if (this.checked) { $('a', $(this).parent()).addClass('jNiceChecked'); } });
    };

    var RadioAdd = function() {
        var $input = $(this).addClass('jNiceHidden').wrap('<span class="jRadioWrapper jNiceWrapper"></span>')
        var $wrapper = $input.parent();
        var $a = $('<span class="jNiceRadio"></span>');
        $wrapper.prepend($a);
        /* Click Handler */
        $a.click(function() {
            var $input = $(this).addClass('jNiceChecked').siblings('input').attr('checked', true);

            /* uncheck all others of same name */
            $('input:radio[name="' + $input.attr('name') + '"]').not($input).each(function() {
                $(this).attr('checked', false).siblings('.jNiceRadio').removeClass('jNiceChecked');
            });

            if (window.opera)
                document.body.style += ""; // Force Opera redraw.
        })

        $input.click(function() {
            if (this.checked) {
                var $input = $(this).siblings('.jNiceRadio').addClass('jNiceChecked').end();
                /* uncheck all others of same name */
                $('input:radio[name="' + $input.attr('name') + '"]').not($input).each(function() {
                    $(this).attr('checked', false).siblings('.jNiceRadio').removeClass('jNiceChecked');
                });

            }
        }).focus(function() { $a.addClass('jNiceFocus'); }).blur(function() { $a.removeClass('jNiceFocus'); });

        /* set the default state */
        if (this.checked) { $a.addClass('jNiceChecked'); }
    };

    var CheckAdd = function() {
        var $input = $(this).addClass('jNiceHidden').wrap('<span class="jNiceWrapper"></span>');
        var $wrapper = $input.parent().append('<span class="jNiceCheckbox"></span>');
        var $chkboxParentSpan = $wrapper.parent();
        /* Click Handler */
        var $a = $wrapper.find('.jNiceCheckbox').click(function() {
            var $a = $(this);
            var input = $a.siblings('input')[0];
            if (input.checked === true) {
                input.checked = false;
                $a.removeClass('jNiceChecked');
            }
            else {
                input.checked = true;
                $a.addClass('jNiceChecked');
            }

            return false;
        });
        $input.click(function() {
            if (this.checked) { $a.addClass('jNiceChecked'); }
            else { $a.removeClass('jNiceChecked'); }
        }).focus(function() { $a.addClass('jNiceFocus'); }).blur(function() { $a.removeClass('jNiceFocus'); });

        /* set the default state */
        if (this.checked) { $('.jNiceCheckbox', $wrapper).addClass('jNiceChecked'); }
    };

    var TextAdd = function() {
        var $input = $(this).addClass('jNiceInput').wrap('<div class="jNiceInputWrapper"><div class="jNiceInputInner"></div></div>');
        var $wrapper = $input.parents('.jNiceInputWrapper');
        $input.focus(function() {
            $wrapper.addClass('jNiceInputWrapper_hover');
        }).blur(function() {
            $wrapper.removeClass('jNiceInputWrapper_hover');
        });
    };

    var TextAreaAdd = function() {
        var $textarea = $(this).addClass('jNiceTextArea').wrap('<div class="jNiceTextAreaWrapper"><div class="jNiceTextAreaInner"></div></div>');
        $(this).parents('.jNiceTextAreaWrapper').css({ width: $(this).attr("cols") * 10.5 + 'px' });

        var $wrapper = $textarea.parents('.jNiceTextAreaWrapper').children(".jNiceTextAreaInner").before("<div class='jNiceTextAreaTop'>&nbsp;</div>").after("<div class='jNiceTextAreaBottom'>&nbsp;</div>");
        var $wrapper = $textarea.parents('.jNiceTextAreaWrapper');
        $textarea.focus(function() {
            $wrapper.addClass('jNiceTextAreaWrapper_hover');
        }).blur(function() {
            $wrapper.removeClass('jNiceTextAreaWrapper_hover');
        });
    };

    var ButtonAdd = function() {
        var value = $(this).attr('value');
        $(this).replaceWith('<button id="' + this.id + '" name="' + this.name + '" type="' + this.type + '" class="' + this.className + '" value="' + value + '"><span><span>' + value + '</span></span>');
    };

    /* Hide all open selects */
    var SelectHide = function() {
        $('.jNiceSelectWrapper ul:visible').hide();
    };

    /* Check for an external click */
    var checkExternalClick = function(event) {
        if ($(event.target).parents('.jNiceSelectWrapper').length === 0) { SelectHide(); }
    };

    var SelectAdd = function(element, index) {
        var $select = $(element);
        index = index || $select.css('zIndex') * 1;
        index = (index) ? index : 0;
        /* First thing we do is Wrap it */
        $select.wrap($('<div class="jNiceWrapper"></div>').css({ zIndex: 100 - index }));


        var width = ($select.width() !== 0) ? $select.width() + 10 : parseInt($select.css("width").split('px')[0]) + 10;


        $select.addClass('jNiceHidden').addClass('hide').after('<div class="jNiceSelectWrapper"><div><span class="jNiceSelectText"></span><span class="jNiceSelectOpen"></span></div><ul></ul></div>');



        var $wrapper = $(element).siblings('.jNiceSelectWrapper').css({ width: width + 'px' });

        var openerWidth = ($('.jNiceSelectOpen', $wrapper).width() !== 0) ? $('.jNiceSelectOpen', $wrapper).width() : 21;


        $('.jNiceSelectText, .jNiceSelectWrapper ul', $wrapper).width(width - openerWidth);
        $($wrapper).parent(".jNiceWrapper").width(width + 5); ;

        /* IF IE 6 */
        if ($.browser.msie && jQuery.browser.version < 7) {
            $select.after($('<iframe src="javascript:\'\';" class="bgiframe"  marginwidth="0" marginheight="0" align="bottom" scrolling="no" tabIndex="-1" frameborder="0"  ></iframe>').css({ height: $select.height() + 4 + 'px', width: $select.width() + 4 + 'px' }));
        }
        /* Now we add the options */
        SelectUpdate(element);
        /* Apply the click handler to the Open */
        $('div', $wrapper).click(function() {
            var $ul = $(this).siblings('ul');
            if ($ul.css('display') == 'none') { SelectHide(); } /* Check if box is already open to still allow toggle, but close all other selects */
            $ul.show();
            var offSet = ($('a.selected', $ul).offset().top - $ul.offset().top);
            $ul.animate({ scrollTop: offSet });
            return false;
        });
        /* Add the key listener */
        $select.keydown(function(e) {
            var selectedIndex = this.selectedIndex;
            switch (e.keyCode) {
                case 40: /* Down */
                    if (selectedIndex < this.options.length - 1) { selectedIndex += 1; }
                    break;
                case 38: /* Up */
                    if (selectedIndex > 0) { selectedIndex -= 1; }
                    break;
                default:
                    return;
                    break;
            }
            $('ul a', $wrapper).removeClass('selected').eq(selectedIndex).addClass('selected');
            $('span:eq(0)', $wrapper).html($('option:eq(' + selectedIndex + ')', $select).attr('selected', 'selected').text());
            return false;
        }).focus(function() { $wrapper.addClass('jNiceFocus'); }).blur(function() { $wrapper.removeClass('jNiceFocus'); });
    };

    var SelectUpdate = function(element) {

        var $select = $(element);
        var $wrapper = $select.siblings('.jNiceSelectWrapper');
        var $ul = $wrapper.find('ul').find('li').remove().end().hide();
        $('option', $select).each(function(i) {
            $ul.append('<li><a href="#" index="' + i + '">' + this.text + '</a></li>');
        });
        /* Add click handler to the a */
        $ul.find('a').click(function() {
            $('a.selected', $wrapper).removeClass('selected');
            $(this).addClass('selected');
            /* Fire the onchange event */

            if ($select[0].selectedIndex != $(this).attr('index') && $select[0].onchange) {


                $select[0].selectedIndex = $(this).attr('index');

                document.all ? $select.get(0).fireEvent("onchange") : $select.change();

            }
            $select[0].selectedIndex = $(this).attr('index');

            $('span:eq(0)', $wrapper).html($(this).html());
            $ul.hide();
            return false;
        });
        /* Set the defalut */
        $('a:eq(' + $select[0].selectedIndex + ')', $ul).click();
    };

    var SelectRemove = function(element) {
        var zIndex = $(element).siblings('.jNiceSelectWrapper').css('zIndex');
        $(element).css({ zIndex: zIndex }).removeClass('jNiceHidden');
        $(element).siblings('.jNiceSelectWrapper').remove();
    };

    /* Utilities */
    $.jNice = {
        SelectAdd: function(element, index) { SelectAdd(element, index); },
        SelectRemove: function(element) { SelectRemove(element); },
        SelectUpdate: function(element) { SelectUpdate(element); }
    }; /* End Utilities */

    /* Automatically apply to any forms with class jNice */
    $(function() { if ($("#MSOLayout_InDesignMode").attr("value") != 1) $('.jNice').jNice(); });
})(jQuery);



/* Detect legacy browses */
if (!Array.prototype.push || !document.getElementById) {

}
else {


    var MG = {};
    /* Check if DOM has finished loading */
    $(function() {



        MG.ui = {
            stribedTables: function() {
                $('.MGTable tr:odd, .MGReferenceDetails  tr:odd, .result table tr:odd').addClass('even');
                /* CSSclass added here for the product search submit button */
                $('.criteriaLeft a:last').addClass('searchLink');
            },
            printLayout: function() {

                $("a.print").click(function() {
                    //$("head").find("link[@media=print]").attr("media", "all");
                    $("link[@rel*=style][title]").each(function() {
                        this.disabled = true;
                        if (this.title == "print_preview" || this.title == "main") {
                            this.disabled = false;
                        }
                    });
                    $("body").prepend("<p class='printPreview'>" + translations['UIContent_PrintMessage_Title'] + "</p><p class='printPreview'><a href='#' id='returnToNormal'>" + translations['UIContent_PrintMessage_Close'] + "</a></p>")
                    $(".mainCol").append("<p class='dynCopy'>&copy; 2010 M-real</p>")
                    $(".MGfooter").hide();
                    $("a#returnToNormal").click(function() {
                        $("link[@rel*=style][title]").each(function() {
                            if (this.title == "print_preview") {
                                this.disabled = true;
                            }
                        });
                        $(".printPreview").remove();
                        $(".dynCopy").remove();
                        $(".MGfooter").show();
                    });
                    window.print();
                });

            },

            initReferenceThumbnails: function() {
                $('.MGReferenceThumbnail').hide();
                // these 2 variable determine popup's distance from the cursor

                xOffset = 10;
                yOffset = 30;

                $("a.preview").hover(function(e) {
                    if ($(this).siblings("a").children("img").attr("src") != null) {
                        $("body").append("<p id='preview'><img src='" + $(this).siblings("a").children("img").attr("src") + "' alt='Image preview' /></p>");
                        $("#preview")
	                    .css("top", (e.pageY - xOffset) + "px")
	                    .css("left", (e.pageX + yOffset) + "px")
	                    .fadeIn("fast");
                    }
                },
	        function() {

	            $("#preview").remove();
	        });
                $("a.preview").mousemove(function(e) {
                    $("#preview").css("top", (e.pageY - xOffset) + "px").css("left", (e.pageX + yOffset) + "px");
                });

            },

            initContentHighlights: function() {



                /* ------------------------------------------------------------------



					Hide ContentHiglightText and show it with mouseover



					------------------------------------------------------------------ */
                // options

                var distance = 10;

                var time = 250;

                var hideDelay = 1000;



                var hideDelayTimer = null;



                // tracker

                var beingShown = false;

                var shown = false;

                var shownEl = null;

                var timeOuts = {};

                if ($('.MGContentHighLight').parent("#listItem").length > 0) {
                    return false;
                }

                $('.MGContentHighLight').each(function(i) {
                    if ($(this).hasClass('static')) {
                        return false;
                    }
                    $(this).parent(".group").height($(this).height());
                    var descriptionHeight = $(this).find(".contentHighlightDescription").height();
                    $(this).attr("id", "MGContentHighLight" + i);

                    $(this).find(".contentHighlightDescription").height(descriptionHeight).css({ display: "none", visibility: "visible" });

                    // set the mouseover and mouseout

                    $(this).hover(

                    function() { //MOUSEOVER
                        $(this).addClass("contentHiglightHover");
                        if (timeOuts[$(this).attr("id")]) { //if re-hovering same element
                            clearTimeout(timeOuts[$(this).attr("id")]);
                            delete (timeOuts[$(this).attr("id")]);
                            return;

                        } else { // element is different from shown element

                            $(this).children("dd").children(".contentHighlightDescription").css({
                                display: "block",
                                height: "0"
                            }).animate({
                                height: descriptionHeight
                            }, 1500);

                            shownEl = $(this);
                        }


                    }, function(e) { //MOUSEOUT

                        $(this).removeClass("shown");
                        $(this).removeClass("contentHiglightHover");
                        var targetEl = $(this);

                        timeOuts[$(this).attr("id")] = setTimeout(function() {

                            $(targetEl).children("dd").children(".contentHighlightDescription").animate({
                                height: "0"
                            }, 1500, function() {
                                shownEl = null;
                                $(targetEl).children("dd").children(".contentHighlightDescription").css('display', 'none');

                            });



                            delete (timeOuts[$(targetEl).attr("id")]);

                        }, hideDelay);


                    }

                ); //.hover END

                });


            },
            browseProductsLink: function() {
                // Without js support, users are directed to the products front page, otherwise they will get a modal popup with the browse products page.
                if (document.getElementById("productsPopup")) {
                    var url = $('#productsPopup').attr('href').toString();
                    var urlSplit = url.split("?");
                    var params = urlSplit[1];
                    var newUrl = "/Pages/BrowseSpecial.aspx?" + params;
                    $("#productsPopup").attr('href', newUrl);
                }
            },
            initEqualHeightColumns: function() {
                $(".referenceNavigator .col1 .webPartContent, .referenceNavigator .col2 .webPartContent").equalHeights();
                $(".ProductsSiteMap .webPartContent").equalHeights();
            },
            licenceChk: function() {

                $("#chkPostBackAuto input").click(function() {
                    if ($(this).parent().parent().attr('id') === 'chkPostBackAuto') {

                        //                        alert('test');
                        if ($("#chkPostBackAuto input").attr('checked') == false) {
                            $("a.buttonDisableable").attr("disabled", "disabled");
                        }

                        WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions($("#chkPostBackAuto input").attr("id"), '', true, '', '', false, true));
                    }
                    return false;
                });

                $("#chkPostBackAuto .jNiceWrapper .jNiceCheckbox").click(function() {

                    if ($(this).parent().parent().attr('id') === 'chkPostBackAuto') {

                        if ($("#chkPostBackAuto input").attr('checked') == false) {
                            $("a.buttonDisableable").attr("disabled", "disabled");
                            //                            alert($("a.buttonDisableable").attr("disabled"));
                        }

                        WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions($("#chkPostBackAuto input").attr("id"), '', true, '', '', false, true));
                    }
                    return false;
                });
            },
            eventDescriptions: function() {
                $(".eventDesc").click(function() {
                    $(this)
                    .parent()
                    .next()
                    .slideToggle("slow")
                    .end()
                    .parent()
                    .toggleClass('eventOpen');
                    $(this).each(function() {
                        $(this).text($(this).text() == "details" ? "close" : "details");
                    });
                });
            },
            productFeaturesTable: function() {
                $(".productFeatures table td:first-child").css("width", "180px");
                $(".productFeatures table tr:even").css("background-color", "#F2F3F4");

                $(".productFeatures table").hide();
                $(".productFeatures table:first").show();
                $(".productFeatures table[class]:first").show();
                if ($(".specificationPDF").length > 0) {
                    var TempArr = $(".specificationPDF").attr("href").split("&");
                    var origUrl = TempArr[0] + "&" + TempArr[1];

                    $(".specificationPDF").attr("href", origUrl);
                }

                if ($(".productFeatures .unitSelection input").length > 0) {
                    var selected = $(".productFeatures .unitSelection input:checked").val();
                    $(".productFeatures table[class='" + selected + "']").show();
                } else {
                    $(".productFeatures table").show();
                }
                $(".productFeatures .unitSelection input").click(function() {
                    $(".productFeatures table").hide();
                    $(".productFeatures table:first").show();
                    var selected = $(".productFeatures .unitSelection input:checked").val();
                    $(".productFeatures table[class='" + selected + "']").show();
                    var PDFUrl = origUrl + "&std=" + $(".productFeatures .unitSelection input:checked").val();
                    $(".specificationPDF").attr("href", PDFUrl);
                });

            },
            productFeaturesInternalTable: function() {
                $(".productFeaturesInternal .unitSelection").css("text-align", "right");
                $(".productFeaturesInternal .unitSelection ~ div").find("table").css("width", "100%");
                $(".productFeaturesInternal .unitSelection ~ div").find("table td:first-child").css("width", "180px");
                $(".productFeaturesInternal .ms-WPBorder h4 ~ div").find("table tr:even").css("background-color", "#F2F3F4");
                $(".productFeaturesInternal .unitSelection ~ div").find("table").hide();
                $(".productFeaturesInternal .unitSelection ~ div:first").find("table").show();
                if ($(".specificationPDF").length > 0) {
                    var TempArr = $(".specificationPDF").attr("href").split("&");
                    var origUrl = TempArr[0] + "&" + TempArr[1];
                    $(".specificationPDF").attr("href", origUrl);
                }

                if ($(".productFeaturesInternal .unitSelection input").length > 0) {
                    var selected = $(".productFeaturesInternal .unitSelection input:checked").val();
                    $(".productFeaturesInternal table[class='" + selected + "']").show();
                } else {
                    $(".productFeaturesInternal table").show();
                }
                $(".productFeaturesInternal .unitSelection input").click(function() {
                    $(".productFeaturesInternal .unitSelection ~ div").find("table").hide();
                    var selected = $(".productFeaturesInternal .unitSelection input:checked").val();
                    $(".productFeaturesInternal table[class='" + selected + "']").show();
                    var PDFUrl = origUrl + "&std=" + $(".productFeaturesInternal .unitSelection input:checked").val();
                    $(".specificationPDF").attr("href", PDFUrl);
                });
            },
            setDefaultProductFieldTexts: function() {
                if ($(".basisWeight input:first").val() === "") {
                    $(".basisWeight input:first").val("Min");
                }
                if ($(".basisWeight input:last").val() === "") {
                    $(".basisWeight input:last").val("Max");
                }
            },
            fixSomeCSS: function() {
                /* Fixing some styling that cannot be applied using CSS (for IE). */
                /* Key feature table: first row should align vertically to top */

                $(".MGKeyFeatures tr td:first").css("vertical-align", "top");

                /* Related documents list icon switch based on file suffix */
                $(".col2 .documentLink").each(
                    function(i) {
                        var url = $(this).attr("href").split("."), last = url.length-1;
                        $(this).addClass("icon_" + url[last]);
                    }
                );



                },
            resizeIframes: function() {
               var height = $("iframe").parent().parent(".webPart").height();
               $("iframe").attr("height", height);
            },
            
            init: function() {

                /* ------------------------------------------------------------------

					Initialize all MG.ui functions

					------------------------------------------------------------------ */

                MG.ui.initContentHighlights();
                MG.ui.stribedTables();
                MG.ui.browseProductsLink();
                MG.ui.initEqualHeightColumns();
                MG.ui.initReferenceThumbnails();
                MG.ui.printLayout();
                MG.ui.licenceChk();
                MG.ui.eventDescriptions();
                MG.ui.productFeaturesTable();
                MG.ui.productFeaturesInternalTable();
                MG.ui.setDefaultProductFieldTexts();
                MG.ui.fixSomeCSS();
                MG.ui.resizeIframes();

            }

        }

        MG.ui.init();


    });

}

jQuery.fn.equalHeights = function() {
    var maxHeight = 0;
    this.each(function() {
        if (this.offsetHeight > maxHeight) { maxHeight = this.offsetHeight; }
    });
    this.each(function() {
        $(this).height(maxHeight + "px");
        if (this.offsetHeight > maxHeight) {
            $(this).height((maxHeight - (this.offsetHeight - maxHeight)) + "px");
        }
    });
};

/*
Function to open the site front page flash "cards".
*/
function linkOut(id) {
    theUrl = "/_layouts/tedi/ReferenceCard.aspx?cardID=" + id + "&modal=true&height=260&width=415&TB_iframe=true";
    tb_show("ReferenceCard", theUrl, "");
}

/*
HACK for MOSS bad browsing of DOM object model on page
In some cases MOSS javascript function MSOLayout_GetRealOffset omit BODY and throw NullReference exception 
*/
MSOLayout_GetRealOffset = function(StartingObject, OffsetType, EndParent) {
    var realValue = 0;
    if (!EndParent) EndParent = document.body;
    for (var currentObject = StartingObject; currentObject != null && currentObject != EndParent && currentObject != document.body; currentObject = currentObject.offsetParent) {
        realValue += eval('currentObject.offset' + OffsetType)
    }
    return realValue;
}