(function() {
    
    var W = this, D = this.document;
    
    $('html').attr('id', 'js');
	
    $(document).ready(function () {
        
        // auto clean search field
        var searchFieldDefaultValue = $('#yourSearchKeyword').val();
        $('#yourSearchKeyword').focus( function(){
            if ($(this).val() == searchFieldDefaultValue) {
                $(this).val('');
            }
        }); 
        $('#yourSearchKeyword').blur( function(){
            if ($(this).val() == '') {
                $(this).val(searchFieldDefaultValue);
            }
        }); 

        /**
        * @section       Menu Main
        */
        $('#header .menu li ul.niv0').hide();       
        $('#header .menu li.niv0').hover(function(){
            var subMenu = $(this).find('ul.niv0');
            if (subMenu.is(":hidden")) {
                subMenu.slideDown(100);
                var menuLinkWidth = 0;
                $(this).find('ul.niv0 > li > a').each(function() {
                    if ($(this).width() > menuLinkWidth) {
                    menuLinkWidth = $(this).width();
                    }
                });
            $(this).find('ul.niv0 > li > a').parent().css('width', menuLinkWidth);
            }
            
        }, function(){
            var subMenu = $(this).find('ul.niv0');
                subMenu.slideUp(100);
        });
        
        $('#header .menu li ul.niv1').hide();
        $('#header .menu li.niv0 li').hover(function(){
            var subMenu = $(this).find('ul.niv1');
            var menuParentWidth = subMenu.parent().parent().width();
            subMenu.css('left', menuParentWidth);
            
            if (subMenu.is(":hidden")) {
                
                subMenu.slideDown(100);
            }
        }, function(){
            var subMenu = $(this).find('ul.niv1');
                subMenu.slideUp(100);
        });

        // device details show hide
        $('.deviceDetails li a').click(function () {
            if ($(this).hasClass('showAll')) {
                var aItems = $('.deviceDetails li a');
                var itemsLen = aItems.length;
                var sAction = 'open';
                if ($(this).parent().hasClass('on')) {
                    $(this).parent().removeClass('on');
                    sAction = 'close';
                } else {
                    $(this).parent().addClass('on');
                }
                for (var i=0; i<itemsLen; i++) {
                    if (! $(aItems[i]).hasClass('showAll')) {
                        if (sAction == 'open' && $(aItems[i]).parent().hasClass('on')) {
                            $(aItems[i]).parent().removeClass('on');
                        }
                        if ((sAction == 'close') && !$(aItems[i]).parent().hasClass('on')) {
                            $(aItems[i]).parent().addClass('on');
                        }
                        if ($(this).parent().parent().hasClass('move')) {
                            $(this).parent().parent().removeClass('move');
                        }
                        showHideBlock(aItems[i]);
                    }
                }
            } else {
                showHideBlock(this);
            }
            return false;
        });
        $('.support li>a').click(function () {
            showHideBlock(this);
            return false;
        });
        var showHideBlock = function(e) {
            var elmt = $(e);
            var itemContainer = elmt.parent();
            var container = elmt.parent().parent();
            var elmtToMove = elmt.next();
            var moveDuration = 300;
            var elmtToMoveHeight = elmtToMove.find('dl').innerHeight();
            if(!container.hasClass('move')) {
                container.addClass('move');
                
                var open = elmt.parent().hasClass('on');
                if(open) {
                    elmtToMove.animate({
                        height: "0px"
                    }, moveDuration, function () {
                        itemContainer.removeClass('on');
                        container.removeClass('move');
                    } );
                    
                } else {
                    itemContainer.addClass('on');
                    elmtToMove.css('height', '0').animate({
                        height: elmtToMoveHeight+"px"
                    }, moveDuration, function () {
                        container.removeClass('move');
                    } );
                }
            }
        };
        
        // retailers show hide
        $('.retailers dt a span').click(function () {
            var elmt = $(this);
            var itemContainer = elmt.parent();
            var container = elmt.parent().parent().parent();
            var elmtToMove = elmt.parent().parent().next();
            var moveDuration = 300;
            var elmtToMoveHeight = 340;//elmtToMove.find('ul').innerHeight();
            if(!container.hasClass('move')) {
                container.addClass('move');
                
                var open = elmt.parent().hasClass('on');
                if(open) {
                    elmtToMove.animate({
                        height: "0px"
                    }, moveDuration, function () {
                        itemContainer.removeClass('on');
                        container.removeClass('move');
                    } );
                    
                } else {
                    itemContainer.addClass('on');
                    elmtToMove.css('height', '0').animate({
                        height: elmtToMoveHeight+"px"
                    }, moveDuration, function () {
                        container.removeClass('move');
                    } );
                }
            }
            
            return false;
        });
        
        /**
        * @section       Print button
        * @note          Open the print nav window on click
        */
        if ($('a.print').length > 0) {
            $('a.print').click ( function () {
                window.print();
                return false;
            });
        }

        
    });
	
})();

/**
* @description  convert a text into xml
*/
function StringtoXML(text){
    if (window.ActiveXObject){
        var doc = new ActiveXObject('Microsoft.XMLDOM');
        doc.async = 'false';
        doc.loadXML(text);
    } else {
        var parser = new DOMParser();
        var doc = parser.parseFromString(text,'text/xml');
    }
    return doc;
} 
