﻿var wap = {
    test: function (o) {
    },

    settings: {},
    service: {
        dispose: function (sender, args) {
            var elements = args.get_panelsUpdating();
            for (var i = elements.length - 1; i >= 0; i--) {
                var element = elements[i];
                var allnodes = element.getElementsByTagName('*'), length = allnodes.length;
                var nodes = new Array(length)
                for (var k = 0; k < length; k++) nodes[k] = allnodes[k];
                for (var j = 0, l = nodes.length; j < l; j++) {
                    var node = nodes[j];
                    if (node.nodeType === 1) {
                        if (node.dispose && typeof (node.dispose) === "function")
                            node.dispose();
                        else if (node.control && typeof (node.control.dispose) === "function")
                            node.control.dispose();
                        var behaviors = node._behaviors;
                        if (behaviors) {
                            behaviors = Array.apply(null, behaviors);
                            for (var k = behaviors.length - 1; k >= 0; k--) behaviors[k].dispose();
                        }
                    }
                }
                element.innerHTML = '';
            }
        },

        search: {
            // web service object for search result pagination animations
            //
            pagination: {
                init: function () {
                    Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(this.initializeRequest);
                    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(this.beginRequestHandler);
                    Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(wap.service.dispose);
                    Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(this.pageLoadedHandler);
                    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(this.endRequestHandler);
                },
                initializeRequest: function (sender, args) {
                    var request = args.get_request(), data = { ctrl: sender._postBackSettings.sourceElement };
                    // if we're using the add-to-cart webservice, avoid posting back the results as we need to redirect
                    if (data.ctrl.id.match(/addtocart/gi))
                        args.set_cancel(true);
                },
                beginRequestHandler: function (sender, args) {
                    var request = args.get_request(), data = { ctrl: sender._postBackSettings.sourceElement };
                    request.set_userContext(data);
                    if (data.ctrl.id.match(/(next|prev|pageindex|recordsperpage|recordsort|btnsearch|ddlcategory)/gi))
                        wap.service.search.contentloader('div#search-results #results');
                },
                endRequestHandler: function (sender, args) {
                    var response = args.get_response();
                    if (response.get_responseAvailable()) {
                        var webRequest = response.get_webRequest(), data = webRequest.get_userContext();
                        jQuery('.contentloader').remove();
                        if (data.ctrl.id.match(/(next|prev|pageindex)/gi)) // auto-scroll to view upon navigational change
                            jQuery('html,body').animate({ scrollTop: 200 }, 500);
                    }
                },
                pageLoadedHandler: function (sender, args) {
                    var resultCount = jQuery('input[id$=hdnResultCount]');
                    if (jQuery(resultCount).length > 0) {
                        resultCount = jQuery(resultCount).val().split(':');
                        jQuery('ul#ulResults').find('a:eq(0) span').html('(' + resultCount[0] + ')');
                        jQuery('ul#ulResults').find('a:eq(1) span').html('(' + resultCount[1] + ')');
                    }
                }
            },

            history: function () {
                var hash = window.location.href.split('#'); hash = hash.length > 0 ? hash[1] : false;
                //if (hash && window.location.href.indexOf('results') > 0)
                //    window.location.href = 'results.aspx';
            },

            stylize: {
                init: function () {
                    if (typeof (Sys) != 'undefined') {
                        Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(this.beginRequestHandler);
                        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(this.endRequestHandler);
                    }
                    jQuery('input[type="radio"]').each(function () {
                        if (this.checked) this.parentNode.className = 'selected';
                    });
                },
                beginRequestHandler: function (sender, args) {
                    var request = args.get_request(), data = { ctrl: args._postBackElement };
                    wap.service.search.stylize.style({ remove: jQuery('#' + data.ctrl.id) });
                    request.set_userContext(data);
                    wap.service.search.contentloader('div.search-container');
                },
                endRequestHandler: function (sender, args) {
                    var response = args.get_response();
                    if (response.get_responseAvailable()) {
                        var webRequest = response.get_webRequest(), data = webRequest.get_userContext();
                        wap.service.search.stylize.style();
                        jQuery('.contentloader').remove();
                    }
                },
                style: function (o) {
                    if (o && o.remove) jQuery(o.remove).parents('table').find('td').removeClass('selected');
                    jQuery('div.search-container input').each(function () {
                        if (this.checked) this.parentNode.className = 'selected';
                    });
                }
            },

            colorboxes: {
                init: function () {
                    jQuery('a.inquire,a.s-email').live('mouseover', function () {
                        if (!jQuery(this).data('init'))
                            jQuery(this).data('init', true).colorbox({ width: '525px', height: '500px', iframe: true, opacity: '0.4' });
                    });
                }
            },

            contentloader: function (selector) {
                if (jQuery('div.contentloader').length == 0) {
                    var html = jQuery('<div class="contentloader">&nbsp;</div>')
                            .css({ height: jQuery(selector).innerHeight(), width: jQuery(selector).innerWidth() });
                    jQuery(selector).prepend(html);
                }
                if (jQuery('span.contentloader').length == 0)
                    jQuery('.breadcrumb').prepend('<span class="contentloader">Loading, please wait...</span>');
            }
        },

        general: {},

        _MSAjax_OnComplete: function (arg) { return true; },
        _MSAjax_OnError: function (arg) { alert("error has occured: " + arg.get_message()); jQuery('.contentloader').remove(); },
        _MSAjax_OnTimeOut: function (arg) { alert("timeout has occured"); jQuery('.contentloader').remove(); }

    },

    alivechat: {
          
        init: function () {
            var wsa_host = (("https:" == document.location.protocol) ? "https://" : "http://");
            var js = document.createElement('script');
            js.setAttribute('language', 'javascript');
            js.setAttribute('type', 'text/javascript');
            js.setAttribute('src', wsa_host + 'www.websitealive10.com/1683/Visitor/vTracker_v2.asp?websiteid=0&groupid=1683');
            document.getElementsByTagName('head').item(0).appendChild(js);
        }
          //js.setAttribute('src', wsa_host + 'a4.websitealive.com/1683/Visitor/vTracker_v2.asp?websiteid=0&groupid=1683');
    },

    utilities: {
        init: function () {
            wap.utilities.tips.init();
            jQuery('#lnkQuickPartsSearch').colorbox({ width: '650px', height: '375px', iframe: true, href: wap.settings.path + '/controls/search/QuickPartsSearch.aspx', opacity: '0.5',
                onComplete: function () { jQuery('#cboxTitle').hide(); jQuery('#cboxLoadedContent').css({ height: 360 }); jQuery('#cboxLoadedContent, #cboxClose').css({ marginTop: 0, top: 2 }); }
            });
            jQuery('#search input.text').focus(function () { if (this.value == 'SEARCH') { this.value = ''; this.style.color = '#000'; } });
            // help guard against form injection
            jQuery('form:eq(0)').submit(function () { jQuery(this).prepend('<input type="hidden" name="_fip" id="_fip" />'); });
        },

        tips: {
            values: [{ targ: 'a.search-question' }, { targ: 'a.share'}],
            init: function () {
                for (var i = 0; i < wap.utilities.tips.values.length; i++) {
                    jQuery(wap.utilities.tips.values[i].targ).hoverIntent(
                        function () { jQuery(this).next('div.simple-tip').css({ left: wap.utilities.tips._getoffset(this, jQuery(this).next('div.simple-tip')), top: jQuery(this).offset().top + 20 }).slideDown(150); },
                        function () { jQuery(this).next('div.simple-tip').hide(); }
                    );
                    jQuery(wap.utilities.tips.values[i].targ).next('div.simple-tip')
                        .bind('mouseover', function () { jQuery(this).prev('a').trigger('mouseover'); })
                        .bind('mouseout', function () { jQuery(this).prev('a').trigger('mouseout'); });
                }
            },
            _getoffset: function (ref, targ) {
                jQuery(targ).show().css({ visibility: 'hidden' });
                var offset = jQuery(ref).offset().left - ((jQuery(targ).outerWidth() / 2) - (jQuery(ref).outerWidth() / 2));
                jQuery(targ).css({ visibility: 'visible' }).hide();
                return offset;
            }
        },

        tabs: {
            toggle: function (o, selector, transition) {
                jQuery(o).siblings().removeClass('selected').end().addClass('selected');
                jQuery(o).parent().find('a').each(function (index) {
                    var targ = jQuery(selector + ':eq(' + index + ')');
                    if (transition && transition == 'slide') { jQuery(targ).slideUp(); } else { jQuery(targ).hide(); }
                    if (jQuery(this).attr('id') == jQuery(o).attr('id') && !jQuery(targ).is(':visible')) {
                        if (transition && transition == 'slide') { jQuery(targ).slideDown(); } else { jQuery(targ).show(); }
                        jQuery(selector + '-note').hide();
                    }
                    else if (jQuery(this).attr('id') == jQuery(o).attr('id'))
                        jQuery(selector + '-note').show();
                });
            }
        },

        keyword: {
            _timeoutChange: false, _cache: false,
            load: function (event, o, time) {
                clearTimeout(wap.utilities.keyword._timeoutChange);
                var length = jQuery.trim(o.value).length;
                if (jQuery.trim(o.value) != wap.utilities.keyword._cache)
                    wap.utilities.keyword._timeoutChange = setTimeout("wap.utilities.keyword.change('" + o.id + "');", time);
            },
            change: function (id) {
                // invoking the ajax "Search" button; but in order to let the server know that this was actually a request
                // from the txtKeywords box, we'll auto flag a hidden input field. Cannot use the out-of-the-box .net OnTextChanged event
                // as this is buggy
                jQuery('.search-options input#hdnIsKeywordSearch').val('True');
                jQuery('.search-options input[id$="btnSearch"]').trigger('click');
                wap.utilities.keyword._cache = jQuery('#' + id).val();
            }
        },

        part: {
            photos: {
                _wait: true,
                init: function () {
                    // some issue with firefox not calculating the correct div dimensions on load; waiting fixes the situation
                    if (wap.utilities.part.photos._wait) { setTimeout('wap.utilities.part.photos.init()', 500); wap.utilities.part.photos._wait = false; return; }

                    jQuery('div.thumbnail-scroller img').each(function () {
                        jQuery(this).bind('mouseover', function () {
                            jQuery('div.detail-image img').attr('src', jQuery(this).attr('alt'));
                        });
                    });

                    var selector = 'div.thumbnail-scroller #thumbnails span';
                    var boundary = jQuery(selector).outerHeight() - jQuery('div.thumbnail-scroller > div').outerHeight() + 6;
                    boundary = boundary < 0 ? 0 : boundary;
                    if (boundary > 0) {
                        jQuery('div.thumbnail-scroller a.up').mouseover(function () {
                            jQuery(selector).animate({ top: 0 }, { duration: 750, easing: "swing" });
                        }).mouseout(function () { jQuery(selector).stop(); });
                        jQuery('div.thumbnail-scroller a.dn').mouseover(function () {
                            jQuery(selector).animate({ top: "-" + boundary + "px" }, { duration: 750, easing: "swing" });
                        }).mouseout(function () { jQuery(selector).stop(); });
                    }
                    if (!jQuery('div.detail-image img').attr('src').match(/_default\-part\.jpg/gi)) {
                        jQuery('div.detail-image img, div.detail-image a').colorbox({
                            href: function () {
                                if (jQuery(this).hasClass('part') || jQuery(this).prevAll('img:first').hasClass('part'))
                                    return jQuery('div.detail-image img').attr('alt');
                                else
                                    return jQuery('div.detail-image img').attr('src');
                            }, opacity: '0.4', title: '&nbsp;'
                        });
                    }
                }
            },

            gallery: {
                isLoaded: 0,
                init: function (t) {
                    jQuery('img.photos').live('mouseover', function () {
                        if (!jQuery(this).data('init')) {
                            jQuery(this).data('init', true)
                                .hoverIntent(function () { wap.utilities.part.gallery.load(this); },
                                             function () { wap.utilities.part.gallery.unload(); }
                               ).trigger('mouseover');
                        }
                    });
                    jQuery('div.simple-search-gallery').live('mouseover', function () {
                        jQuery(this).next('.photos').trigger('mouseover');
                    }).live('mouseout', function () {
                        jQuery(this).next('.photos').trigger('mouseout');
                    });
                    jQuery('div.simple-search-gallery a.x').live('click', function () { wap.utilities.part.gallery.unload(); });
                },
                load: function (obj) {
                    var id = jQuery(obj).attr('value'), targId = id + '_photos';
                    if (id != wap.utilities.part.gallery.isLoaded) {
                        wap.utilities.part.gallery.unload();

                        var data = eval('(' + jQuery(obj).attr('data') + ')');
                        var targ_offset = jQuery(obj).offset(), offset = 175;
                        var x = offset + 10 > targ_offset.left ? targ_offset.left : targ_offset.left - offset;
                        var y = targ_offset.top + 35;

                        if (jQuery('#' + targId).length == 0) {
                            files = data.files;
                            var html = '', html_thumbnails = ''; var multiple = (files.length > 1);
                            var path = wap.settings.path + '/media/images/' + data.type + '/';
                            if (multiple) {
                                for (var i = 0; i < files.length; i++) {
                                    var f = files[i];
                                    html_thumbnails += '<li><img src="' + path + (f.thumb.length > 0 ? f.thumb : f.name) + '"';
                                    html_thumbnails += ' data="' + path + f.name + '" width="75" height="51"  /></li>';
                                }
                            }
                            html = '<div id="' + targId + '" class="simple-search-gallery"><div><a class="x">X</a><h5>' + obj.alt + '</h5>';
                            if (multiple) html += '<ul>' + html_thumbnails + '</ul>';

                            html += '&nbsp;<img src="' + path + files[0].name + '"';
                            if (files[0].dimensions) {
                                var w = multiple ? files[0].dimensions.width > 315 ? 315 : files[0].dimensions.width : files[0].dimensions.width > 400 ? 400 : files[0].dimensions.width;
                                var h = files[0].dimensions.height > 240 ? 240 : files[0].dimensions.height;
                                html += h == 250 ? ' height="' + h + '"' : ' width="' + w + '"'; // height trumps width in dimension assignment
                            }
                            html += ' class="main' + (!multiple ? ' main-center' : '') + '" />';

                            html += '<span class="clear"></span></div></div>';
                            jQuery(obj).parent().prepend(html);
                            jQuery('#' + targId + ' ul li img').bind('mouseover', function () { wap.utilities.part.gallery.swap(this); });
                        }
                        var o = jQuery('#' + targId);
                        /*if (offset + 10 > targ_offset.left)
                        jQuery(o).addClass('simple-search-gallery-inside');
                        else
                        jQuery(o).removeClass('simple-search-gallery-inside');*/

                        var relativeY = targ_offset.top - jQuery(o).offset().top + jQuery(o).outerHeight(true) + 25;
                        if (relativeY > jQuery(window).height()) {
                            y = targ_offset.top - jQuery(o).outerHeight(true);
                            jQuery(o).addClass('simple-search-gallery-top');
                            jQuery(o).append(jQuery(o).find('a,h5')).end().find('a:first,h5:first').remove();
                        }
                        else {
                            jQuery(o).removeClass('simple-search-gallery-top');
                            jQuery(o).find('div:first').prepend(jQuery(o).find('a,h5')).end().find('a:eq(1),h5:eq(1)').remove();
                        }

                        jQuery(o).css({ left: x, top: y }).show();
                        wap.utilities.part.gallery.isLoaded = id;
                    }
                },
                swap: function (obj) {
                    jQuery(obj).parents('div:first').find('img.main').attr('src', jQuery(obj).attr('data'));
                },
                unload: function () {
                    if (wap.utilities.part.gallery.isLoaded) jQuery('#' + wap.utilities.part.gallery.isLoaded + '_photos').hide();
                    wap.utilities.part.gallery.isLoaded = 0;
                }
            }
        },

        masks: {
            init: function () {
                jQuery('input.int').live('focus', function () { jQuery(this).mask("9?99999", { placeholder: '' }); });
               // jQuery('input.phone').live('focus', function () { jQuery(this).mask('999-999-9999'); });
                //jQuery('input.zip').live('focus', function () { jQuery(this).mask('99999', { placeholder: '' }); });
                jQuery('input.cc').mask('9999999999999999', { placeholder: '' });
            }
        },

        render: {
            email: function (e, d, t) {
                document.write("<a href=\"mailto:" + e + "@" + d + '.' + (t ? t : 'com') + "\">" + e + "@" + d + '.' + (t ? t : 'com') + "</a>");
            }
        }
    }
}
