/*
 * User Driven Effects
 *   Update and view results button click.
 *   Search Results column (sort) click.
 *   Display interval change.
 *   Page or previous or next click.
 */

function sortData(sortColumn , sortOrder)
{
    // Sort the server data set first
    var sortFunction = "sortByPartnerAsc";  
    var oppositeSortOrder = "Asc";
    if (sortOrder != "Desc")
    {
        sortOrder = "Asc"; 
        oppositeSortOrder = "Desc";
    }
    if (!(sortColumn === undefined) && (sortColumn != "") && !(sortOrder === undefined) && (sortOrder != "")) {
        sortFunction = "sortBy" + sortColumn + sortOrder;
    }
    compdata.sort(eval(sortFunction));

    $("#search_results_bar").show();
    $("#search_results_table").show();
    var sortLink    = "updateResultsWithValues(1,'Partner','Asc')";
    if (sortColumn    == "Partner") 
    {
        sortLink    = "updateResultsWithValues(1,'Partner','" + oppositeSortOrder + "')";
    }
    $("#col_partner_sort").attr("href", "javascript:" + sortLink);

    sortLink        = "updateResultsWithValues(1,'ProviderName','Asc')";
    if (sortColumn    == "ProviderName") 
    {
        sortLink    = "updateResultsWithValues(1,'ProviderName','" + oppositeSortOrder + "')";
    }
    
    $("#col_model_sort").attr("href", "javascript:" + sortLink);
    sortLink        = "updateResultsWithValues(1,'Version','Asc')";
    if (sortColumn    == "Version") 
    {
        sortLink    = "updateResultsWithValues(1,'Version','" + oppositeSortOrder + "')";
    }
    $("#col_cpu_series_sort").attr("href", "javascript:" + sortLink);
}

function generateResultSet(format, interval, page, sortColumn, sortOrder)
{
    var count = 0;
    var pcount= 0;
    var html = "";

    if (format!='whatsnew')
    {
        //Get Values from Form and set it in Local Variables
        var selectedPartner         = $("select[name=partner]").val();
		 if(fromWizard()) {
			var selectedReleases     = getAllValues("releaseVersion");
			var selectedArrayTypes      = $("select[name=vasaArrayTypes]").val();
			var selectedVASAProvider    = $("select[name=model]").val();
		}
		else {
			var selectedReleases        = $("select[name=releases]").val();
			var selectedArrayTypes      = $("select[name=arrayTypes]").val();
			var selectedVASAProvider    = $("select[name=vasaProvider]").val();
		}
        var keyword                 = $("input[name=keyword]").val();    
        var selectedVASAProfiles    = $("select[name=vasaProfiles]").val();
        var selectedVASAProviderVer = $("select[name=vasaProviderVer]").val();
        var selectedDateRanges      = parseInt($("select[name=dateRanges]").val());
    }
    if (format!='csv')
    {
        //Set bookmark url, go through each search field an add to url if set
        var query_string = "deviceCategory=vasa";
        query_string += validateAndPrepareQueryString("partner"            , selectedPartner            );
        query_string += validateAndPrepareQueryString("releases"           , selectedReleases           );
        query_string += validateAndPrepareQueryString("keyword"            , keyword                    );
        query_string += validateAndPrepareQueryString("arrayTypes"         , selectedArrayTypes         );
        query_string += validateAndPrepareQueryString("vasaProvider"       , selectedVASAProvider       );
        query_string += validateAndPrepareQueryString("vasaProviderVer"    , selectedVASAProviderVer    );
        query_string += validateAndPrepareQueryString("dateRanges"         , selectedDateRanges         );
        query_string += addHidePartner();
        query_string = query_string + '&page=' + page + '&display_interval=' + interval + '&sortColumn=' + sortColumn + '&sortOrder=' + sortOrder;
        var bookmark_url = host + "?" + query_string;
        $("#bookmark_url").val(bookmark_url);
    }

    for (var si=0; si < compdata.length; si++)
    {
		if (si == "indexOf")
	    continue;
		
        var server_releases = compdata[si][col_releases];
        var prod_id         = compdata[si][col_product_id];
        var model='';
        var arry_type='';
        var arry_type_id_arr=new Array();
        if(suptmodel[compdata[si][col_product_id]]!="undefined" && suptmodel[compdata[si][col_product_id]]!=null)
        {
            arry_type     = suptmodel[compdata[si][col_product_id]][col_array_type];
            arry_type_arr = splitString(suptmodel[compdata[si][col_product_id]][col_array_type_id] , ',');
            model         = suptmodel[compdata[si][col_product_id]][col_models];
        }

        if (format!='whatsnew')
        {
            //Filter Data
            if (validateDeviceData(selectedPartner          , compdata[si][col_partner]    , 'inarray')== "continue") continue;
            if (validateDeviceData(selectedReleases         , server_releases              , 'barr')   == "continue") continue;
            if (validateDeviceData(selectedArrayTypes       , arry_type_arr                , 'barr')   == "continue") continue;
            if (validateDeviceData(selectedVASAProfiles     , compdata[si][col_profiles]   , 'barr')   == "continue") continue;

            //keyword filter
            var searchStr = new Array();
            searchStr[searchStr.length] = prod_id;
            searchStr[searchStr.length] = compdata[si][col_partner_name];        
            searchStr[searchStr.length] = arry_type;
            searchStr[searchStr.length] = model;        
            searchStr[searchStr.length] = compftdt[prod_id];
            searchStr[searchStr.length] = mkStrFromArrByMatchingVal(server_releases , releases);
            searchStr[searchStr.length] = mkStrFromArrByMatchingVal(compdata[si][col_profiles] , vasaProfiles);
            searchStr[searchStr.length] = vasaProviders[compdata[si][col_vasa_provider_id]];
            searchStr[searchStr.length] = vasaProviderVer[compdata[si][col_vasa_provider_ver]];
            searchStr[searchStr.length] = prodftdt[prod_id];


            if (validateDeviceData(keyword                    , searchStr                              , 'keyword') == "continue") continue;
            if (validateDeviceData(selectedVASAProvider       , compdata[si][col_vasa_provider_id]     , 'inarray')== "continue") continue;
            if (validateDeviceData(selectedVASAProviderVer    , compdata[si][col_vasa_provider_ver]    , 'inarray')== "continue") continue;
            if (selectedDateRanges != 0 && selectedDateRanges < parseInt(compdata[si][col_daterange])  ) continue;
        }

        //CSV GENERATION CODE AFTER FILTER RECORDS
        if(format=='csv')
        {
            var tmpRow = []; // construct temporary array
            tmpRow[tmpRow.length] = removeCharForCSV(compdata[si][col_partner_name]);
            tmpRow[tmpRow.length] = compdata[si][col_vasa_provider_name];
            tmpRow[tmpRow.length] = compdata[si][col_vasa_provider_ver];

            var release_count = 0;
            //The code below displays only the releases "Selected in the drop down"
            var rlhtml='';
            for (var ri=0; ri < server_releases.length; ri++)
            {
                if (server_releases[ri] !== undefined && releases[server_releases[ri]] !== undefined)
                {
                        if(rlhtml != '') { rlhtml +=  " | "; }
                        rlhtml += releases[server_releases[ri]];
                }
            }
            tmpRow[tmpRow.length] = rlhtml;

            if(typeof(model) !== 'undefined' && model != null )
            {
                tmpRow[tmpRow.length] = model.replace(/,/gi, " | ");
            }
            tmpRow[tmpRow.length] = compftdt[compdata[si][col_product_id]];
            var tmp = tmpRow.join('') // to remove any blank rows
            if (tmpRow.length > 0 && tmp != '') {
                var mystr = tmpRow.join(',');
                csvDataArray[csvDataArray.length] = mystr;
            }
            continue;
        }

        if  ((interval == 0) || ((count >= ((page - 1) * interval)) && (count < (page * interval))))
        {
            html += "<tr>";
            html += "<td class=\"col_partner\" onMouseOver=\"setModal(event, $(this), " + si + ",'vasa')\"  onMouseOut=\"hideModal();\">" + compdata[si][col_partner_name]  + "</td>";
            if(fromWizard()){  
            html += "<td class=\"col_model\"   onMouseOver=\"setModal(event, $(this), " + si + ",'vasa')\"  onMouseOut=\"hideModal();\"><a class='ajax_detail' href='detail.php?deviceCategory=vasa&productid=" + compdata[si][col_product_id] + '&' + query_string + "'>" + compdata[si][col_vasa_provider_name] + "</a></td>";
            html += "<td class=\"col_cpu\"     onMouseOver=\"setModal(event, $(this), " + si + ",'vasa')\"  onMouseOut=\"hideModal();\"><a class='ajax_detail' href='detail.php?deviceCategory=vasa&productid=" + compdata[si][col_product_id] + '&' + query_string + "'>" + compdata[si][col_vasa_provider_ver] + "</a></td>";
            } else {
			html += "<td class=\"col_model\"   onMouseOver=\"setModal(event, $(this), " + si + ",'vasa')\"  onMouseOut=\"hideModal();\"><a href='detail.php?deviceCategory=vasa&productid=" + compdata[si][col_product_id] + '&' + query_string + "'>" + compdata[si][col_vasa_provider_name] + "</a></td>";
            html += "<td class=\"col_cpu\"     onMouseOver=\"setModal(event, $(this), " + si + ",'vasa')\"  onMouseOut=\"hideModal();\"><a href='detail.php?deviceCategory=vasa&productid=" + compdata[si][col_product_id] + '&' + query_string + "'>" + compdata[si][col_vasa_provider_ver] + "</a></td>";
            }
			if(isEmpty(compdata[si][col_vasa_provider_url])==true)
            {
                html += "<td></td>";
                html += "<td>";
            }
            else
            {
                html += "<td><a class=\"hand_cursor\" onclick=\"openOuterLink('"+ makeValidUrl(compdata[si][col_vasa_provider_url]) +"');return false;\">VASA Provider Download</a></td>";
                html += "<td>";
            }

            var productTypeId = $("#release_type").val();
            var release_count = 0;
            //The code below displays only the releases "Selected in the drop down"

            var rlhtml='';
            for (var ri=0; ri < server_releases.length; ri++) {
                if (server_releases[ri] !== undefined && releases[server_releases[ri]] !== undefined)
                {
                        if(rlhtml != '') {
                            rlhtml +=  ", ";
                        }
                        rlhtml += releases[server_releases[ri]];
                }
            }
            html +=rlhtml;
            html += "</td>";
            html += "</tr>";
            appendRowInTable(html);
            pcount++;
            html='';
        }
        count++;
    }
    if(pcount==0 && count>0)
    {
        throw "resetPaging";
    }
    return count;
}

function getNoRecordFoundMessage()
{
    return "<tr><td colspan=\"5\"><i>Sorry, there were no VASA matching your search criteria.  Please refine your search and try again.</i></td></tr>";
}

// Sort Functions
function sortByProviderNameAsc(r1, r2)
{
    if (vasaProviders[r1[col_vasa_provider_id]].toLowerCase() < vasaProviders[r2[col_vasa_provider_id]].toLowerCase()) {
        return (-1);
    } else if (vasaProviders[r1[col_vasa_provider_id]].toLowerCase() > vasaProviders[r2[col_vasa_provider_id]].toLowerCase()) {
        return (1);
    }
    if (r1[col_partner_name].toLowerCase() < r2[col_partner_name].toLowerCase()) {
        return (-1);
    } else if (r1[col_partner_name].toLowerCase() > r2[col_partner_name].toLowerCase()) {
        return (1);
    }
    if (r1[col_vasa_provider_ver].toLowerCase() < r2[col_vasa_provider_ver].toLowerCase()) {
        return (-1);
    } else if (r1[col_vasa_provider_ver].toLowerCase() > r2[col_vasa_provider_ver].toLowerCase()) {
        return (1);
    }
    return (0);
}
function sortByProviderNameDesc(r1, r2)
{
    return (sortByProviderNameAsc(r2, r1));
}
function sortByPartnerAsc(r1, r2)
{
    if (r1[col_partner_name].toLowerCase() < r2[col_partner_name].toLowerCase()) {
        return (-1);
    } else if (r1[col_partner_name].toLowerCase() > r2[col_partner_name].toLowerCase()) {
        return (1);
    }
    return(sortByProviderNameAsc(r1, r2));
}
function sortByPartnerDesc(r1, r2)
{
    return (sortByPartnerAsc(r2,r1));
}
function sortByVersionAsc(r1, r2)
{
    if (r1[col_vasa_provider_ver].toLowerCase() < r2[col_vasa_provider_ver].toLowerCase()) {
        return (-1);
    } else if (r1[col_vasa_provider_ver].toLowerCase() > r2[col_vasa_provider_ver].toLowerCase()) {
        return (1);
    }
    return(sortByProviderNameAsc(r1, r2));
}
function sortByVersionDesc(r1, r2)
{
    return (sortByVersionAsc(r2, r1));
}