﻿/*
General Javascript Library
License: Compunix LLC.
Website: http://www.compunix.us/
Creator: Adam Scholfield
Last Modified: 11/09/2009
Last Modified By: Adam Scholfield
*/


/* Shortcut Functions */
function Compunix_$(id) {
    return document.getElementById(id);
}
/* Shortcut Functions */
/* Ajax Functions */
function sendAJAXRequest(url, params, callback_function) {
    xmlHttp = GetXmlHttpObject();
    if (xmlHttp == null) {
        alert("Your browser does not support AJAX!");
        return;
    }
    xmlHttp.open('POST', url);

    xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4) {
            callback_function(xmlHttp.responseText);
        }
    };

    xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlHttp.send(params);
}

function GetXmlHttpObject() {
    var xmlHttp1 = null;
    try {
        // Firefox, Opera 8.0+, Safari
        xmlHttp1 = new XMLHttpRequest();
    }
    catch (e) {
        // Internet Explorer
        try {
            xmlHttp1 = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            xmlHttp1 = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp1;
}
function AjaxCall(divid, url) {
    sendAJAXRequest(url, '', function(response) {
        //Compunix_$(divid).outerHTML = '<div id="' + divid + '">' + response + '</div>';
        Compunix_$(divid).innerHTML = '' + response;
        Compunix_$('LoadingOverLay').className = "RestingOverLay";
        Compunix_$('LoadingImage').className = "RestingImage";
    });
}
/* Ajax Functions */
ClearAjaxAcesFilter
function ClearAjaxAcesFilter(divid, url, paramName) {

    url = url + '?' + paramName + '=' + '';
    sendAJAXRequest(url, '', function(response) {
        //Compunix_$(divid).outerHTML = '<div id="' + divid + '">' + response + '</div>';
        var startAjaxDiv = '<div id="compunixAcesFilters">';
        var newhtml = response.toString().substring(response.toString().indexOf(startAjaxDiv) + startAjaxDiv.length, response.toString().indexOf('<div id="ENDAJAXATC"></div>'))
        Compunix_$(divid).innerHTML = '' + newhtml + ' <div id="ENDAJAXATC"></div>';

        Search_Click();

    });
}

function AjaxAcesFilter(divid, url) {
    sendAJAXRequest(url, '', function(response) {
        //Compunix_$(divid).outerHTML = '<div id="' + divid + '">' + response + '</div>';
        var startAjaxDiv = '<div id="compunixAcesFilters">';
        var newhtml = response.toString().substring(response.toString().indexOf(startAjaxDiv) + startAjaxDiv.length, response.toString().indexOf('<div id="ENDAJAXATC"></div>'))
        Compunix_$(divid).innerHTML = '' + newhtml + ' <div id="ENDAJAXATC"></div>';

        Search_Click();

    });
}
/* Ajax Functions */


/* Key Control Functions */
function CatchEnter(e) {
    var characterCode;
    if (e && e.which) {
        e = e;
        e.cancel = true;
        characterCode = e.which;
    }
    if (e && window.event) {
        e = window.event;
        e.cancel = true;
        characterCode = e.keyCode;
    }
    return characterCode == 13;
}
/* Key Control Functions */
/* Cookie Functions */
function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ')
            c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0)
            return c.substring(nameEQ.length, c.length);
    }
    return '';
}

function eraseCookie(name) {
    createCookie(name, "", -1);

    if (name == 'ACES_ApplyFilters') {
        eraseCookie('ISearchEngineFilter');
        eraseCookie('ISearchTransmissionFilter');
        eraseCookie('ISearchBrakesFilter');
        eraseCookie('ISearchDriveTypeFilter');
        eraseCookie('ISearchSteeringFilter');
        eraseCookie('ISearchSuspensionFilter');
        eraseCookie('ISearchBodyFilter');
        eraseCookie('ISearchOtherFitmentNotesFilter');
    }
}
/* Cookie Functions */








/**********************************
Custom Functions go here
Custom Software : ISearch
Date: October/November 2009
Creator: Adam Scholfield
License: Adam Scholfield, Compunix LLC.
*********************************/

var FilterList = new Array();
var defaultFilter = '';
var defaultEntityID = '0';
var defaultEntityType = '';
var currentPageCount = 0;
var currentPageNumber = 0;
var currentPageSize = 0;
var currentPageSort = 'Looks DESC'; //case when SalePrice is null then Price else SalePrice end';
var defaultPageSortIndex = '0';

var currentColorFilter = '';
var currentSizeFilter = '';
var currentManufacturerFilter = '';
var currentCategoryFilter = '';
var currentGenreFilter = '';
var currentDistributorFilter = '';
var currentVectorFilter = '';
var currentSectionFilter = '';
var currentLibraryFilter = '';
var currentPriceFilter = '';
var runFilters = true;

var currentSubModelFilter = '';

var currentEngineFilter = '';
var currentTransmissionFilter = '';
var currentBrakesFilter = '';
var currentDriveTypeFilter = '';
var currentSteeringFilter = '';
var currentSuspensionFilter = '';
var currentBodyFilter = '';
var currentOtherFitmentNotesFilter = '';

function FindFilters(DropDownList, ListBox, GroupName) {
    var result = '';
    if (Compunix_$(DropDownList)) {
        result = Compunix_$(DropDownList).value;
    }
    else if (Compunix_$(ListBox)) {
        var options = Compunix_$(ListBox).options;
        var selected = new Array();
        for (var index = 0; index < options.length; index++) {
            if (options[index].selected) {
                selected.push(options[index].value);
            }
        }
        while (selected.length > 0) {
            result += selected.pop() + ',';
        }
        if (result.length > 0) {
            result = result.substr(0, result.length - 1);
        }
    }
    else {
        var values = document.getElementsByName(GroupName);
        var selected = new Array();
        for (var index = 0; index < values.length; index++) {
            if (values[index].checked) {
                selected.push(values[index].value);
            }
        }
        while (selected.length > 0) {
            result += selected.pop() + ',';
        }
    }
    return result;
}

function LoadFilters() {
    var filter = Compunix_$('FilterInput').value;
    if (filter = '') {
        filter = defaultFilter;
    }
    var results = "";
    var insert = "";
    var generalFilter = "";
    for (var index = 0; index < FilterList.length; index++) {
        if (index != 0) {
            insert = " - ";
        }
        if (index < FilterList.length - 1) {
            results += insert + "<a href='javascript:void(0)' onclick='javascript:FilterList=FilterList.slice(0," + index + "+ 1);LoadFilters();'>" + FilterList[index] + "</a>"
        }
        else {
            results += insert + "<span class='LastCrumb'>" + FilterList[index] + "</span>"
        }
        generalFilter += FilterList[index] + ",";
    }
    if (Compunix_$('FilterList')) {
        Compunix_$('FilterList').innerHTML = results;
    }
    if (generalFilter.length > 0) {
        filter = generalFilter;
    }
    else if (filter == '') {
        filter = defaultFilter;
    }
    if (runFilters) {
        currentColorFilter = FindFilters('ColorsPickerDDL', 'ColorsPickerListBox', 'Colors');
        currentSizeFilter = FindFilters('SizesPickerDDL', 'SizesPickerListBox', 'Sizes');
        currentPriceFilter = FindFilters('PricesPickerDDL', 'PricesPickerListBox', 'Prices');
        currentManufacturerFilter = SetEntityFilter('Manufacturer'); //s
        currentCategoryFilter = SetEntityFilter('Category');
        currentGenreFilter = SetEntityFilter('Genre');
        currentDistributorFilter = SetEntityFilter('Distributor');
        currentVectorFilter = SetEntityFilter('Vector');
        currentSectionFilter = SetEntityFilter('Section');
        currentLibraryFilter = SetEntityFilter('Library');
        currentSubModelFilter = FindFilters('SubModelPicker', 'SubModelPicker', 'SubModelPicker');

        // ACES FILTERS
        currentEngineFilter = GetDDLValue('EngineDDL');
        currentTransmissionFilter = GetDDLValue('TransmissionDDL');
        currentBrakesFilter = GetDDLValue('BrakesDDL');
        currentDriveTypeFilter = GetDDLValue('DriveTypeDDL');
        currentSteeringFilter = GetDDLValue('SteeringDDL');
        currentSuspensionFilter = GetDDLValue('SuspensionDDL');
        currentBodyFilter = GetDDLValue('BodyDDL');
        currentOtherFitmentNotesFilter = GetDDLValue('OtherFitmentNotesDDL');
        // alert('a: ' + currentEngineFilter);            
    }
    else {
        currentColorFilter = '';
        currentSizeFilter = '';
        currentPriceFilter = '';
        currentManufacturerFilter = '';
        currentCategoryFilter = '';
        currentGenreFilter = '';
        currentDistributorFilter = '';
        currentVectorFilter = '';
        currentSectionFilter = '';
        currentLibraryFilter = '';
        currentSubModelFilter = '';

        // ACES FILTERS
        currentEngineFilter = '';
        currentTransmissionFilter = '';
        currentBrakesFilter = '';
        currentDriveTypeFilter = '';
        currentSteeringFilter = '';
        currentSuspensionFilter = '';
        currentBodyFilter = '';
        currentOtherFitmentNotesFilter = '';
    }

    if (currentPageSize == 0) {
        currentPageSize = Compunix_$('PageSizePicker').value;
    }



    //alert("currentManufacturerFilter:"+currentManufacturerFilter);

    createCookie('ISearchTerm', Compunix_$('FilterInput').value, 1);
    createCookie('ISearchPageSize', currentPageSize, 1);
    createCookie('ISearchSortBy', currentPageSort, 1);
    createCookie('ISearchPageNumber', currentPageNumber, 1);
    createCookie('ISearchColorFilter', currentColorFilter, 1);
    createCookie('ISearchSizeFilter', currentSizeFilter, 1);
    createCookie('ISearchManufacturerFilter', currentManufacturerFilter, 1);
    createCookie('ISearchCategoryFilter', currentCategoryFilter, 1);
    createCookie('ISearchGenreFilter', currentGenreFilter, 1);
    createCookie('ISearchDistributorFilter', currentDistributorFilter, 1);
    createCookie('ISearchVectorFilter', currentVectorFilter, 1);
    createCookie('ISearchSectionFilter', currentSectionFilter, 1);
    createCookie('ISearchLibraryFilter', currentLibraryFilter, 1);
    createCookie('ISearchSubModelFilter', currentSubModelFilter, 1);

    // ACES FILTERS

    createCookie('ISearchEngineFilter', currentEngineFilter, 1);
    createCookie('ISearchTransmissionFilter', currentTransmissionFilter, 1);
    createCookie('ISearchBrakesFilter', currentBrakesFilter, 1);
    createCookie('ISearchDriveTypeFilter', currentDriveTypeFilter, 1);
    createCookie('ISearchSteeringFilter', currentSteeringFilter, 1);
    createCookie('ISearchSuspensionFilter', currentSuspensionFilter, 1);
    createCookie('ISearchBodyFilter', currentBodyFilter, 1);
    createCookie('ISearchOtherFitmentNotesFilter', currentOtherFitmentNotesFilter, 1);
    createCookie('ACES_ApplyFilters', 'True', 1);


    var dt = new Date();

    var query = "?PageNumber=" + currentPageNumber +
                "&PageSize=" + currentPageSize +
                "&PageSort=" + currentPageSort +
                "&ColorFilter=" + currentColorFilter +
                "&SizeFilter=" + currentSizeFilter +
                "&PriceFilter=" + currentPriceFilter +
                "&ManufacturerFilter=" + currentManufacturerFilter +
                "&CategoryFilter=" + currentCategoryFilter +
                "&GenreFilter=" + currentGenreFilter +
                "&DistributorFilter=" + currentDistributorFilter +
                "&VectorFilter=" + currentVectorFilter +
                "&SectionFilter=" + currentSectionFilter +
                "&LibraryFilter=" + currentLibraryFilter +
                "&SubModelFilter=" + currentSubModelFilter +
    // ACES FILTERS
                "&Engine=" + currentEngineFilter +
                "&Transmission=" + currentTransmissionFilter +
                "&Brakes=" + currentBrakesFilter +
                "&DriveType=" + currentDriveTypeFilter +
                "&Steering=" + currentSteeringFilter +
                "&Suspension=" + currentSuspensionFilter +
                "&Body=" + currentBodyFilter +
                "&OtherFitmentNotes=" + currentOtherFitmentNotesFilter +

                "&Filter=" + filter +
                "&rID=" + dt.getHours() + dt.getMinutes() + dt.getSeconds();
    // alert(query);
    if (Compunix_$('LoadingOverLay'))
        Compunix_$('LoadingOverLay').className = "LoadingOverLay";
    if (Compunix_$('LoadingImage'))
        Compunix_$('LoadingImage').className = "LoadingImage";
    AjaxCall('Results', 'ISearch.aspx' + query);
    //alert('ISearch.aspx' + query);
}

function GetDDLValue(DDL) {
    var sel = document.getElementById(DDL.toString());
    var dropDownValue = '';

    if (sel != null) {
        var selIndex = sel.selectedIndex;

        if (selIndex > 0) {
            dropDownValue = sel.options[sel.selectedIndex].text;
        }
    }

    return dropDownValue;
}

function Search_Click() {
    currentPageNumber = 0;
    LoadFilters();
    //    Compunix_$('FilterInput').focus();
}

function AddFilter_Click() {
    currentPageNumber = 0;
    if (Compunix_$('FilterInput').value != '') {
        FilterList.push(Compunix_$('FilterInput').value);
    }
    Compunix_$('FilterInput').value = '';
    LoadFilters();
    Compunix_$('FilterInput').focus();

    if (FilterList.length == 0) {
        Compunix_$('FilterList').innerHTML = "No terms entered, please enter search keywords above.";
    }
}

function LoadCookies() {
    var terms = readCookie('ISearchTerms').split(',');
    for (var index = 0; index < terms.length; index++) {
        FilterList.push(terms[index]);
    }
    if (readCookie('ISearchPageSize').length > 0) {
        currentPageSize = readCookie('ISearchPageSize');
    }
    if (readCookie('ISearchSortBy').length > 0) {
        currentPageSort = readCookie('ISearchSortBy');
    }
    if (Compunix_$('PageSortPicker')) {
        Compunix_$('PageSortPicker').value = currentPageSort;
    }
    if (Compunix_$('PageSizePicker')) {
        Compunix_$('PageSizePicker').value = currentPageSize;
    }
    currentPageNumber = LoadCookie('ISearchPageNumber');
    currentColorFilter = LoadCookie('ISearchColorFilter');
    currentSizeFilter = LoadCookie('ISearchSizeFilter');
    currentManufacturerFilter = LoadCookie('ISearchManufacturerFilter');
    currentCategoryFilter = LoadCookie('ISearchCategoryFilter');
    currentGenreFilter = LoadCookie('ISearchGenreFilter');
    currentDistributorFilter = LoadCookie('ISearchDistributorFilter');
    currentVectorFilter = LoadCookie('ISearchVectorFilter');
    currentSectionFilter = LoadCookie('ISearchSectionFilter');
    currentLibraryFilter = LoadCookie('ISearchLibraryFilter');
    currentSubModelFilter = LoadCookie('ISearchSubModelFilter');
    // ACES FILTERS
    currentEngineFilter = LoadCookie('ISearchEngineFilter');
    currentTransmissionFilter = FLoadCookie('ISearchTransmissionFilter');
    currentBrakesFilter = LoadCookie('ISearchBrakesFilter');
    currentDriveTypeFilter = LoadCookie('ISearchDriveTypeFilter'); ;
    currentSteeringFilter = LoadCookie('ISearchSteeringFilter');
    currentSuspensionFilter = LoadCookie('ISearchSuspensionFilter');
    currentBodyFilter = LoadCookie('ISearchBodyFilter');
    currentOtherFitmentNotesFilter = LoadCookie('ISearchOtherFitmentNotesFilter');

    LoadFilters();
}

function PrevPage() {
    currentPageNumber--;
    LoadFilters();
}

function NextPage() {
    currentPageNumber++;
    LoadFilters();
}

function GoToPage(pageNumber) {
    currentPageNumber = pageNumber;
    LoadFilters();
}
function ToggleFilterTable(tableCell) {
    if (tableCell.innerHTML == '[+]') {
        tableCell.innerHTML = '[-]';
        Compunix_$('FilterTable').style.display = 'block';
        //runFilters = true;
    }
    else {
        tableCell.innerHTML = '[+]';
        if (Compunix_$('FilterInput'))
            Compunix_$('FilterInput').value = '';
        Compunix_$('FilterTable').style.display = 'none';
        Search_Click();
        //runFilters = false;
    }
}

function SetEntityFilter(type) {
    var result = '';
    result = FindFilters(type + 'PickerDDL', type + 'PickerListBox', type);
    if (defaultEntityType == type && result == '') {
        result += defaultEntityID;
    }
    return result;
}
function LoadCookie(name) {
    var result = '';
    if (readCookie(name).length > 0) {
        result = readCookie(name);
    }
    return result;
}

function ClearFilter_Click() {
    currentPageNumber = 0;
    FilterList = new Array();
    LoadFilters();
}

function ajaxAddToCart(ProductID, VariantID) {
    sendAJAXRequest('addtocart.aspx?Quantity=1&ProductID=' + ProductID + '&VariantID=' + VariantID, '', function(response) {
        Compunix_$('BtnAddedCart' + ProductID).innerHTML = 'Added to your cart';
        //alert('Item added to your cart');
        //Compunix_$('LoadingOverLay').className = "RestingOverLay";
        //Compunix_$('LoadingImage').className = "RestingImage";
    });
}
