﻿var imgHeightDefault;
var imgWidthDefault;
var zoomInClickEvent = true;
var zoomOutClickEvent = true;
var zooming = false;

//
// NOTE: Be sure to include the jQuery js file!
//
jQuery.noConflict();

var ARI;
if (!ARI) {
    ARI = {};
}
if (!ARI.Parts) {
    ARI.Parts = (function($) {
        var idPrefix = '#ariparts_';
        var idSearchPrefix = '#arisearch_';
        var ddlBrands = idPrefix + 'ddlBrands';
        var imgPart = idPrefix + 'image';
        var imgLoading = idPrefix + 'ImgLoading';
        var assemblyImgLoading = idPrefix + 'assemblyImgLoading';
        var image_div = idPrefix + 'image_div';
        var btnNewModel = idPrefix + 'btnNewModel';
        var divAssembly = idPrefix + 'divAssembly';
        var partsdetails = idPrefix + 'partsdetails';
        var divContainerddlBrands = idPrefix + 'BrandsContainer';
        var GUI = idPrefix + 'GUI';
        var divAsmlisting = idPrefix + 'divAsmlisting';
        var divTokenExpired = idPrefix + 'divTokenExpired';
        var divDataLoadFailed = idPrefix + 'divDataLoadFailed';
        var divAsm = idPrefix + 'divAsm';
        var ddlAsm = idPrefix + 'ddlAsm';
        var ZoomIn = idPrefix + 'btnZoomIn';
        var ZoomOut = idPrefix + 'btnZoomOut';
        var divError = idPrefix + 'divError';
        var divDropDowns = idPrefix + 'DivDropDowns';
        var txtError = idPrefix + 'txtError';
        var tblAssmDetails = idPrefix + 'tblAssmDetails';
        var divParts = idPrefix + 'divParts';
        var ddlSearchBrands = idSearchPrefix + 'ddlBrands';
        var txtModel = idSearchPrefix + 'txtModel';
        var txtSearch = idSearchPrefix + 'txtSearch';
        var SearchBySearch = idSearchPrefix + 'SideBySideSearch';
        var btnLookup = idSearchPrefix + 'btnLookup';
        var imgLoadingSearch = idSearchPrefix + 'searchImgLoading';
        var divPartsStream = idPrefix + 'Stream';
        var SearchDisplay = idSearchPrefix + 'Display';
        var SearchLabel = idSearchPrefix + 'SearchLabel';
        var SearchHR = idSearchPrefix + 'SearchHR';
        var SearchByModel = idSearchPrefix + 'SideBySideModel';

        var serviceUrl = serviceDomain + '/parts.aspx';
        var scriptLocation = serviceDomain + '/assets/js/ariparts.js';
        var tokenExpired = 'Token expired';
        var usegui = false;
        var token = "";
        var bError = false;
        var oemID;
        var oemSearchID;
        var locationHref = encodeURIComponent(window.location.href);
        var showNotice;

        // Pick out the usegui parameter, if specified, and set the corresponding usegui variable.
        // It must be passed as either "usegui=true" or "usegui=false" in the ariparts.js script
        // querystring.  Also, grab the client token.
        $('script[src^=' + scriptLocation + ']').each(function() {
            var useguiParam = this.src.match(/\?.*usegui=(true|false)*/);
            if (useguiParam && useguiParam.length >= 2) {
                usegui = (useguiParam[1] == 'true');    // true or false
            }
            var tokenParam = this.src.match(/\?.*token=([0-9A-Za-z-]+)*/);
            if (tokenParam && tokenParam.length >= 2) {
                token = tokenParam[1];
            }
        });

        if (usegui) {
            $(document).ready(function() {
                //if (jQuery.getCookie("PartStreamLangCode", "PartStreamLangCode").toLowerCase() == langCode.toLowerCase())
                    //ARI.Parts.Events.PartStreamLangReset();
            
                if ($('#ariparts_notice').css('display') == 'none')
                    showNotice = false;
                else
                    showNotice = true;
                $(divPartsStream).css('display', 'block');
                $(divAssembly).removeClass('show').addClass('hide');
                $(GUI).removeClass('show').addClass('hide');
                $(divError).removeClass('show').addClass('hide');
                $(imgLoadingSearch).removeClass('show').addClass('hide');                               

                if ($("#languageId").length > 0) {
                    //wire up lang seclect box
                    jQuery("#languageId option[value='" + langCode + "']").attr("selected", "selected")
                    $("#languageId").change(function() {
                        ARI.Parts.Events.PartStreamLangReset();
                    });
                }                          

                //Set margin of Thinking gif dynamically due to custom img area
                $(assemblyImgLoading).css('margin', parseInt(imgHeightDefault) / 2 - 16 + 'px auto');

                if ($.browser.msie) {
                    var imagediv = document.getElementById('ariparts_image_div');

                    imagediv.ondragstart = function() { return false; };
                    imagediv.ondrag = function() { return false; };
                    imagediv.ondragend = function() { return false; };
                }

                //Set drag on overflow
                $('#ariparts_image_div').mousedown(function(event) {
                    // attach 3 pieces of data to the #timeline element
                    $(this)
                      .data('down', true) // a flag indicating the mouse is down
                      .data('x', event.clientX) // the current mouse down X coord
                      .data('y', event.clientY) // the current mouse down Y coord
                      .data('scrollLeft', this.scrollLeft) // the current scroll left position
                      .data('scrollTop', this.scrollTop); // the current scroll Top position

                    //change cursor to closed hand
                    $(this).css('cursor', 'url(' + serviceDomain + '/images/closedhand.cur), default');

                    // return false to avoid selecting text and dragging links within the scroll window
                    return false;
                }).mouseup(function(event) {
                    // on mouse up, cancel the 'down' flag
                    $(this).data('down', false);
                    //change cursor to opened hand
                    $(this).css('cursor', 'url(' + serviceDomain + '/images/openhand.cur), default');
                }).mouseout(function(event) {
                    // on mouse up, cancel the 'down' flag
                    $(this).data('down', false);
                    //change cursor to opened hand
                    $(this).css('cursor', 'url(' + serviceDomain + '/images/openhand.cur), default');
                }).mousemove(function(event) {
                    // if the mouse is down - start the drag effect
                    if ($(this).data('down') == true) {
                        // this.scrollLeft is the scrollbar caused by the overflowing content
                        // the new position is: original scroll position + original mouse down X - new X
                        // I'd like to see if anyone can give an example of how to speed up the scroll.
                        this.scrollLeft = $(this).data('scrollLeft') + $(this).data('x') - event.clientX;
                        this.scrollTop = $(this).data('scrollTop') + $(this).data('y') - event.clientY;
                    }
                }).mousewheel(function(event, delta) {
                    btnZoom_click(delta);
                    return false;
                }).css({
                    'overflow': 'hidden', // change to hidden for JS users
                    'cursor': 'url(' + serviceDomain + '/images/openhand.cur), default' // add the grab cursor
                });

                $('#ariparts_btnZoomOut').click(function(event) { btnZoom_click(-1); });
                $('#ariparts_btnZoomIn').click(function(event) { btnZoom_click(1); });

                // Start with an blank display                  
                $(imgLoading).removeClass('show').addClass('hide');
                $(assemblyImgLoading).removeClass('show').addClass('hide');
                $(txtError).removeClass('show').addClass('hide');
                $(txtError).attr('value', '');
                $(divAssembly).removeClass('show').addClass('hide');

                // Initially populates the ddlBrands dropdown
                ARI.Parts.Data.getBrandData({
                    callback: 'ARI.Parts.Events.cbGetBrandData'
                });

                // Whenever a brand is selected from the ddlBrands dropdown, the child dropdown gets
                // repopulated with models corresponding to the currently selected brand.  If no brand
                // is selected, the child dropdown is simply cleared of all its options and hidden.
                $(ddlBrands).change(function() {
                    var brand = $(ddlBrands).val();
                    var brandIndex = $(ddlBrands)[0].selectedIndex;
                    if (brandIndex > 0) {
                        $(imgLoading).removeClass('hide').addClass('show');
                        RemoveAllDivs();
                        //set oemID
                        oemID = $("OPTION:selected", this).val();

                        ARI.Parts.Data.getAssemblyCollection(1, {
                            assemblyID: '-1',
                            oem: encodeURIComponent($("OPTION:selected", this).val()),
                            brand: encodeURIComponent(brand),
                            callback: 'ARI.Parts.Events.cbGetAssemblyData'
                        });
                    }
                    else {
                        RemoveAllDivs();
                    }
                });
            });
        }

        return {
            StatusTypes: {
            //Success: 0,
            //TokenExpired: 1,
            //Failed: 2
        },

        Util: {
            isValidString: function(params, property) {
                var isValid = false;

                if (params.hasOwnProperty(property) && typeof params[property] == 'string' && params[property].length > 0) {
                    isValid = true;
                }
                return isValid;
            },
            isValidNumber: function(params, property) {
                var isValid = false;
                if (params.hasOwnProperty(property) && typeof params[property] == 'number') {
                    isValid = true;
                }
                return isValid;
            }
        },

        Data: {
            getAssemblyCollection: function(clevel, options) {
                var params = options || {};
                var assemblyID = ARI.Parts.Util.isValidString(params, 'assemblyID') ? '&aria=' + params.assemblyID : '';
                var oem = ARI.Parts.Util.isValidString(params, 'oem') ? '&arioem=' + params.oem : '';
                var callback = ARI.Parts.Util.isValidString(params, 'callback') ? '&aricb=' + params.callback : '';
                var tokenVal = '&arit=' + token;
                var v = '&ariv=' + locationHref;
                var lang = '&arilang=' + langCode;

                $.getScript(serviceUrl + '?ario=getAssemblyCollection&aricl=' + clevel + assemblyID + oem + tokenVal + callback + v + lang);
            },
            getSupersessionHistory: function(options) {
                var params = options || {};
                var id = ARI.Parts.Util.isValidString(params, 'id') ? '&ariid=' + params.id : '';
                var sku = ARI.Parts.Util.isValidString(params, 'sku') ? '&arisku=' + params.sku : '';
                var oem = ARI.Parts.Util.isValidString(params, 'oem') ? '&arioem=' + params.oem : '';
                var callback = ARI.Parts.Util.isValidString(params, 'callback') ? '&aricb=' + params.callback : '';
                var tokenVal = '&arit=' + token;
                var v = '&ariv=' + locationHref;
                var lang = '&arilang=' + langCode;

                $.getScript(serviceUrl + '?ario=getsupersessionhistory' + sku + oem + tokenVal + callback + v + id + lang);
            },
            getAssembliesForSearch: function(clevel, options) {
                var params = options || {};
                var assemblyID = ARI.Parts.Util.isValidString(params, 'assemblyID') ? '&aria=' + params.assemblyID : '';
                var oem = ARI.Parts.Util.isValidString(params, 'oem') ? '&arioem=' + params.oem : '';
                var callback = ARI.Parts.Util.isValidString(params, 'callback') ? '&aricb=' + params.callback : '';
                var tokenVal = '&arit=' + token;
                var v = '&ariv=' + locationHref;
                var lang = '&arilang=' + langCode;

                $.getScript(serviceUrl + '?ario=getAssembliesForSearch&aricl=' + clevel + assemblyID + oem + tokenVal + callback + v + lang);
            },
            getPartCollection: function(options) {
                var params = options || {};
                ARI.Parts.Events.DisableBtnsDDLs();
                ARI.Parts.Events.HideImage();

                var assemblyID = ARI.Parts.Util.isValidString(params, 'assemblyID') ? '&aria=' + params.assemblyID : '';
                var oem = ARI.Parts.Util.isValidString(params, 'oem') ? '&arioem=' + params.oem : '';
                var callback = ARI.Parts.Util.isValidString(params, 'callback') ? '&aricb=' + params.callback : '';
                var tokenVal = '&arit=' + token;
                var v = '&ariv=' + locationHref;
                var lang = '&arilang=' + langCode;

                $.getScript(serviceUrl + '?ario=getPartCollection' + assemblyID + oem + tokenVal + callback + v + lang);
            },
            getSearchPartCollection: function(options) {
                var params = options || {};

                var stext = ARI.Parts.Util.isValidString(params, 'stext') ? '&aritxt=' + params.stext : '';
                var model = ARI.Parts.Util.isValidString(params, 'model') ? '&arimdl=' + params.model : '';
                var oem = ARI.Parts.Util.isValidString(params, 'oem') ? '&arioem=' + params.oem : '';
                var callback = ARI.Parts.Util.isValidString(params, 'callback') ? '&aricb=' + params.callback : '';
                var tokenVal = '&arit=' + token;
                var v = '&ariv=' + locationHref;
                var lang = '&arilang=' + langCode;

                $.getScript(serviceUrl + '?ario=getPartCollection' + stext + model + oem + tokenVal + callback + v + lang);
            },
            getBrandData: function(options) {
                var params = options || {};
                var callback = ARI.Parts.Util.isValidString(params, 'callback') ? '&aricb=' + params.callback : '';
                var v = '&ariv=' + locationHref;
                var lang = '&arilang=' + langCode;

                $.getScript(serviceUrl + '?ario=getBrands&arit=' + token + callback + v + lang);
            },
            getStatusTypesData: function(options) {
                var params = options || {};
                var callback = ARI.Parts.Util.isValidString(params, 'callback') ? '&aricb=' + params.callback : '';
                var v = '&ariv=' + locationHref;
                var lang = '&arilang=' + langCode;

                $.getScript(serviceUrl + '?ario=getStatusTypes&arit=' + token + callback + v + lang);
            }            
//            getTranslations: function() {
//                var v = '&ariv=' + locationHref;
//                var lang = '&arilang=' + langCode;
//                $.getScript(serviceUrl + '?ario=getTranslations&arit=' + token + v + lang, function() {
//                   
//                });
//            }
        },

        //-------------------------------------------------------------------------------------------------------------------------------------------
        // After the data is generated from above, it calls one of the following callbacks
        Events: {
            // Callback method that populates the ddlBrands dropdown with brands.  
            cbGetBrandData: function(clevel, dataBrands) {
                if (!ARI.Parts.Events.checkError(dataBrands.toString())) {
                    try {
                        var startPos;
                        var endPos;
                        var brandVal;
                        var brandIndex = 0;
                        var processedSettings = 0;

                        $(ddlBrands).append(dataBrands);
                        $(ddlSearchBrands).append(dataBrands);

                        $('#ariparts_Stream').css('visibility', 'visible');

                        // Must parse the jsonBrands string for the name attribute.  It contains the number of items and the initial value.
                        startPos = dataBrands.indexOf('name=') + 6;
                        if (startPos >= 6) {
                            endPos = dataBrands.indexOf("|", startPos);
                            brandIndex = dataBrands.substring(startPos, endPos);

                            startPos = endPos + 1;
                            endPos = dataBrands.indexOf("'", startPos);
                            brandVal = dataBrands.substring(startPos, endPos);
                        }

                        // Check if there is only one option.  If there is only one, create the next drop down using the brandVal
                        if (brandIndex > 0) {
                            if (brandIndex == 1) {
                                oemID = brandVal;
                                oemSearchID = brandVal;
                                ARI.Parts.Data.getAssemblyCollection(0, {
                                    assemblyID: '-1',
                                    oem: encodeURIComponent(brandVal),
                                    callback: 'ARI.Parts.Events.cbGetAssemblyData'
                                });
                                $(divContainerddlBrands).removeClass('show').addClass('hide');
                                $(ddlBrands).removeClass('show').addClass('hide');
                                $('#arisearch_brandspan').removeClass('show').addClass('hide');
                            }
                            else {
                                $('#arisearch_brandspan').removeClass('hide').addClass('show');
                                $(ddlSearchBrands).removeClass('hide').addClass('show');
                            }

                            // Check if we are returning from the Cart
                            if (window.location.href.indexOf('ario') > -1) {
                                // Using clevel parameter for the OEM since continuation does not use clevel                    
                                clevel = '\"r\"';
                                ARI.Parts.Data.getAssemblyCollection(clevel, {
                                    assemblyID: 'returnUrl',
                                    oem: 'returnUrl',
                                    token: token,
                                    callback: 'ARI.Parts.Events.cbGetAssemblyData'
                                });
                            }

                            // Check if we are coming from the Model Search Control
                            if (window.location.href.indexOf('arimn') > -1) {
                                var modelNumber;

                                $('#ariparts_Stream').css('visibility', 'hidden');
                                $('#PartStreamIntLoading').css('display', 'block');

                                modelNumber = window.location.href.substring(window.location.href.indexOf('arimn') + 6);

                                // Does the querystring contain a ModelSearch Number AND is there only ONE brand
                                if ((modelNumber != -1) && (brandIndex == 1)) {
                                    $(ZoomIn).removeClass('show').addClass('hide');
                                    $(ZoomOut).removeClass('show').addClass('hide');
                                    $('#ariparts_notice').removeClass('show').addClass('hide');
                                    $(imgLoading).removeClass('hide').addClass('show');
                                    processedSettings = 1;

                                    ARI.Parts.Data.getSearchPartCollection({
                                        model: modelNumber,
                                        stext: $(txtSearch).val(),
                                        oem: encodeURIComponent(oemSearchID),
                                        token: token,
                                        callback: 'ARI.Parts.Events.cbGetSearchPartCollection'
                                    });
                                }
                            }


                            // Check if we are in normal page opening sequence
                            if ((window.location.href.indexOf('ario') < 0) && (processedSettings == 0)) {
                                if (displayShowSearch == 'false') {
                                    $(SearchBySearch).removeClass('show').addClass('hide');
                                    $(SearchLabel).removeClass('show').addClass('hide');
                                    $(SearchHR).removeClass('show').addClass('hide');
                                }
                                else {
                                    $(SearchBySearch).removeClass('hide').addClass('show');
                                    $(SearchLabel).removeClass('hide').addClass('show');
                                    $(SearchHR).removeClass('hide').addClass('show');
                                }

                                if (displayShowSearchByModel == 'false') {
                                    $(SearchHR).removeClass('show').addClass('hide');
                                    $(SearchByModel).removeClass('show').addClass('hide');
                                }
                                else {
                                    $(SearchByModel).removeClass('hide').addClass('show');
                                }
                                $(GUI).removeClass('hide').addClass('show');
                            }

                            $(btnLookup).unbind();

                            // wire up the button for the quick lookup
                            $(btnLookup).click(function() {
                                $(ZoomIn).removeClass('show').addClass('hide');
                                $(ZoomOut).removeClass('show').addClass('hide');
                                $('#ariparts_notice').removeClass('show').addClass('hide');
                                if (($(ddlSearchBrands).val() != 0) || (oemSearchID != null)) {
                                    //                                    if ($(imgLoadingSearch).length) {
                                    //                                        $(btnLookup).removeClass('show').addClass('hide');
                                    //                                        $(imgLoadingSearch).removeClass('hide').addClass('show');
                                    //                                    }
                                    //                                    else
                                    //                                        $(imgLoading).removeClass('hide').addClass('show');
                                    $('#arisearch_btnLookup').css('display', 'none');
                                    $('#SearchButtomSpacer').css('display', 'none');
                                    $('#ariparts_SearchImgLoading').css('display', 'block');

                                    ARI.Parts.Data.getSearchPartCollection({
                                        model: $(txtModel).val(),
                                        stext: $(txtSearch).val(),
                                        oem: encodeURIComponent(oemSearchID == null ? $(ddlSearchBrands).val() : oemSearchID),
                                        token: token,
                                        callback: 'ARI.Parts.Events.cbGetSearchPartCollection'
                                    });
                                }
                                //$(imgPart).css("height", imgHeightDefault);     
                                return false;
                            });

                            $("#arisearch_txtModel, #arisearch_txtSearch").bind('keypress', function(e) {
                                var code = e.keyCode || e.which;
                                if (code == 13) { //Enter keycode
                                    $(btnLookup).click();
                                    return false;
                                }
                            });
                        }
                    }
                    catch (e) {
                        ARI.Parts.Events.DisplayError('javascript error');
                    }
                }
            },

            // Callback method for the Assembly Parts List and Image
            cbGetPartCollection: function(oemPart, pathImage, jsonParts) {
                if ((jsonParts) && (!ARI.Parts.Events.checkError(jsonParts.toString()))) {
                    try {
                        var counter = 0;

                        $('#ariparts_assemblyDescription').removeClass('hide').addClass('show');
                        $('#divNext').remove();
                        $(tblAssmDetails).empty();

                        // wire up the Load event.  Fires when the target element and all of its content has finished loading.  (img.complete does not work)
                        $(imgPart).bind('load', (function() {
                            $(this).css("height", "").css("width", "");

                            // Recalculate the width and height of the image by calling these functions.  IE needs this for some reason.
                            $(this).height();
                            $(this).width();

                            //alert("dom width: " + this.width + "\r\n$(imgPart).width(): " + $(imgPart).width() + "\r\n$(imgPart).attr('width'): " + $(imgPart).attr('width') + "\r\n$(imgPart).css('width'): " + $(imgPart).css('width'));
                            //alert("dom height: " + this.height + "   default height: " + imgHeightDefault + "     dom width: " + this.width + "   default width: " + imgWidthDefault);
                            if (this.height <= parseInt(imgHeightDefault) && this.width <= parseInt(imgWidthDefault)) {
                                $(this).css("height", "auto");
                                $(this).css("width", "auto");
                            }

                            //set top marin to center image
                            if (parseInt(imgHeightDefault) - parseInt(this.height) > 0)
                                $(imgPart).css('margin', (parseInt(imgHeightDefault) - parseInt(this.height)) / 2 + "px auto");
                            else
                                $(imgPart).css('margin', "0px auto");
                            $(imgPart).removeClass('hide').addClass('show');

                            ARI.Parts.Events.ShowImage();
                            ARI.Parts.Events.EnableBtnsDDLs();

                            zooming = false;
                        }));

                        // Load the new image add referring url to qs for when referring url is blank
                        var qsv = '&ariv=' + locationHref;

                        // Sets the default zoom level (ariz=2) to 2
                        $(imgPart).attr("src", serviceUrl + '?ario=getImage&arioem=' + encodeURIComponent(oemPart) + '&ariz=2&arit=' + token + '&ariimg=' + encodeURIComponent(pathImage) + qsv);

                        if (jsonParts.toString().length > 0) {
                            $(tblAssmDetails).append(jsonParts.toString());
                            //if (counter > 48)
                            //    $(divAssembly).append('<div id="divNext" align="right" style="color:#FFC625">Next 50>></div>');
                            ARI.Parts.Events.ShowPartListWithImage();
                        }

                        // set the description of the assembly being displayed
                        document.getElementById("ariparts_assemblyDescription").innerHTML = $(".ari_headlist").attr("assemblydescription");

                        // set the alternating colors
                        $('.ari_list:even').css('background-color', partListOddRowBgColor);
                        $('.ari_list:odd').css('background-color', partListEvenRowBgColor);

                        // set the events for mouseup and mouseout
                        $('.ari_list').hover(function() { $(this).css("background-color", partListHoverBgColor); }, function() { $('.ari_list:even').css('background-color', partListOddRowBgColor); $('.ari_list:odd').css('background-color', partListEvenRowBgColor) });

                        if (supersessionShow == 'true')
                        // wire up the click events for the supersede image
                            $("img[name='imgSupersede']").click(function() {
                                ARI.Parts.Data.getSupersessionHistory({
                                    id: "ariparts_superSku_" + $(this).attr('id').substring(21),
                                    sku: $(this).attr('id').substring(21),
                                    oem: encodeURIComponent(oemPart),
                                    token: token,
                                    callback: 'ARI.Parts.Events.cbSupersessionHistory'
                                });
                            });
                    }
                    catch (e) {
                        ARI.Parts.Events.DisplayError('javascript error');
                    }
                }
            },

            cbSupersessionHistory: function(id, supersessions) {
                if (!ARI.Parts.Events.checkError(supersessions.toString())) {
                    try {
                        $("#" + id).html(supersessions.toString());
                        $("#" + id).show();
                        setTimeout("hideIt(\'#" + id + "\')", supersessionDisplayTime);
                    }
                    catch (e) {
                        ARI.Parts.Events.DisplayError('javascript error');
                    }
                }
            },

            // Callback method for the Assembly Parts List
            cbGetSearchPartCollection: function(clevel, parts) {
                if (!ARI.Parts.Events.checkError(parts.toString())) {
                    try {
                        var counter = 0;

                        if (parts.length > 0) {
                            $('#divNext').remove();
                            $(tblAssmDetails).empty();
                            $('#ariparts_assemblyDescription').removeClass('show').addClass('hide');
                            $(tblAssmDetails).append(parts);

                            ARI.Parts.Events.ShowPartListWithNoImage();

                            $('#arisearch_btnLookup').css('display', 'block');
                            $('#SearchButtomSpacer').css('display', 'block');
                            $('#ariparts_SearchImgLoading').css('display', 'none');

                            $(imgLoading).removeClass('show').addClass('hide');

                            $("input[name='viewparts']").unbind();

                            // wire up the button for the click event
                            $("input[name='viewparts']").click(function() {
                                $(imgLoading).removeClass('hide').addClass('show');

                                // calls getAssembliesForSearch - Uses the Level parameter to pass the assembly id
                                ARI.Parts.Data.getAssembliesForSearch($(this).attr('assyID'), {
                                    assemblyID: encodeURIComponent($(this).attr('pAssyID')),
                                    oem: encodeURIComponent(oemSearchID == null ? $(ddlSearchBrands).val() : oemSearchID),
                                    token: token,
                                    callback: 'ARI.Parts.Events.cbGetSearchAssemblyData'
                                });
                                return false;
                            });

                            // set the alternating colors
                            $('.ari_list:even').css('background-color', partListOddRowBgColor);
                            $('.ari_list:odd').css('background-color', partListEvenRowBgColor);

                            // set the events for mouseup and mouseout
                            $('.ari_list').hover(function() { $(this).css("background-color", partListHoverBgColor); }, function() { $('.ari_list:even').css('background-color', partListOddRowBgColor); $('.ari_list:odd').css('background-color', partListEvenRowBgColor) });
                        }
                        else {
                            $(imgLoading).removeClass('show').addClass('hide');
                            $(imgLoadingSearch).removeClass('show').addClass('hide');
                            $(btnLookup).removeClass('hide').addClass('show');
                            alert(noPartsFoundMessage);

                            $('#arisearch_btnLookup').css('display', 'block');
                            $('#SearchButtomSpacer').css('display', 'block');
                            $('#ariparts_SearchImgLoading').css('display', 'none');

                            $(GUI).removeClass('hide').addClass('show');
                        }

                        if (window.location.href.indexOf('arimn') > -1) {
                            $('#PartStreamIntLoading').css('display', 'none');
                            $('#ariparts_Stream').css('visibility', 'visible');
                        }
                    }
                    catch (e) {
                        ARI.Parts.Events.DisplayError('javascript error');
                    }
                }
            },

            cbGetStatusTypesData: function(clevel, jsonStatusTypes) {
                if (!ARI.Parts.Events.checkError(jsonStatusTypes.toString())) {
                    try {
                        var statusTypes = jsonStatusTypes || { Count: 0, Names: [], Values: [] };
                        var names = statusTypes.Names;
                        var values = statusTypes.Values;

                        for (var i = 0; i < statusTypes.Count; i++) {
                            ARI.Parts.StatusTypes[names[i]] = values[i];
                        }
                    }
                    catch (e) {
                        ARI.Parts.Events.DisplayError('javascript error');
                    }
                }
            },

            // Callback method for populating the dropdowns (either static or dynamic)
            cbGetAssemblyData: function(cLevel, jsonAssemblies) {
                if (!ARI.Parts.Events.checkError(jsonAssemblies.toString())) {
                    //====================
                    // Processing order: 3
                    //====================
                    try {
                        // Checks if the selection is a Parent.  If it's not a parent then bring up the image.
                        if (jsonAssemblies.indexOf("<select") == -1) {
                            //Not parent - BRING UP THE PART IMAGE
                            $(partsdetails).removeClass('show').addClass('hide');

                            var assemblyID = "";
                            var startPos;
                            var endPos;

                            // Must parse the jsonAssemblies string for the value attribute.  It contains the assemblyID.
                            startPos = jsonAssemblies.indexOf('value=') + 7;
                            if (startPos >= 7) {
                                endPos = jsonAssemblies.indexOf("'", startPos);
                                assemblyID = jsonAssemblies.substring(startPos, endPos);
                            }

                            if (jsonAssemblies.toString().length > 0) {
                                // remove all the current items from the select
                                document.getElementById('ariparts_ddlAsm').options.length = 0;

                                $(ddlAsm).append(jsonAssemblies);
                                $(GUI).removeClass('show').addClass('hide');

                                $(divAssembly).removeClass('hide').addClass('show');

                                //Check to make sure that Assembly Drop Down does not exceed page width
                                //alert('page width: ' + parseInt($('.ari_page').css('width')) + '           drop down:' + $('#ariparts_ddlAsm').width());
                                if ((parseInt($('.ari_page').css('width')) * .7) < parseInt($('#ariparts_ddlAsm').width()))
                                    $('#ariparts_ddlAsm').css('width', parseInt($('.ari_page').css('width')) * .7);

                                $(divTokenExpired).removeClass('show').addClass('hide');
                                $(divDataLoadFailed).removeClass('show').addClass('hide');
                            }

                            // -------------------------------
                            // if cLevel is not a number, it holds the oem for continuing after pressing the cart button
                            if (isNaN(cLevel)) {
                                oemID = "returnUrl";
                                assemblyID = "returnUrl";
                            }
                            // -------------------------------
                            // Initially populates the Parts list with the first assembly and shows the Image associated
                            ARI.Parts.Data.getPartCollection({
                                //assemblyID: encodeURIComponent(assemblies[1].AssemblyID),                                    
                                assemblyID: encodeURIComponent(assemblyID),
                                oem: encodeURIComponent(oemID == null ? $(ddlBrands).val() : oemID),
                                token: token,
                                callback: 'ARI.Parts.Events.cbGetPartCollection'
                            });

                            // unbind any previous wire ups.  Previously, each time the user selects New Model, another wire up would be added.                      
                            $("select[name='ariparts_ddlAsm']").unbind();

                            // wire up change event for the dropdown of assemblies
                            $("select[name='ariparts_ddlAsm']").change(function() {
                                ARI.Parts.Data.getPartCollection({
                                    assemblyID: encodeURIComponent($("OPTION:selected", this).val()),
                                    oem: encodeURIComponent(oemID == null ? $(ddlBrands).val() : oemID),
                                    token: token,
                                    callback: 'ARI.Parts.Events.cbGetPartCollection'
                                });
                            });
                        }
                        else {
                            if (displayShowSearchByModel == 'true') {
                                var maxWidth = parseInt($(SearchByModel).css('width'));
                                if ((!isNaN(maxWidth)) && (templateType == 'sidebyside'))
                                    maxWidth = maxWidth - 25;  // ensures the dropdown combo is within the table with a margin of 25px

                                //Check if we're in side by side mode
                                if ($(SearchByModel).length == 1) {
                                    // Dynamically adjust the height of the container (model)
                                    var dynamicHeight = cLevel + 1;
                                    dynamicHeight = dynamicHeight * (parseInt($(ddlBrands).height()) + 35) + 82; // 82 is the size of the image (32) + the padding for the image (20) + additional padding (30)
                                    if (dynamicHeight >= parseInt($(SearchBySearch).height()))
                                        $(SearchByModel).css('height', dynamicHeight);
                                    else
                                        $(SearchByModel).css('height', parseInt($(SearchBySearch).height()));
                                }

                                // Create the new control
                                var CurDiv = document.createElement("SPAN");
                                CurDiv.id = cLevel;
                                CurDiv.style.width = "97%";
                                CurDiv.style.display = "inline";
                                CurDiv.innerHTML = jsonAssemblies.toString();

                                var divDDL = document.getElementById("ariparts_DivDropDowns");
                                divDDL.appendChild(CurDiv);

                                if (parseInt($(SearchByModel).css('width')) > 100) {
                                    if (maxWidth < parseInt($('#ddlSelect' + cLevel).width()))
                                        $('#ddlSelect' + cLevel).css('width', maxWidth + 'px');
                                }
                                else {
                                    if (parseInt($('.ari_page').css('width')) < parseInt($('#ddlSelect' + cLevel).width()))
                                        $('#ddlSelect' + cLevel).css('width', $('.ari_page').css('width'));
                                }
                            }
                        }

                        //Always wire up change event just in case the user selects NEW MODEL
                        $("select[name='assemblydropdown']").change(function() {
                            var DivDropDowns = document.getElementById("ariparts_DivDropDowns");
                            var NumLevels = DivDropDowns.childNodes.length;
                            var sID = $(this).attr('id');
                            var Level = parseInt(sID.substring(9), 10);  // Removes the ddlselect (9 char) and casts to an int base 10

                            if ($("OPTION:selected", this).text() != "-- Select --") {
                                //====================
                                // Processing order: 1  - Handles the event first, then calls GetAssemblyCollection (below) and finally the callback
                                //====================
                                $("select[name='assemblydropdown']").unbind();

                                if (Level < NumLevels)
                                    RemoveDivs(DivDropDowns, Level);

                                $(imgLoading).removeClass('hide').addClass('show');

                                // calls GetAssemblyCollection
                                ARI.Parts.Data.getAssemblyCollection(Level + 1, {
                                    assemblyID: encodeURIComponent($("OPTION:selected", this).val()),
                                    oem: encodeURIComponent(oemID == null ? $(ddlBrands).val() : oemID),
                                    token: token,
                                    callback: 'ARI.Parts.Events.cbGetAssemblyData'
                                });
                            }
                            else {
                                if (Level < NumLevels)
                                    RemoveDivs(DivDropDowns, Level);
                            }
                        });

                        $(imgLoading).removeClass('show').addClass('hide');

                    }
                    catch (e) {
                        ARI.Parts.Events.DisplayError('javascript error');
                    }
                }
            },

            // Callback method when the User clicks the image to view the Assembly Part List and Image
            cbGetSearchAssemblyData: function(DefaultAssemblyID, jsonAssemblies) {
                if (!ARI.Parts.Events.checkError(jsonAssemblies.toString())) {
                    //====================
                    // Processing order: 3
                    //====================
                    try {
                        //var assemblies = jsonAssemblies || [];
                        //var options = []; 
                        var iMatch;

                        //Not parent - bring up the parts
                        $('#ariparts_partsdetails').removeClass('show').addClass('hide');

                        //if (assemblies.length > 0) {
                        if (jsonAssemblies.toString().length > 0) {
                            // remove all the current items from the select
                            document.getElementById('ariparts_ddlAsm').options.length = 0;
                            //$(ddlAsm).append(options.join(""));
                            $(ddlAsm).append(jsonAssemblies.toString());
                            ARI.Parts.Events.ShowPartListWithImage();
                        }

                        // Initially populates the Parts list with the first assembly
                        ARI.Parts.Data.getPartCollection({
                            //assemblyID: encodeURIComponent(assemblies[iMatch].AssemblyID),
                            assemblyID: encodeURIComponent(DefaultAssemblyID),
                            oem: encodeURIComponent(oemSearchID == null ? $(ddlSearchBrands).val() : oemSearchID),
                            token: token,
                            callback: 'ARI.Parts.Events.cbGetPartCollection'
                        });

                        // unbind any previous wire ups.  Previously, each time the user selects New Model, another wire up would be added.                      
                        $("select[name='ariparts_ddlAsm']").unbind();

                        // wire up change event for the dropdown of assemblies
                        $("select[name='ariparts_ddlAsm']").change(function() {
                            $(imgLoading).removeClass('hide').addClass('show');
                            ARI.Parts.Data.getPartCollection({
                                assemblyID: encodeURIComponent($("OPTION:selected", this).val()),
                                oem: encodeURIComponent(oemSearchID == null ? $(ddlSearchBrands).val() : oemSearchID),
                                token: token,
                                callback: 'ARI.Parts.Events.cbGetPartCollection'
                            });
                        });
                        if (showNotice) $('#ariparts_notice').removeClass('hide').addClass('show');
                        $(imgLoading).removeClass('show').addClass('hide');
                    }
                    catch (e) {
                        ARI.Parts.Events.DisplayError('javascript error');
                    }
                }
            },
            
            PartStreamLangReset: function() {
                //var oldLangCode = langCode;
                langCode = $("#languageId option:selected").val();
                //Refresh Page with new langCode in queryString
//                var newURL = window.location.href;
//                
//                if (newURL.toLowerCase().indexOf('?') < 0)
//                    newURL += '?' + langCodeQueryStringParamName + '=' + langCode;
//                else if (newURL.toLowerCase().indexOf(langCodeQueryStringParamName.toLowerCase()) < 0)
//                    newURL += '&' + langCodeQueryStringParamName + '=' + langCode;
//                else {
//                    var indexOfParam = newURL.toLowerCase().indexOf(langCodeQueryStringParamName.toLowerCase());
//                    var endIndex = indexOfParam + langCodeQueryStringParamName.length  + oldLangCode.length + 1;
//                    var text = newURL.substring(indexOfParam, endIndex);
//                    
//                    newURL = newURL.replace(text,  langCodeQueryStringParamName + '=' + langCode);                            
//                }                      
                
                //window.location.href = newURL;
                
                //write cookie
//                var expires = new Date();
//                expires.setDate(expires.getDate() + 365);
//                document.cookie = 'PartStreamLangCode=' + langCode + '; expires=' + expires + '; path=/';
                $.setCookie("ARIPartStream", "langcode", langCode, 365);
                window.location.reload();
                
                //ARI.Parts.Data.getTranslations();
            
            },

            checkError: function(Msg) {
                var bError = false;

                if ((Msg.toString().substr(0, 5) == "Error") || (Msg.toString().substr(0, 5) == "Fatal")) {
                    bError = true;
                    ARI.Parts.Events.DisplayError(Msg);
                }
                else if (Msg.toString().substr(0, 6) == "Custom") {
                    bError = true;
                    ARI.Parts.Events.CustomError(Msg.substring(7) + '.  Please re-load page.');
                }
                else if (Msg.toString().substr(0, 4) == "Info") {
                    alert(Msg.toString());
                }

                return bError;
            },

            ShowImage: function() {
                $(assemblyImgLoading).removeClass('show').addClass('hide');
                $(imgPart).removeClass('hide').addClass('show');
                if (showNotice) $('#ariparts_notice').removeClass('hide').addClass('show');
            },

            HideImage: function() {
                $(imgPart).removeClass('show').addClass('hide');
                $(assemblyImgLoading).removeClass('hide').addClass('show');
            },

            ShowPartListWithImage: function() {
                $(divAssembly).removeClass('hide').addClass('show');
                $(GUI).removeClass('show').addClass('hide');
                $(divTokenExpired).removeClass('show').addClass('hide');
                $(divDataLoadFailed).removeClass('show').addClass('hide');
                $(ZoomIn).removeClass('hide').addClass('show');
                $(ZoomOut).removeClass('hide').addClass('show');
                $(divAsm).removeClass('hide').addClass('show');
                $(image_div).removeClass('hide').addClass('show');
            },

            ShowPartListWithNoImage: function() {
                $(divAssembly).removeClass('hide').addClass('show');
                $(SearchBySearch).removeClass('show').addClass('hide');
                $(GUI).removeClass('show').addClass('hide');
                $(divAsm).removeClass('show').addClass('hide');
                $(imgPart).removeClass('show').addClass('hide');
                $(image_div).removeClass('show').addClass('hide');
                $(divTokenExpired).removeClass('show').addClass('hide');
                $(divDataLoadFailed).removeClass('show').addClass('hide');
            },

            EnableBtnsDDLs: function() {
                $(btnNewModel).attr('disabled', false);
                $(ZoomIn).attr('disabled', false);
                $(ZoomOut).attr('disabled', false);
                $(ddlAsm).attr('class', 'displayAssemblySelect');
                $(ddlAsm).attr('disabled', false);
                $(image_div).removeClass('hide').addClass('show'); // always show the div
                $(imgPart).unbind();
                $(assemblyImgLoading).removeClass('show').addClass('hide');
            },

            DisableBtnsDDLs: function() {
                $(btnNewModel).attr('disabled', true);
                $(ZoomIn).attr('disabled', true);
                $(ZoomOut).attr('disabled', true);
                $(ddlAsm).attr('class', 'displayAssemblySelect');
                $(ddlAsm).attr('disabled', true);
                $('#ariparts_image_div').scrollLeft(0);
                $('#ariparts_image_div').scrollTop(0);
                $(image_div).removeClass('hide').addClass('show'); // always show the div
                var blankImage = serviceDomain + '/images/blank.gif';
                $(imgPart).attr('src', blankImage);
                $(imgPart).removeClass('show').addClass('hide');
                $(imgLoading).removeClass('hide').addClass('show');

                if ($(imgPart).css('display') != 'none') {
                    // Removes the style display attribute.  If this attribute was set, it overwrites the class we added (hide).  Ensures the imgPart is hidden.
                    //  If imgPart is not hidden, the assemblyImgLoading will not be visible due to imgPart.
                    $(imgPart).each(function(index, element) {
                        element.style.display = '';
                    });
                }
            },

            DisplayError: function(errMsg) {
                $(GUI).removeClass('show').addClass('hide');
                $(divAssembly).removeClass('show').addClass('hide');
                $(divError).removeClass('hide').addClass('show');
                if (errMsg.indexOf(tokenExpired) >= 0) {
                    $(divTokenExpired).removeClass('hide').addClass('show');
                    $(divDataLoadFailed).removeClass('show').addClass('hide');
                }
                else {
                    $(divDataLoadFailed).removeClass('hide').addClass('show');
                    $(divTokenExpired).removeClass('show').addClass('hide');
                }
                bError = true;
            },

            CustomError: function(errMsg) {
                $(GUI).removeClass('show').addClass('hide');
                $(divAssembly).removeClass('show').addClass('hide');
                $(divError).removeClass('show').addClass('hide');

                $(txtError).attr('value', errMsg);
                $(txtError).removeClass('hide').addClass('show');
            }
        }
    }
} (jQuery));
}

//                    if ($(GUI).is(':hidden'))
//                        alert("GUI is hidden");
//                    else
//                        alert("GUI is shown");

function hideIt(id)
{
    jQuery(id).hide();
}

function RemoveDivs(ParentDiv, CurLevel)
{
    // Removes the DIVs after the one selected
	if (ParentDiv.childNodes.length > 0)
	{	    
		var TempNumDivs = ParentDiv.childNodes.length;
		for(i = CurLevel + 1; i <= TempNumDivs; i++)
		{
    		var TempDiv = document.getElementById(i);
			if (TempDiv != null)
			{
    		    ParentDiv.removeChild(TempDiv);
    		}
		}
	}
}

function RemoveAllDivs()
{   // Remove ALL the children for the Div
    var ParentDiv = document.getElementById("ariparts_DivDropDowns");
	if (ParentDiv.childNodes.length > 0)
	{	    
        jQuery("select[name='assemblydropdown']").unbind();
		var TempNumDivs = ParentDiv.childNodes.length;
		for(i=1;i<=TempNumDivs;i++)
		{
			var TempDiv = document.getElementById(i);
			
			if (TempDiv != null)
    		    ParentDiv.removeChild(TempDiv)
		}
	}
}

function btnNewModel_Click()
{    
    if (displayShowSearch == 'false')
    {
        jQuery('#arisearch_SideBySideSearch').removeClass('show').addClass('hide');
        jQuery('#arisearch_SearchLabel').removeClass('show').addClass('hide');
        jQuery('#arisearch_SearchHR').removeClass('show').addClass('hide');
    }
    else
    {
        jQuery('#arisearch_SideBySideSearch').removeClass('hide').addClass('show');
        jQuery('#arisearch_SearchLabel').removeClass('hide').addClass('show');
        jQuery('#arisearch_SearchHR').removeClass('hide').addClass('show');
    }
    
    if (displayShowSearchByModel == 'false')
    {
        jQuery('#arisearch_SearchHR').removeClass('show').addClass('hide');
        jQuery('#arisearch_SideBySideModel').removeClass('show').addClass('hide');
    }
    else
    {
        jQuery('#arisearch_SideBySideModel').removeClass('hide').addClass('show');
    }
    
    jQuery('#ariparts_ImgLoading').removeClass('show').addClass('hide');
    jQuery('#arisearch_searchImgLoading').removeClass('show').addClass('hide');
    jQuery('#ariparts_divAssembly').removeClass('show').addClass('hide');
    jQuery('#arisearch_btnLookup').removeClass('hide').addClass('show');
    jQuery('#ariparts_GUI').removeClass('hide').addClass('show');
    jQuery('#ariparts_divParts').removeClass('hide').addClass('show');
    jQuery('#ariparts_partsdetails').removeClass('hide').addClass('show');
    if (jQuery('#ariparts_ddlBrands').length > 1) 
        jQuery('#ariparts_ddlBrands').removeClass('hide').addClass('show');
    jQuery('#ariparts_DivDropDowns').removeClass('hide').addClass('show');
    if (jQuery('#arisearch_SideBySideModel').attr('title') != null)
    {
        if (displayShowSearch == 'true')
        {
            jQuery('#arisearch_SideBySideSearch').removeClass('hide').addClass('show');
            //jQuery('#arisearch_SideBySideSearch').css('height', jQuery('#arisearch_SideBySideModel').css('height'));
        }
        else
        {
            jQuery('#ariparts_SideBySideSearch').removeClass('show').addClass('hide');
        }
    }
}

function cartPostSkuQty(myId, method)
{
    // url is the client's domain and page (URL) used for processing the Shopping Cart
    // myId is the id of the cart button clicked.  It contains a 'counter' that identifies the row (unique id).
    var id;   
    var qty = '#ariparts_qty';

    // Get the count from the id
    if (myId.toString().length >= 16)
        id = myId.toString().substr(16, myId.toString().length - 16);

    var cartPostUrl = jQuery('#' + myId).attr('name');
    var ariqty = jQuery(qty + id.toString()).attr('value');

    cartPostUrl = cartPostUrl.replace("{aripartqty}", ariqty); 
    
    var form = document.createElement('form');
       
    // Redirect to client's page for processing shopping cart.  Shopping Cart url is defined in the click event of the shopping cart button in the database.
    //  Must pass all the parameters to allow the user to continue where they left off           
    var url = cartPostUrl.substring(0, cartPostUrl.indexOf('?'));
    var params = cartPostUrl.substring(cartPostUrl.indexOf('?') + 1);
    var paramsArray = params.split("&");

    form.method = method;
    form.action = url;
    if ((cartwindowTarget.toLowerCase() == '_blank') || (cartwindowTarget.toLowerCase() == '_new') || (cartwindowTarget.toLowerCase() == '_top'))
        cartwindowTarget = 'newPartStreamWindow';
    form.target = cartwindowTarget;
    
    for (var p in paramsArray) {
        if (paramsArray.hasOwnProperty(p)) {
            var name = paramsArray[p].substring(0, paramsArray[p].indexOf('='));
            var value = paramsArray[p].substring(paramsArray[p].indexOf('=') + 1);

            if (name.length > 0 && value.length > 0) {
                var input = document.createElement('input');
                input.type = 'hidden';
                input.name = name;
                input.value = value;
                form.appendChild(input);
            }
        }           
    }
    
    document.body.appendChild(form);        
    
    var win = window.open(form.action, form.target, 'width=' + cartwindowWidth + ', height=' + cartwindowHeight + ',status=yes,resizable=yes,scrollbars=yes');
    win.focus();
    
    // Redirects form to the New Empty Window - with it's unique window name
    form.submit();        

    return false;
}

function getQueryStringParameter(url, param) {

    url = url.toLowerCase();
    param = param.toLowerCase();
    var sParamWithEqualSign = param.toString().indexOf("=") > -1 ? param : param + "=";
                
    if (url.toString().indexOf(sParamWithEqualSign) > -1)
    {
        var indexEqualSign = url.toString().indexOf("=", url.toString().indexOf(sParamWithEqualSign)) + 1;
        var indexOfAmpersand = url.toString().indexOf("&", url.toString().indexOf(sParamWithEqualSign)) > -1 ? url.toString().indexOf("&", url.toString().indexOf(sParamWithEqualSign)) : 0;
        
        return indexOfAmpersand > 0 ? url.toString().substr(indexEqualSign, indexOfAmpersand - indexEqualSign) : url.toString().substring(indexEqualSign, url.toString().length);
    }
    else
        return "";             
}

function btnZoom_click(increment)
{  
    if (zooming) return;
        
    var url = jQuery('#ariparts_image').attr('src');
    var zoomlevel = getQueryStringParameter(url, 'ariz');  
    var newZoom = parseInt(zoomlevel, 10) + parseInt(increment, 10);
    var ratio = jQuery('#ariparts_image').attr('height') / jQuery('#ariparts_image').attr('width');
    var newHeight;
    var newWidth;    

    if ((newZoom < -1) || (newZoom > 5)) return;

    zooming = true;

    //-------------------------------------
    // Animate the current image to the new image size
    jQuery('#ariparts_image').css("height", "").css("width", "");

    if (newZoom <= -1)
    {
        newWidth = 80;
        newZoom = -1;
    }
    else if (newZoom == 0)
        newWidth = 180;
    else if (newZoom == 1)
        newWidth = 380;
    else if (newZoom == 2)
        newWidth = 580;
    else if (newZoom == 3)
        newWidth = 780;
    else if (newZoom == 4)
        newWidth = 980;
    else if (newZoom >= 5)
    {
        newWidth = 1180;
        newZoom = 5;
    }

    newHeight = ratio * newWidth;       

    jQuery("#ariparts_image").animate({ 
        height: newHeight + "px",
        width: newWidth + "px",
        marginLeft: "0in",
        borderWidth: "1px"
    }, 200);    
    
    //-------------------------------------
    //check last zoom to added inherited image height from the image div
    if (newZoom <= -1)
    {
        jQuery('#ariparts_btnZoomIn').attr('disabled', false);
        jQuery('#ariparts_btnZoomOut').attr('disabled', true);  
    }
    else if ((newZoom >= 0) && (newZoom <= 5))
    {
        // Enable/Disable zoom buttons
        jQuery('#ariparts_btnZoomOut').attr('disabled', false);
        if (newZoom == 5)
            jQuery('#ariparts_btnZoomIn').attr('disabled', true);  
        else      
            jQuery('#ariparts_btnZoomIn').attr('disabled', false);              
    }

    // Wire up the 'load' event    
    jQuery('#ariparts_image').bind('load', function(){ 
        setTimeout("jQuery('#ariparts_image').stop(true, true);zooming=false;", 200);
        jQuery('#ariparts_image').unbind();
     });                       

    url = url.replace("&ariz=" + zoomlevel, "&ariz=" + newZoom);  

    // Get the new image
    jQuery('#ariparts_image').attr('src', url);        
}

function bindMouseWheel()
{
    //Unbind the mousewheel event from the div
    jQuery('#ariparts_image_div').unbind('mousewheel');
    
    //Wire up the mousewheel event to the div
    jQuery('#ariparts_image_div').mousewheel(function (event, delta) {
            btnZoom_click(delta); 
            return false;              
      });            
}