﻿//This function calls the table build function passing in th JSON data 
function BuildOutput(container, jsondata, type)
{
    alert('containerid:=' + container);
    alert('jsondata:=' + jsondata);
    
    //var container=document.getElementById(containerid);
    //foo(jsondata);
    if (type==1)
    {
        //alert('BuildOutput: 1');
        container.appendChild(Display_Search_Results(jsondata));
    }
    else
    {
        //alert('BuildOutput: 2');
        container.appendChild(Display_Search_Comparisons(jsondata));
    }
}
function Display_Search_Results1(container,data,iType)
{
    container.innerHTML = "";
    var tmpdata = ""; eval("tmpdata = "+data); 
    var icntProds = Number(tmpdata.Products.length);
    
    //alert('Display_Search_Results1:= ictProds=' + icntProds)
    if (icntProds == 0)
    {
        if (iType==1){
            $(container).innerHTML = "<span class='searchresultsSummary'>No Records, please try again</span>";
        }else{
            $(container).innerHTML = "<span class='searchresultsSummary'>No Comparisons, please select a product to compare</span>";
        }
    }
    else
    {   
        if (iType==1){
            container.appendChild(Display_Search_Results(data));
        }
        else
        {
      
            if ($(container).style.display == "none")
                $(container).style.display = "";
        
            if (icntProds != 0)
            {
                container.appendChild(Display_Search_Comparisons(data));
            }
        }
    }
}

//This function builds the html table using the JSON data passed in

//This function generates table for paging
function FetchPaging(tmpdata,bSummary)
{
    var data = "";
    eval("data = "+tmpdata); 
    
    //fetch paging info
    var TotalRecs = Number(data.PagingInfo.TotalRecs);
    var RequestedPageNumber = Number(data.PagingInfo.RequestedPageNumber);
    var PageSize = Number(data.PagingInfo.PageSize);
    
    
    var tablePaging = document.createElement('table');
    tablePaging.width='100%';
    tablePaging.cellSpacing='0';
    tablePaging.cellPadding='0';
    tablePaging.border='0';
    
    
    var tbody2 = document.createElement('tbody');
    var tr1 = document.createElement('tr');
    var th1 = document.createElement('th');
    
    var tr2 = document.createElement('tr');
    var th2_1 = document.createElement('th');
    th2_1.colSpan = 3;
    th2_1.align = "right";
    var iEndRec = (RequestedPageNumber * PageSize);
    var iStartRec = iEndRec - (PageSize-1);
    if (TotalRecs <= iEndRec)
    {
        iEndRec = TotalRecs;
    }
    if (bSummary==1)
    {
        th2_1.innerHTML = "Results " + iStartRec + " to " + iEndRec + " of about " + TotalRecs + " records";
        tr2.appendChild(th2_1);
        tr2.className = "searchresultsPagingSummary";
    }
    
    var tr1 = document.createElement('tr');
    var th1 = document.createElement('th');
    if (RequestedPageNumber != 1)
    {
    th1.innerHTML="<a href='Javascript:fetchpage(" + (RequestedPageNumber-1) + ")'>&laquo;&nbsp;Previous</a>";
    }
    th1.width="33%";
    th1.align="right";
    tr1.appendChild(th1);
    
    /*
    alert('original='+Math.round(TotalRecs/PageSize));
    alert('ceil='+Math.ceil(TotalRecs/PageSize));
    alert('floor='+Math.floor((TotalRecs/PageSize)+1));
    */
    
    //This part calculates how many total page links to display
    var iDisplayMaxPages = 10;
    var iTotPages = Math.ceil(TotalRecs/PageSize);
    
    if (iDisplayMaxPages >= iTotPages)
    {
        iDisplayMaxPages = iTotPages;  
    }
    
    var iCurPage = RequestedPageNumber;
    var iEndPage = Math.ceil(iCurPage/iDisplayMaxPages) * iDisplayMaxPages;
    var iStartPage = (iEndPage) - (iDisplayMaxPages-1);     
    
    var tmpInnerHTML = "";
    for(var iPages=iStartPage; (iPages<=(Math.ceil(TotalRecs/PageSize))) && (iPages <= iEndPage); iPages++ )
    {
        var th2 = document.createElement('th');
        if (iPages != RequestedPageNumber)
        {
            tmpInnerHTML = tmpInnerHTML + "<a href='Javascript:fetchpage(" + iPages + ");'>" + iPages.toString() + "</a>&nbsp;&nbsp;";
        }
        else
        {
            tmpInnerHTML = tmpInnerHTML + "<a>" + iPages.toString() + "</a>&nbsp;&nbsp;";
        }
        
    }
    th2.innerHTML = "Results Page: " + tmpInnerHTML;
    th2.width="33%";  
    th2.align="center";
    tr1.appendChild(th2);
    tbody2.appendChild(tr2);
    tbody2.appendChild(tr1);
    
    var th3 = document.createElement('th');
    if (RequestedPageNumber != (Math.ceil(TotalRecs/PageSize)))
    {
        th3.innerHTML="<a href='Javascript:fetchpage(" + (RequestedPageNumber+1) + ")'>Next&nbsp;&raquo;</a>";
    }
    th3.width="33%"; 
    th3.align="left"; 
    tr1.appendChild(th3);
    tr1.className = "searchresultsPaging";
    
    tbody2.appendChild(tr1);
     
    tablePaging.appendChild(tbody2);
    tablePaging.id="table_" + Math.floor ( Math.random ( ) * 100 );
    
    return tablePaging;

}
//This function builds the html table using the JSON data passed in
function Display_Search_Results(tmpdata)
{
    var data = "";
    eval("data = "+tmpdata); 

    window.alert(tmpdata);
    
    var table = document.createElement('table');
    table.className='sortable';
    table.width='100%';
    
    var tbody = document.createElement('tbody');
    //alert('data.Products.length=' + data.Products.length);
    
    for(var i=0; i<data.Products.length; i++ )
    {
        
        var tr = document.createElement('tr');
        //Create headers on first iteration.
        if(i==0)
        {
            //START | Create headers
            var arrHeaders = new Array('','Part Number','Product Line','Title','Compare');
            
            for(var j=0; j<arrHeaders.length; j++)
            {
                //alert('Headers: Headers[j]' + Headers[j]);
                var th = document.createElement('th');
                if (arrHeaders[j]=='Compare' && cnetSearchResults.showComparisonInTab == false)
                {
                    th.appendChild(cnetSearchResults.newHyperLink("searchcomparison", "Compare", "JSON","divComparisons"))
                }else
                {
                    th.innerHTML=arrHeaders[j];
                }
                tr.appendChild(th);
            }
            //END | Create headers
            tr.className = "searchresultsHeader";
            tbody.appendChild(tr);
              
            //Be sure to start a new row.
            var tr = document.createElement('tr');
        }
        
        //START | Create rows, which info do wish wish to display
        var arrFields = new Array('Image','PartNumber','ProductLine','Title','Compare');
        var arrFormat = new Array('img','text','text','text','chkbox');
      
        for(var j=0; j<arrFields.length; j++)
        {
        
            var td = document.createElement('td');
    
            switch(arrFormat[j])
            {
            case 'img':
                var tmpimg = document.createElement('img');
                tmpimg.src = data.Products[i][arrFields[j]];
                td.appendChild(tmpimg);
                break    
            case 'chkbox':
                var tmpchkbox = document.createElement("input");
                tmpchkbox.setAttribute("type","checkbox"); 
                tmpchkbox.setAttribute("id", "chk" + data.Products[i].ProdID); 
                tmpchkbox.setAttribute("value", data.Products[i].ProdID); 
                if (data.Products[i].Selected=="true")
                {
                    tmpchkbox.defaultChecked = true; //Boolean(data.Products[i].Selected);
                }
                tmpchkbox.onclick = new Function("toggleColour('" + data.Products[i].ProdID + "');");
                td.appendChild(tmpchkbox);
                td.align="center";
                break
            default:
                td.innerHTML=unescape(data.Products[i][arrFields[j]]);
                break
            }
            /*
            if (data.Products[i].Selected=="true")
            {
                td.style.backgroundColor="orange"; 
            }
            */
            tr.appendChild(td);
        }

        //alert('tr.onmouseover');
            
        tr.onmouseover = new Function("this.className='searchresultsSummaryMouseOver';");
        if ((i % 2) == 1)
        {
            tr.className = "searchresultsSummaryBase";
            tr.onmouseout = new Function("this.className='searchresultsSummaryBase';");
        }else{
            tr.className = "searchresultsSummaryAlternateRow";
            tr.onmouseout = new Function("this.className='searchresultsSummaryAlternateRow';");
        }
        
        //START | Row formatting
        if (data.Products[i].Selected=="true")
        {
            tr.style.backgroundColor=cnetSearchResults.selectedproductbgcolor; //"orange";
            //tr.style.backgroundColor="orange";
        }
        //END   | Row formatting
        tr.id = "tr" + data.Products[i].ProdID;
       
        tbody.appendChild(tr);
    }
    table.appendChild(tbody);
    table.id="table_" + Math.floor ( Math.random ( ) * 100 );
    
    var tableMaster = document.createElement('table');
    tableMaster.width='100%';
    var tbodyM = document.createElement('tbody');
    var trM = document.createElement('tr');
    var tdM = document.createElement('td');
    //var tablePaging = FetchPaging(tmpdata);
    tdM.appendChild(FetchPaging(tmpdata,1)); //Calls paging table generation
    tdM.appendChild(table);
    tdM.appendChild(FetchPaging(tmpdata,0)); //Calls paging table generation
     
    trM.appendChild(tdM);
    tbodyM.appendChild(trM);
    tableMaster.appendChild(tbodyM);
   
    return tableMaster;
}

function alertTest(val) {
  alert("alerttest:=" + val);
}


function ShowComparisonInDivOnSamePage(jsonCompareData)
{
 

   //style.visibility = ($('compareTableBackground').style.visibility == "visible") ? "hidden" : "visible";
   //compareModal.update(html.outerHTML);
   //compareModal.open();



}