        function correctSize () {
            var fme = parent.document.getElementById('ifme');
            var frameContent = document.body;
            
            fme.style.height = frameContent.offsetHeight + 16 + 'px';
            setTimeout('correctSize()', 500);
        }    
    
		//SLIDER 
		function adjustSlider (val) {		
			val = Math.ceil(val);
			var target = (val * 2) - 50;
			if (target < 0)
				target = 0;
			
			var max = IDOf('tblSlider').offsetWidth - 200;
			if (target > max)
				target = max;
			
			sliderScroll('divSliderOwner', target, 0);
		}
		
		function sliderScroll (id, target, i) {
			if (IDOf('divSliderOwner').scrollLeft != target) {
			    i++;
				var pos = IDOf('divSliderOwner').scrollLeft;		
				var dir = ((pos - target) / Math.abs(pos - target)) * -1;
				
				IDOf('divSliderOwner').scrollLeft = pos + dir + (Math.floor((target - pos) / 5));
				
				//if the slider attempts to slide for more than 2 seconds,
				//it has been broken and needs to be recalibrated
				if (i < 25) {				    
				    setTimeout("sliderScroll('" + id + "', " + target + ", " + i + ")" , 20);	
				} else {
    			    //slider screwed up. recalibrate.
			        calculateMonthlyPayment();				    
				}
			}
		}
		//END SLIDER
        
        //PAYMENTS       
        var downPayment = '2500';
        var APR = '4.99%';
        var term = '60';
        var monthlyPayment;
        function calculateMonthlyPayment () {
            var paidDown = parseInt(pricing['EstimatedTotalMSRP']) + parseInt(pricing['DestinationChargeMSRP']) - parseInt(downPayment);
            if (parseFloat(APR) < .000001)
                APR = '.000001';
            if (parseFloat(term) < 1)
                term = '1';
            var monthlyInterest = (parseFloat(APR) / 100) / 12;
            var pow = 1;
            for (var i = 0; i < parseInt(term); i++) {
                pow = pow * (1 + monthlyInterest);
            }            
            monthlyPayment = (paidDown * pow * monthlyInterest) / (pow - 1);
            adjustSlider(parseInt(Math.ceil(monthlyPayment)));
            calculatePaymentRange();
            displayOtherPaymentData();
        }
        
        function calculatePaymentRange() {
            var marginOfError = .02;
            var low = parseInt(monthlyPayment * (1 - marginOfError));
            var high = parseInt(monthlyPayment * (1 + marginOfError));
            displayPaymentRange(low, high);
        }
        
        function displayPaymentRange(low, high) {
            var sliderOverlayWidth = (high - low) * 2;
            if(sliderOverlayWidth > 200)
                sliderOverlayWidth = 200;//never wider than the slider box
            var sliderOverlayMarginLeft = 100 - ((monthlyPayment - low) * 2);//half of total slider width minus the difference betweent the montly payment and the low end 
            if (sliderOverlayMarginLeft < 0)
                sliderOverlayMarginLeft = 0;
            IDOf('divSliderOverlay').style.width = sliderOverlayWidth + "px";
            IDOf('divSliderOverlay').style.marginLeft = sliderOverlayMarginLeft + "px";
            
            IDOf('spnSliderPaymentTextRange').innerHTML = '$' + addCommas(low) + " - " + addCommas(high);
        }
        
        function displayOtherPaymentData() {
            IDOf('spnSliderPaymentMonths').innerHTML = term;
            IDOf('spnSliderDownPaymentPercent').innerHTML = parseInt(parseInt(downPayment) / (parseInt(pricing['EstimatedTotalMSRP']) + parseInt(pricing['DestinationChargeMSRP'])) * 100) + " %";
        }
        //END PAYMENTS        
        
        //INITIALIZE PAGE
        function loadAddYourOptionsTab () {         
            if (IDOf('AddYourOptionsTab') == null) {        
                showLoadingImage();
        	    objXMLHttp = createXMLHttp();        
                objXMLHttp.open("GET", getUniqueURL("/Configurator/ConfigCompareTabs/AddYourOptionsTab/AddYourOptionsTab.aspx?n=n"), true);
                objXMLHttp.onreadystatechange = function () {
                    if (objXMLHttp.readyState == 4) {
                        clearTabs();
                        document.getElementById(mainPanel).innerHTML += objXMLHttp.responseText;
                        hideLoadingImage();                        
                        quickloadInitialConfigData();
                    }
                }
                objXMLHttp.send(null);
            } else {
                clearTabs();
                IDOf('AddYourOptionsTab').style.display = '';                
            }
        }
        
        function quickloadInitialConfigData () {
        	objXMLHttp = createXMLHttp();        
            objXMLHttp.open("GET", getUniqueURL("/Configurator/ConfigCompareTabs/AddYourOptionsTab/AJAXCallPage.aspx?cmd=INITIAL_LOAD"), true);
            objXMLHttp.onreadystatechange = function () {
                if (objXMLHttp.readyState == 4) {
                    updatePage(objXMLHttp.responseText);
                    var url = "/Configurator/ConfigCompareTabs/AddYourOptionsTab/AJAXCallPage.aspx?cmd=SET_DEFAULTS";
                    requestPageUpdate(url);
                }
            }
            objXMLHttp.send(null);
        }
        
        function loadTab (tabName) {
            if (IDOf(tabName) == null) {
                showLoadingImage();
        	    objXMLHttp = createXMLHttp();        
                objXMLHttp.open("GET", getUniqueURL("/Configurator/ConfigCompareTabs/" + tabName + "/" + tabName + ".aspx?n=n"), true);
                objXMLHttp.onreadystatechange = function () {
                    if (objXMLHttp.readyState == 4) {
                        clearTabs();
                        document.getElementById(mainPanel).innerHTML += objXMLHttp.responseText;            
                        hideLoadingImage();
                    }
                }
                objXMLHttp.send(null);
            } else {
                clearTabs();
                IDOf(tabName).style.display = '';
            }
        }
        
        function showLoadingImage () {
            clearTabs();
            IDOf('divLoadingArea').style.display = '';
            IDOf('imgLoading').setAttribute("src", "/Configurator/images/common/loadingGrid.gif");
        }
        
        function hideLoadingImage () {
            IDOf('divLoadingArea').style.display = 'none';                
            IDOf('imgLoading').setAttribute("src", "");
        }
        
        function clearTabs () {
            var tabNames = new Array('AddYourOptionsTab', 'SpecificationsTab', 'PhotosTab', 'ReviewTab', 'ConsumerInfoTab', 'ComparisonTab', 'Loading');
            for (var i = 0; i < tabNames.length; i++) {
                if (IDOf(tabNames[i]) != null) {
                    IDOf(tabNames[i]).style.display = 'none';
                }
            }
        }
        //END INITIALIZE PAGE
        
        function requestPageUpdate (url) {
            objXMLHttp = createXMLHttp();
            objXMLHttp.open("GET", getUniqueURL(url), true);
            objXMLHttp.onreadystatechange = function () {
                if (objXMLHttp.readyState == 4) {
                    updatePage(objXMLHttp.responseText);
                }
            }
            objXMLHttp.send(null);
        }
        
        function updatePage (responseText) {
            var aAreaIDs = new Array("PricingArea", "SelectOptionsArea", "PickExteriorColorArea", "ReviewBriefArea", "VehicleDisplayArea", "SideBySideArea", "SelectorArea", "ByAdvantageArea", "SelectOptionsSummaryArea");
            var aData = new Array("DefaultImageData", "PricingData", "OptionConflictData", "OptionsData", "ColorData", "SelectorMakeData", "SelectorModelData", "SelectorStyleData", "IncentivesData", "SaveConfigurationData", "SendToAFriendData");
            var tmpDiv = document.createElement('div');
            tmpDiv.setAttribute('id', 'divTemp');
            tmpDiv.style.display = "none";
            tmpDiv.innerHTML = responseText;
            document.body.appendChild(tmpDiv);
            
            for (var i = 0; i <  aAreaIDs.length; i++) {
                try {
                    var source = document.getElementById('clone' + aAreaIDs[i]);
                    var target = document.getElementById('div' + aAreaIDs[i]);                
                    target.innerHTML = source.innerHTML;
                } catch (err) {}
            }
            
            for (var i = 0; i < aData.length; i++) {
                try {
                    var data = document.getElementById(aData[i]).innerHTML;
                    var updateFunction = "update" + aData[i] + "('" + data + "')";
                    eval(updateFunction);
                } catch (err) {}
            }
            
            document.body.removeChild(tmpDiv);
        }
        
        //Select Options Area methods               
        function styleSelected (styleID) {
            window.location = "/Configurator.aspx?styleid=" + styleID;
            /*showLoadingImage();
            objXMLHttp = createXMLHttp();                
            objXMLHttp.open("GET", getUniqueURL("Configurator/ConfigCompareTabs/AddYourOptionsTab/AJAXCallPage.aspx?cmd=SELECT_STYLE&styleID=" + styleID), true);
            objXMLHttp.onreadystatechange = function () {
                if (objXMLHttp.readyState == 4) {
                    var ayot = IDOf('AddYourOptionsTab');
                    var p = ayot.parentNode;
                    p.removeChild(ayot);
        	        objXMLHttp = createXMLHttp();        
                    objXMLHttp.open("GET", getUniqueURL("Configurator/ConfigCompareTabs/AddYourOptionsTab/AddYourOptionsTab.aspx?n=n"), true);
                    objXMLHttp.onreadystatechange = function () {
                        if (objXMLHttp.readyState == 4) {
                            clearTabs();
                            document.getElementById(mainPanel).innerHTML += objXMLHttp.responseText;
                            hideLoadingImage();                        
                            quickloadInitialConfigData();
                        }
                    }
                    objXMLHttp.send(null);
                }
            }
            objXMLHttp.send(null);*/
        }
        
        
        
        function optionSelected (optionCode) {
            var checked = IDOf(optionCode).checked;
            objXMLHttp = createXMLHttp();                
            objXMLHttp.open("GET", getUniqueURL("/Configurator/ConfigCompareTabs/AddYourOptionsTab/AJAXCallPage.aspx?cmd=SELECT_OPTION&optionCode=" + optionCode + "&checked=" + checked), true);
            objXMLHttp.onreadystatechange = function () {
                if (objXMLHttp.readyState == 4) {
                    updatePage(objXMLHttp.responseText);
                }
            }
            objXMLHttp.send(null);
        }
        
        function exteriorColorSelected (colorCodes, bImageAvail) {
            updateVehicleDisplayArea(colorCodes, bImageAvail);
            var colorData = new Array();
            colorData = getAssoc(colorCodes, '&', '=');
            toggleExteriorColorActive(colorData['pri']);
        }
        
        var activeColor;
        function toggleExteriorColorActive (color) {            
            hideInteriorColorSelector();

            if (activeColor != color) {
                activeColor = color;
                var table = IDOf('tbl' + activeColor);
                if (table.style.display == 'none') {
                    showInteriorColorSelector();
                } else {
                    hideInteriorColorSelector();
                }
            } else {
                activeColor = '';
            }            
        }
        
        function showInteriorColorSelector () {
            var img = IDOf(activeColor);
            var table = IDOf('tbl' + activeColor);
            
            img.className = 'imgExteriorPrimaryColorActive';
            
            table.style.display = '';
        }      
          
        function hideInteriorColorSelector () {
            try {
                var img = IDOf(activeColor);
                var table = IDOf('tbl' + activeColor);
                
                if (img.className != 'imgExteriorPrimaryColorSelected') {
                    img.className = 'imgExteriorPrimaryColor';
                } else {
                    img.className = 'imgExteriorPrimaryColorSelected';
                }
                
                table.style.display = 'none';
            } catch (err) {}
        }        
        
        function colorSelected (colorSelection, bImageAvail) {
            hideInteriorColorSelector();
            updateVehicleDisplayArea(colorSelection, bImageAvail);
            activeColor = '';
            
            var url = "/Configurator/ConfigCompareTabs/AddYourOptionsTab/AJAXCallPage.aspx?cmd=SELECT_COLOR" + colorSelection;
            requestPageUpdate(url);            
        }
        
        function undoOptionSelection () {
            var url = "/Configurator/ConfigCompareTabs/AddYourOptionsTab/AJAXCallPage.aspx?cmd=UNDO_OPTIONS_SELECTION"
            requestPageUpdate(url);            
        }           
        
        //Data Update methods
        var defaultImage;
        function updateDefaultImageData (url) {
            defaultImage = url;
        }
        
        function resetImage () {
            if (IDOf('imgVehicleDisplayArea').getAttribute('src').indexOf('/Configurator/images/common/NoVehicleImage.gif') >= 0)
                IDOf('imgVehicleDisplayArea').setAttribute('src', defaultImage);
        }
        
        function updateVehicleDisplayArea (colorSelection, bImageAvail) {
            if (bImageAvail != 'undefined') {
                if (bImageAvail == 'false') {
                    IDOf('imgVehicleDisplayArea').setAttribute('src', '/Configurator/images/common/NoVehicleImage.gif');
                } else if (bImageAvail != 'none') {
                    var colorData = new Array();
                    colorData = getAssoc(colorSelection, '&', '=');
                    var imagePath = evoxRoot + 'color_0320/' + colorData['vif'] + '/' + colorData['filename'];
                    IDOf('imgVehicleDisplayArea').setAttribute('src', imagePath);
                }
            }
        }
        
        var pricing = new Array();
        function updatePricingData (strPrices) {
            pricing = getAssoc(strPrices, ';', '=');
            //Update Pricing Area
            for (var i in pricing) {
                try {
                    var target = document.getElementById("pricing" + i);
                    var currency = parseInt(Math.ceil(parseFloat(pricing[i])));
                    /*if (i.indexOf('EstimatedTotal') >= 0 && currency > 0)
                        currency += parseInt(Math.ceil(parseFloat(pricing['DestinationChargeMSRP'])));
                    else */if (i == 'PriceState')
                        IDOf('PriceState').innerHTML = pricing[i];
                        
                    if (currency != 0) {
                        currency = addCommas(currency);
                        currency = "$" + currency;
                    } else {
                        currency = 'N/A';
                    }
                    target.innerHTML = currency;
                    document.getElementById('pricing' + i + 'Header').innerHTML = currency;
                } catch (err) {}
            }
            calculateMonthlyPayment();
            //TODO
        }
        
        var options = new Array();
        function updateOptionsData (sOptions) {
            options = getAssoc(sOptions, ';', '=');
            for (var i in options) {
                try {
                    var target = document.getElementById(i);
                    if (options[i] == "Selected" || options[i] == "Required" || options[i] == "Included") {
                        target.checked = true;
                    } else {
                        target.checked = false;
                    }
                    document.getElementById('indicator_' + i).className = options[i];
                } catch (err) {}
            }
        }
        
        function updateOptionConflictData (sConflicts) {
            var hsh = getAssoc(sConflicts, ';', '=');
            populatePopupData(hsh);
            popup();
        }
        
        function updateColorData (availableColors) {
            var colors = getAssoc(availableColors, ';', '=');
            var td = IDOf('divColorNames');
            var s = "<b>Exterior:</b> " + colors['pri'] + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>Interior:</b> " + colors['int'];
            td.innerHTML = s;
        }
        
        function updateIncentivesData (s) {
            IDOf('tdIncentivesData').innerHTML = s;
        }
        
        //Option Details
        function toggleOptionDetails (nde, id) {
            if (IDOf(id).style.display == "") {
                IDOf(id).style.display = "none";
                nde.innerHTML = "view details";
            } else {
                IDOf(id).style.display = "";
                nde.innerHTML = "hide details";
            }
            IDOf('div_OptionsDD').style.height = "auto";            
        }
        
        function switchOptionStep (step) {
            for (var i = 1; i < 6; i++) {
                try {
                    IDOf("divOptionsStep" + i).style.display = "none";
                } catch (err) {}
            }
            IDOf("divOptionsStep" + step).style.display = "";
            
            IDOf('div_OptionsDD').style.height = "auto";
        }
        
        function optionGroupDisplayToggle (node) {
            var aOptionRows = node.childNodes;
            for (var i = 0; i < aOptionRows.length; i++) {
                if (aOptionRows[i].className == "trOptionsOption") {
                    aOptionRows[i].className = "trOptionsOptionHidden";
                } else if (aOptionRows[i].className == "trOptionsOptionHidden") {
                    aOptionRows[i].className = "trOptionsOption";
                }
            }
            IDOf('div_OptionsDD').style.height = "auto";            
        }
        
        //POPUP
        var overlay;
        function popup() {
	        var pu = IDOf('divPopup');
        	
	        var opt = IDOf('OptionsDD');
        	
	        puHeight = pu.offsetHeight;
	        pu.style.marginTop = ((puHeight / 2) * -1) + 'px';
	        pu.style.display = '';
	        //pu.style.left = ((opt.offsetWidth / 2) + opt.offsetLeft) + 'px';
	        pu.style.marginLeft = ((opt.offsetWidth / 2) - (pu.offsetWidth / 2)) + 'px';
	        pu.style.marginTop = (((opt.offsetHeight / 2) * -1) - (pu.offsetHeight / 2)) + 'px';
        	
	        overlay = document.createElement('div');
	        overlay.setAttribute('id', 'divOptionsOverlay');
	        overlay.style.position = 'absolute';
	        overlay.style.width = opt.offsetWidth + 'px';
	        overlay.style.height = opt.offsetHeight + 'px';
	        overlay.style.marginTop = ((opt.offsetHeight * -1) - 1) +'px';
	        IDOf('div_OptionsDD').appendChild(overlay);
        }
        
        var selectedConflictOption;
        function populatePopupData (hsh) {
            var tdOptions = IDOf('tdPopupOptions');
            var tdInstructions = IDOf('tdPopupInstructions');
            var tdInformation = IDOf('tdPopupInformation');
            var tdControl = IDOf('tdPopupControl');
            
            switch (hsh['type']) {
                case 'requires':
                    var aOptionNames = hsh['optionNames'].split('~');
                    var aOptionCodes = hsh['optionCodes'].split('~');
                    //setup info
                    tdInformation.innerHTML = "<b>" + hsh['causeName'] + "</b> requires one or more of the following option(s):";
                    
                    //setup required options
                    var optionNames = '';
                    selectedConflictOption = aOptionCodes[0];
                    var checked = 'checked="true"';
                    for (var i = 0; i < aOptionNames.length; i++) {
                        if (aOptionNames[i] != '')
                            optionNames += '<input type="radio" name="rdoConflictOption" value="' + aOptionCodes[i] + '" onclick="selectedConflictOption = this.value;" ' + checked + '/><b>' + aOptionNames[i] + ' (' + aOptionCodes[i] + ')</b><br />';
                            
                        checked = '';
                    }
                    tdOptions.innerHTML = optionNames;
                    
                    //setup Instructions options
                    tdInstructions.innerHTML = "Would you like to change the selected option?";
                    
                    //setup Control
                    var ok = "<div class=\"spnPopupButton\" onclick=\"optionSelected(selectedConflictOption); closePopup()\">OK</div>";
                    var cancel = "<div class=\"spnPopupButton\" onclick=\"closePopup()\">CANCEL</div>";
                    tdControl.innerHTML = cancel + ok;
                    break;
                case 'deletes':
                    var aOptionCodes = hsh['optionCodes'].split('~');
                    var aOptionNames = hsh['optionNames'].split('~');

                    tdInformation.innerHTML = "Changing <b>" + hsh['causeName'] + "</b> will cause the following option(s) to be removed:";
                    
                    var optionNames = '';
                    for (var i = 0; i < aOptionNames.length; i++) {
                        if (aOptionNames[i] != '' && aOptionNames[i] != 'undefined')
                            optionNames += '<b>' + aOptionNames[i] + ' (' + aOptionCodes[i] + ')</b><br />';
                    }
                    tdOptions.innerHTML = optionNames;
                    
                    tdInstructions.innerHTML = "Would you like to continue with this change?";
                    
                    var ok = "<div class=\"spnPopupButton\" onclick=\"closePopup()\">OK</div>";
                    var cancel = "<div class=\"spnPopupButton\" onclick=\"undoOptionSelection(); closePopup()\">CANCEL</div>";
                    tdControl.innerHTML = cancel + ok;
                    break;
                case 'session':
                    //setup Control
                    tdInformation.innerHTML = "Your session has expired.";
                    
                    tdInstructions.innerHTML = "Please refresh your browser.";

                    var ok = "<div class=\"spnPopupButton\" onclick=\"closePopup()\">OK</div>";
                    tdControl.innerHTML = ok + cancel;
                    break;
            }
        }

        function closePopup () {
            IDOf('div_OptionsDD').removeChild(IDOf('divOptionsOverlay'));
            IDOf('divPopup').style.display = 'none'
        }
        
        function getTotalOffsetTop(nde) {
            var offsetTop = nde.offsetTop;
            var currentNode = nde;
            while (!isNaN(currentNode.offsetTop)) {
                offsetTop += currentNode.offsetTop;
                currentNode = currentNode.parentNode;
            }
            return offsetTop;
        }
        
        //comparison tab
        var selectorYear;
        function yearSelected (year) {
            selectorYear = year;
            IDOf('ddlSelectorSelectMake').innerHTML = '';
            IDOf('ddlSelectorSelectModel').innerHTML = '';
            IDOf('ddlSelectorSelectStyle').innerHTML = '';
            var url = "/Configurator/ConfigCompareTabs/ComparisonTab/AJAXCallPage.aspx?cmd=SELECT_YEAR&year=" + year;
            requestPageUpdate(url);            
        }
        
        var selectorMake;
        function makeSelected (make) {
            selectorMake = make;
            IDOf('ddlSelectorSelectModel').innerHTML = '';
            IDOf('ddlSelectorSelectStyle').innerHTML = '';
            var url = "/Configurator/ConfigCompareTabs/ComparisonTab/AJAXCallPage.aspx?cmd=SELECT_MAKE&year=" + selectorYear + "&make=" + make;
            requestPageUpdate(url);            
        }
        
        var selectorModel;
        function modelSelected (model) {
            selectorModel = model;
            IDOf('ddlSelectorSelectStyle').innerHTML = '';
            var url = "/Configurator/ConfigCompareTabs/ComparisonTab/AJAXCallPage.aspx?cmd=SELECT_MODEL&model=" + model;
            requestPageUpdate(url);            
        }      
        
        var ddlSelectorSelectYear;
        function resetSelectorBoxes () {
            ddlSelectorSelectYear.options[0].selected = true;
            IDOf('ddlSelectorSelectMake').innerHTML = '';
            IDOf('ddlSelectorSelectModel').innerHTML = '';
            IDOf('ddlSelectorSelectStyle').innerHTML = '';
        }
        
        function updateSelectorMakeData (sMakes) {
            var aMakes = sMakes.split(';');
            var ddMakes = IDOf('ddlSelectorSelectMake');
            ddMakes.innerHTML = '';
            ddMakes.options[0] = new Option('Choose a Make', 'null');
            for (var i = 1; i <= aMakes.length; i++) {
                try {
                    if (aMakes[i] != '' &&  aMakes[i] != undefined) {
                        var o = new Option(aMakes[i-1].split('=')[0], aMakes[i-1].split('=')[1]);
                        ddMakes.options[i] = o;
                    }
                } catch (err) {}
            }
        }
        
        function updateSelectorModelData (sModels) {
            sModels = unescapeXMLChar(sModels);
            var aModels = sModels.split(';');
            var ddModels = IDOf('ddlSelectorSelectModel');
            ddModels.innerHTML = '';
            ddModels.options[0] = new Option('Choose a Model', 'null');
            for (var i = 1; i <= aModels.length; i++) {
                try {
                    modelKV = aModels[i - 1];
                    if (modelKV != '' &&  modelKV != undefined) {
                        var o = new Option(modelKV.split('=')[0], modelKV.split('=')[1]);
                        ddModels.options[i] = o;
                    }
                } catch (err) {}
            }
        }
        
        function updateSelectorStyleData (sStyles) {
            sStyle = unescapeXMLChar(sStyles);
            var aStyles = sStyles.split(';');
            var ddStyles = IDOf('ddlSelectorSelectStyle');
            ddStyles.innerHTML = '';
            ddStyles.options[0] = new Option('Choose a Style', 'null');
            for (var i = 1; i <= aStyles.length; i++) {
                try {
                    styleKV = aStyles[i - 1];
                    if (styleKV != '' &&  styleKV != undefined) {
                        var o = new Option(styleKV.split('=')[0], styleKV.split('=')[1]);
                        ddStyles.options[i] = o;
                    }
                } catch (err) {}
            }
        }
        
        function addToList (styleID) {
            if (styleID == '' || styleID == 'null' || styleID == 'undefined') {
                IDOf('spnComarisonSelectorWarning').innerHTML = "You must choose a style.<br />Note: some models may not have styles available at this time.";
                return null;
            }
            
            if (comparisonIDs.indexOf(styleID) >= 0 || currentStyleID.indexOf(styleID) >= 0) {
                IDOf('spnComarisonSelectorWarning').innerHTML = "This vehicle has already been added.";
                return null;
            }
            
            try {
                IDOf("byAdvantage" + byAdvantageID).style.display = '';
            } catch (err) {}
            byAdvantageID = styleID;
            
            IDOf('spnComarisonSelectorWarning').innerHTML = "";
            
            comparisonIDs += styleID + "~";
            var url = "/Configurator/ConfigCompareTabs/ComparisonTab/AJAXCallPage.aspx?cmd=UPDATE_COMPARISON_IDS&comparisonIDs=" + comparisonIDs;
            IDOf('divComparisonSelectorSelection').style.display = 'none';
            IDOf('divComparisonSelectorLoading').style.display = '';
            objXMLHttp = createXMLHttp();                
            objXMLHttp.open("GET", getUniqueURL(url), true);
            objXMLHttp.onreadystatechange = function () {
                if (objXMLHttp.readyState == 4) {
                    IDOf('divComparisonSelectorSelection').style.display = '';
                    IDOf('divComparisonSelectorLoading').style.display = 'none';
                    closeComparisonPopup();
                    updatePage(objXMLHttp.responseText);
                    toggleComparisonTabs(comparisonTab);
                    resetSelectorBoxes();
                }
            }
            objXMLHttp.send(null);                        
        }
        
        function toggleComparisonGroupDisplay (tblRowHeaders, tblComparison, groupName) {
            var atblRowHeaders = tblRowHeaders.childNodes[0].childNodes;
            if (atblRowHeaders.length == 0)
                atblRowHeaders = tblRowHeaders.childNodes[1].childNodes;
            
            for (var i = 0; i < atblRowHeaders.length; i++) {
                if (atblRowHeaders[i].className == groupName) {
                    if (atblRowHeaders[i].style.display != "none") {
                        atblRowHeaders[i].style.display = "none";
                    } else {
                        atblRowHeaders[i].style.display = "";
                    }
                }
            }
            var atblComparison = tblComparison.firstChild.childNodes;
            if (atblComparison.length == 0)
                atblComparison = tblComparison.childNodes[1].childNodes;

            for (var i = 0; i < atblComparison.length; i++) {
                if (atblComparison[i].className == groupName) {
                    if (atblComparison[i].style.display != "none") {
                        atblComparison[i].style.display = "none";
                    } else {
                        atblComparison[i].style.display = "";
                    }
                }
            }            
        }
        
        function removeFromComparison(node, styleID) {
            if (styleID.length > 0) {
                comparisonPopup();
                IDOf('divComparisonSelectorSelection').style.display = 'none';
                IDOf('divComparisonSelectorLoading').style.display = '';                
                comparisonIDs = comparisonIDs.replace(styleID, "");
                var url = "/Configurator/ConfigCompareTabs/ComparisonTab/AJAXCallPage.aspx?cmd=UPDATE_COMPARISON_IDS&comparisonIDs=" + comparisonIDs;
                objXMLHttp = createXMLHttp();                
                objXMLHttp.open("GET", getUniqueURL(url), true);
                objXMLHttp.onreadystatechange = function () {
                    if (objXMLHttp.readyState == 4) {
                        updatePage(objXMLHttp.responseText);
                        toggleComparisonTabs(comparisonTab);
                        closeComparisonPopup();
                        IDOf('divComparisonSelectorSelection').style.display = '';
                        IDOf('divComparisonSelectorLoading').style.display = 'none';
                    }
                }
                objXMLHttp.send(null);                        
            }          
        }
        
        var comparisonTab = 'SideBySide';
        function toggleComparisonTabs (tabName) {
            var shown = IDOf('divComparisonShown');
            var hidden = IDOf('divComparisonHidden');
            var currentShown = IDOf('div' + comparisonTab + 'Area');
            
            hidden.appendChild(currentShown);
            shown.innerHTML = '';
            shown.appendChild(IDOf('div' + tabName + 'Area'));
            
            comparisonTab = tabName;
        }
        
        //NO LONGER IN USE
        var byAdvantageID = '';
        function selectByAdvantageID (styleID) {
            try {
                IDOf("byAdvantage" + byAdvantageID).style.display = '';
            } catch (err) {}
            byAdvantageID = styleID;
            IDOf("byAdvantage" + styleID).style.display = 'none';

            toggleComparisonTabs('ByAdvantage');
            var url = "/Configurator/ConfigCompareTabs/ComparisonTab/AJAXCallPage.aspx?cmd=SELECT_BYADVANTAGE_ID&byAdvantageID=" + styleID;
            requestPageUpdate(url);
            selectTab('tabByAdvantageTab');
        }
        
        function selectByAdvantagePrimaryID (styleID) {            
            try {
                IDOf("byAdvantagePrimary" + byAdvantagePrimaryID).style.display = '';
            } catch (err) {}    
            byAdvantagePrimaryID = styleID;
            IDOf("byAdvantagePrimary" + styleID).style.display = 'none';
            
            toggleComparisonTabs('ByAdvantage');
            var url = "/Configurator/ConfigCompareTabs/ComparisonTab/AJAXCallPage.aspx?cmd=SELECT_BYADVANTAGE_PRIMARY_ID&byAdvantageID=" + styleID;
            requestPageUpdate(url);
            selectTab('tabByAdvantageTab');
        }
        //END LONGER IN USE
        //end comparison tab
        
        //photo gallery
        function selectGalleryImage (img) {
            IDOf('imgDisplayPic').setAttribute('src', img.getAttribute('src'));
            IDOf('divPhotoCaption').innerHTML = img.getAttribute('alt');
        }
       
        var PhotosOverlay;
        function flashPopup() {
	        var pu = IDOf('divFlashPopup');

	        var opt = IDOf('PhotosTab');
        	
	        puHeight = pu.offsetHeight;
	        //pu.style.marginTop = ((puHeight / 1.25) * -1) + 'px';
	        pu.style.display = '';
	        //pu.style.left = ((opt.offsetWidth / 2) + opt.offsetLeft) + 'px';
	        pu.style.marginLeft = ((opt.offsetWidth / 2) - (pu.offsetWidth / 2)) + 'px';
	        pu.style.marginTop = ((opt.offsetHeight - 32) * -1) + 'px';
        	
	        PhotosOverlay = document.createElement('div');
	        PhotosOverlay.setAttribute('id', 'divPhotosOverlay');
	        PhotosOverlay.style.position = 'absolute';
	        PhotosOverlay.style.width = opt.offsetWidth + 'px';
	        PhotosOverlay.style.height = opt.offsetHeight + 'px';
	        PhotosOverlay.style.marginTop = ((opt.offsetHeight * -1) - 1) +'px';
	        IDOf('divPhotosContainer').appendChild(PhotosOverlay);            
        }
        
        function closeFlashPopup () {
            IDOf('divPhotosContainer').removeChild(IDOf('divPhotosOverlay'));
            IDOf('divFlashPopup').style.display = 'none'
        }
        
        var ReviewOverlay;
        function videoReview(vid) {
	        var pu = IDOf('divReviewPopup');

	        var opt = IDOf('divSelectOptionsArea');
        	
	        puHeight = pu.offsetHeight;
	        pu.style.display = '';
	        pu.style.marginLeft = ((opt.offsetWidth / 2) - (pu.offsetWidth / 2)) + 'px';
	        pu.style.marginTop = '-400px';
        	
        	var overlayCont = IDOf('divSaveAndSendContainer');        	
	        ReviewOverlay = document.createElement('div');
	        ReviewOverlay.setAttribute('id', 'divReviewOverlay');
	        ReviewOverlay.style.position = 'absolute';
	        ReviewOverlay.style.width = overlayCont.offsetWidth + 'px';
	        ReviewOverlay.style.height = overlayCont.offsetHeight + 'px';
	        IDOf('divSaveAndSendContainer').insertBefore(ReviewOverlay, IDOf('divSaveAndSendContainer').childNodes[0]);            
	        
	        TestDrivePlayer.initialize();
	        TestDrivePlayer.videoSelected(vid);
        }
        
        function closeReviewPopup () {
            IDOf('divSaveAndSendContainer').removeChild(IDOf('divReviewOverlay'));
            IDOf('divReviewPopup').style.display = 'none';
            TestDrivePlayer.stopPlayer();
        }
        
        var TestDrivePlayer = (function(){
            var p = { 
                //initialized: false,
                selectedVideo: null
            };
            
            p.playVideo = function(videoURL) {
                p.player.play(videoURL);
            }
            
            p.videoSelected = function(value) {
                if (value != '') {
                    p.selectedVideo = value;
                    var videoName = p.selectedVideo;
                    if (!videoName.match(/1onONE_20/)) {
                        videoName = videoName.replace('1onONE_', '1onONE_20');
                    }
                    var videoURL = 'http://www.samsclubauto.com/WheelsTV/' + videoName;
                    p.playVideo(videoURL);
                }
            }
            
            p.stopPlayer = function() {
                p.player.unload();
            }
            
            p.initialize = function() {
                //if (p.initialized)
                //    return;
                
                p.player = flowplayer("fplayer", { 
                    wmode: 'opaque',
                    src: "/Media/Flash/flowplayer-3.1.2.swf", 
                    zIndex: 1
                }, {
                    clip: {
                        onStart: function(clip) {
                            reportFPEvent($('#fplayer'), { video: clip.url, action: 'Show Video' });
                        }
                    },
                    plugins: {
                        controls: {
                            url: "/Media/Flash/flowplayer.controls-3.1.2.swf",
                            fullscreen: false
                        }
                    }
                });
                
                p.player.onFinish(function(clip) {
                    reportFPEvent($('#fplayer'), { video: clip.url, action: 'Video Finished Playing' });
                });
                
                p.initialized = true;
            }
            
            return p;
        })();
        
        
        function switchFlashMovie (on, off) {
            IDOf(on).style.display = '';
            IDOf(off).style.display = 'none';
        }       
        
        var ComparisonOverlay;
        function comparisonPopup () {
	        var pu = IDOf('divComparisonPopup');

	        var opt = IDOf('ComparisonTab');
        	
	        puHeight = pu.offsetHeight;
	        //pu.style.marginTop = ((puHeight / 1.25) * -1) + 'px';
	        pu.style.display = '';
	        //pu.style.left = ((opt.offsetWidth / 2) + opt.offsetLeft) + 'px';
	        pu.style.marginLeft = ((opt.offsetWidth / 2) - (pu.offsetWidth / 2)) + 'px';
	        pu.style.marginTop = ((opt.offsetHeight - 80) * -1) + 'px';
        	
	        ComparisonOverlay = document.createElement('div');
	        ComparisonOverlay.setAttribute('id', 'divComparisonOverlay');
	        ComparisonOverlay.style.position = 'absolute';
	        ComparisonOverlay.style.width = opt.offsetWidth + 'px';
	        ComparisonOverlay.style.height = opt.offsetHeight + 'px';
	        ComparisonOverlay.style.marginTop = ((opt.offsetHeight * -1) - 1) +'px';
	        IDOf('divComparisonContainer').appendChild(ComparisonOverlay);            
        }
        
        function closeComparisonPopup () {
            try {
                IDOf('divComparisonPopup').style.display = 'none'
                IDOf('divComparisonContainer').removeChild(IDOf('divComparisonOverlay'));
            } catch (err) {}
        }     
        
        function byAdvantagePivotSelected (styleID) {
            var url = "/Configurator/ConfigCompareTabs/ComparisonTab/AJAXCallPage.aspx?cmd=SELECT_BYADVANTAGE_PRIMARY_ID&byAdvantageID=" + styleID;
            requestPageUpdate(url);
            selectTab('tabByAdvantageTab');
        }
        
        function byAdvantageComparisonSelected (styleID) {
            var url = "/Configurator/ConfigCompareTabs/ComparisonTab/AJAXCallPage.aspx?cmd=SELECT_BYADVANTAGE_ID&byAdvantageID=" + styleID;
            requestPageUpdate(url);
            selectTab('tabByAdvantageTab');
        }
        //end photo gallery
        
        //to maintain session variables        
        function maintainSession () {
            var url = "/Configurator/ConfigCompareTabs/AddYourOptionsTab/AJAXCallPage.aspx?cmd=BLANK";
            requestPageUpdate(url);
            setTimeout('maintainSession()', 1000 * 60 * 15);
        }
        
        function getQuote () { //url) {
            url = 'NewInquiryDealerDetails.aspx?c=1';
            /*
            if (pricing["EstimatedTotalMSRP"] != undefined) {
                url = url.split('msrp')[0];
                url += "msrp=" + pricing["EstimatedTotalMSRP"] + "&invoice=" + pricing["EstimatedTotalInvoice"] + "&destination=" + pricing["DestinationChargeMSRP"] + "&configured=true";
            }*/
            
            window.location = url;
        }
        
        var SaveConfigurationOverlay;
        function showSaveConfigurationPopup() {
	        var pu = IDOf('divSaveConfigurationPopup');

	        var opt = IDOf('divFullTabPanel');
        	
	        puHeight = pu.offsetHeight;
	        //pu.style.marginTop = ((puHeight / 1.25) * -1) + 'px';
	        pu.style.display = '';
	        //pu.style.left = ((opt.offsetWidth / 2) + opt.offsetLeft) + 'px';
	        pu.style.marginLeft = ((opt.offsetWidth / 2) - (pu.offsetWidth / 2)) + 'px';
	        pu.style.marginTop = ((opt.offsetHeight - 80) * -1) + 'px';
        	
	        SaveConfigurationOverlay = document.createElement('div');
	        SaveConfigurationOverlay.setAttribute('id', 'divSaveConfigurationOverlay');
	        SaveConfigurationOverlay.style.position = 'absolute';
	        SaveConfigurationOverlay.style.width = opt.offsetWidth + 'px';
	        SaveConfigurationOverlay.style.height = opt.offsetHeight + 'px';
	        SaveConfigurationOverlay.style.marginTop = ((opt.offsetHeight * -1) - 1) +'px';
	        IDOf('divFullTabPanel').appendChild(SaveConfigurationOverlay);            
        }
        function closeSaveConfigurationPopup () {
            try {
                IDOf('divSaveConfigurationPopup').style.display = 'none'
                IDOf('divFullTabPanel').removeChild(IDOf('divSaveConfigurationOverlay'));
                IDOf('SaveConfigurationMessage').innerHTML = "";
            } catch (err) {}
        }     
        function updateSaveConfigurationData(data) {
            var tdMessage = IDOf('SaveConfigurationMessage');
            tdMessage.innerHTML = data;
        }
        function saveConfiguration() {
            var firstName = IDOf('txtFirstName').value;
            var lastName = IDOf('txtLastName').value;
            var email = IDOf('txtEmail').value;
            var url = "/Configurator/ConfigCompareTabs/AddYourOptionsTab/AJAXCallPage.aspx?cmd=SAVE_CONFIGURATION&firstName=" + firstName + "&lastName=" + lastName + "&email=" + email;
            requestPageUpdate(url);
        }
       
        var SendToAFriendOverlay;
        function showSendToAFriendPopup() {
	        var pu = IDOf('divSendToAFriendPopup');

	        var opt = IDOf('divFullTabPanel');
        	
	        puHeight = pu.offsetHeight;
	        //pu.style.marginTop = ((puHeight / 1.25) * -1) + 'px';
	        pu.style.display = '';
	        //pu.style.left = ((opt.offsetWidth / 2) + opt.offsetLeft) + 'px';
	        pu.style.marginLeft = ((opt.offsetWidth / 2) - (pu.offsetWidth / 2)) + 'px';
	        pu.style.marginTop = ((opt.offsetHeight - 80) * -1) + 'px';
        	
	        SendToAFriendOverlay = document.createElement('div');
	        SendToAFriendOverlay.setAttribute('id', 'divSendToAFriendOverlay');
	        SendToAFriendOverlay.style.position = 'absolute';
	        SendToAFriendOverlay.style.width = opt.offsetWidth + 'px';
	        SendToAFriendOverlay.style.height = opt.offsetHeight + 'px';
	        SendToAFriendOverlay.style.marginTop = ((opt.offsetHeight * -1) - 1) +'px';
	        IDOf('divFullTabPanel').appendChild(SendToAFriendOverlay);            
        }
        function closeSendToAFriendPopup () {
            try {
                IDOf('divSendToAFriendPopup').style.display = 'none'
                IDOf('divFullTabPanel').removeChild(IDOf('divSendToAFriendOverlay'));
                IDOf('SendToAFriendMessage').innerHTML = "";
            } catch (err) {}
        }
        function updateSendToAFriendData(data) {
            var tdMessage = IDOf('SendToAFriendMessage');
            tdMessage.innerHTML = data;
        }
        function sendToAFriend() {
            var firstName = IDOf('txtFriendFirstName').value;
            var lastName = IDOf('txtFriendLastName').value;
            var email = IDOf('txtFriendEmail').value;
            var fromFirstName = IDOf('txtFromFirstName').value;
            var fromLastName = IDOf('txtFromLastName').value;
            var fromEmail = IDOf('txtFromEmail').value;
            var url = "/Configurator/ConfigCompareTabs/AddYourOptionsTab/AJAXCallPage.aspx?cmd=SEND_TO_A_FRIEND&firstName=" + firstName + "&lastName=" + lastName + "&email=" + email +
                "&fromFirstName=" + fromFirstName + "&fromLastName=" + fromLastName + "&fromEmail=" + fromEmail;
            requestPageUpdate(url);
        }

