function processCustomSearchParameters(dataSourceId) {
    var lastNameString;
    var firstNameString
    var addressString;
    var stateParcelString;
    var countyParcelString;
    var minDateString;
    var maxDateString;
    var minPriceString;
    var maxPriceString;
    var minNeighborhoodString;
    var maxNeighborhoodString;
    var minPropertyClassString;
    var maxPropertyClassString;
    var townshipNumberString;

    try {
        

        try{
	        lastNameString = document.getElementById("ownerName").value;
        }
	    catch (err)
        {

        }

        try {
            firstNameString = document.getElementById("firstName").value;
        }
        catch (err) {

        }
        try{
        addressString = document.getElementById("address").value;
        }
        catch(err)
        {

        }
        try{
        stateParcelString = document.getElementById("stateNumberMask").value;
        }
        catch(err)
        {

        }
        try{
        countyParcelString = document.getElementById("countyNumberMask").value;
        }
        catch(err)
        {

        }
        try{
        minDateString = document.getElementById("minSaleDate").value;
        }
        catch(err)
        {

        }
        try{
        maxDateString = document.getElementById("maxSaleDate").value;
        }
        catch(err)
        {

        }
        try{
        minPriceString = document.getElementById("minSalePrice").value;
        }
        catch(err)
        {

        }
        try{
        maxPriceString = document.getElementById("maxSalePrice").value;
        }
        catch(err)
        {

        }

         try{
        minNeighborhoodString = document.getElementById("minNeighborhood").value;
        }
        catch(err)
        {

        }

         try{
        maxNeighborhoodString = document.getElementById("maxNeighborhood").value;
        }
        catch(err)
        {

        }

         try{
        minPropertyClassString = document.getElementById("minPropertyClass").value;
        }
        catch(err)
        {

        }

         try{
        maxPropertyClassString = document.getElementById("maxPropertyClass").value;
        }
        catch(err)
        {

        }

	try{
        townshipNumberString= document.getElementById("townshipNumber").value;
        }
        catch(err)
        {

        }

        document.getElementById('infoWindow').innerHTML = "Fetching results...";

        if (lastNameString != null && lastNameString != '') {

            fetchOverlay('tgis/custom.aspx?DSID=' + dataSourceId + '&RequestType=CustomSearchRequest&SearchType=Name&SearchCriteria=' + lastNameString + "|" + firstNameString);
        }
        else if ((lastNameString == null || lastNameString == '') && (firstNameString != null && firstNameString != '')) {
            fetchOverlay('tgis/custom.aspx?DSID=' + dataSourceId + '&RequestType=CustomSearchRequest&SearchType=Name&SearchCriteria=OnlyFirstName|' + firstNameString);
        }
        else if (stateParcelString != null && stateParcelString != '') {
            fetchOverlay('tgis/custom.aspx?DSID=' + dataSourceId + '&RequestType=CustomSearchRequest&SearchType=ParcelState&SearchCriteria=' + stateParcelString);
        }
        else if (countyParcelString != null && countyParcelString != '') {
            fetchOverlay('tgis/custom.aspx?DSID=' + dataSourceId + '&RequestType=CustomSearchRequest&SearchType=ParcelCounty&SearchCriteria=' + countyParcelString);
        }
        else if (addressString != null && addressString != '') {
            fetchOverlay('tgis/custom.aspx?DSID=' + dataSourceId + '&RequestType=CustomSearchRequest&SearchType=Address&SearchCriteria=' + addressString);
        }
        else if ((minDateString != null && minDateString != '') ||
                    (maxDateString != null && maxDateString != '') ||
                    (minPriceString != null && minPriceString != '') ||
                    (maxPriceString != null && maxPriceString != '') ||
                    (minNeighborhoodString != null && minNeighborhoodString != '') ||
                    (maxNeighborhoodString != null && maxNeighborhoodString != '') ||
                    (minPropertyClassString != null && minPropertyClassString != '') ||
                    (maxPropertyClassString != null && maxPropertyClassString != '') ||
                    (townshipNumberString != null && townshipNumberString != '') && townshipNumberString != '0') {



            fetchOverlay('tgis/custom.aspx?DSID=' + dataSourceId + '&RequestType=CustomSearchRequest&SearchType=Sales&SearchCriteria=' + minDateString + "," +
                            maxDateString + "," + minPriceString + "," + maxPriceString + "," + minNeighborhoodString + "," +
                            maxNeighborhoodString + "," + minPropertyClassString + "," + maxPropertyClassString + "," + townshipNumberString);
        }
        else {
            //alert("You must enter some criteria in order to perform the search...");
            fetchOverlay('tgis/custom.aspx?DSID=' + dataSourceId + '&RequestType=CustomSearchRequest&SearchType=Name&SearchCriteria=NoCriteria|' + firstNameString);
        }
    }
    catch (err) {
        alert("BentonCustom:processCustomSearchParameters: " + err.Message);
    }
}

function modifyClass(action, element, firstClass, secondClass) {
    var textToReplace;

    switch (action) {
        case 'swap':
            element.className = !modifyClass('check', element, firstClass) ? element.className.replace(secondClass, firstClass) : element.className.replace(firstClass, secondClass);
            break;
        case 'add':
            if (!modifyClass('check', element, firstClass)) { element.className += element.className ? ' ' + firstClass : firstClass; }
            break;
        case 'remove':
            textToReplace = element.className.match(' ' + firstClass) ? ' ' + firstClass : firstClass;
            element.className = element.className.replace(textToReplace, '');
            break;
        case 'check':
            return new RegExp('\\b' + firstClass + '\\b').test(element.className)
            break;
    }
}

function highlightTab(tabToHighlight, unHighlight) {
    var tab;
    var tabId;
    var currentClasses;

    tabId = "tab" + tabToHighlight;

    tab = document.getElementById(tabId);

    if (!modifyClass("check", tab, "ui-state-active")) {
        if (unHighlight) {
            modifyClass("remove", tab, "ui-state-hover");
        }
        else {
            modifyClass("add", tab, "ui-state-hover");
        }
    }
}
function showTab(tabToShow, totalTabs) {
    var tab;
    var currentTab;
    var tabId;
    var pageId;

    for (currentTab = 1; currentTab <= totalTabs; currentTab++) {
        tabId = "tab" + currentTab;
        pageId = "tabPage" + currentTab;

        tab = document.getElementById(tabId);
        page = document.getElementById(pageId);

        if (currentTab == tabToShow) {
            modifyClass("remove", tab, "ui-state-hover");
            modifyClass("add", tab, "ui-state-active");
            modifyClass("add", tab, "ui-tabs-selected");

            modifyClass("remove", page, "ui-tabs-hide");
        }
        else {
            modifyClass("remove", tab, "ui-state-active");
            modifyClass("remove", tab, "ui-tabs-selected");

            modifyClass("add", page, "ui-tabs-hide");
        }
    }
}
