﻿// JScript File

    function OnComplete(result)
    {
        var resultTotalHtml = "";
        
        if((typeof CreateBeginningPagingControl != 'function') == false)
        {
            if(result.Results.length > 0)
            {
                resultTotalHtml = resultTotalHtml + CreateBeginningPagingControl(result);
            }
        }
        if((result.Results.length > 0))
        {
            if((typeof ResultsBegin != 'function') == false)
            {
                resultTotalHtml = resultTotalHtml + ResultsBegin();
            }
            else if((typeof AdvancedResultsBegin != 'function') == false)
            {
                resultTotalHtml = resultTotalHtml + AdvancedResultsBegin(searchRequest);
            }
        }
        if(result.Results.length < 1)
        {
            if((typeof NoResultsFound != 'function') == false)
            {
                resultTotalHtml = resultTotalHtml + NoResultsFound();    
            }
            else
            {
                resultTotalHtml = resultTotalHtml + "sorry, no items match this search<br/><br />";
            }
        } 
        else
        {
            if((typeof ResultsExist != 'function') == false)
            {
                resultTotalHtml = resultTotalHtml + ResultsExist();    
            }
        }    
        
        for(i = 0; i < result.Results.length;i++)
        {
           
            if(i == 4)
            {
                if((typeof InjectAdvertising != 'function') == false)
                {
                    resultTotalHtml = resultTotalHtml + InjectAdvertising();
                }
            }
            
            result.Results[i].Index = i;
            resultTotalHtml = resultTotalHtml + CreateResultRow(result.Results[i]);
        }
 
        if((result.Results.length > 0))
        {
            if((typeof ResultsEnd != 'function') == false)
            {
                resultTotalHtml = resultTotalHtml + ResultsEnd();
            }
        }
        
        if((typeof CreatePagingControl != 'function') == false)
        {
             if(result.Results.length > 0)
            {
                resultTotalHtml = resultTotalHtml + CreatePagingControl(result);
            }
        }
         document.getElementById("searchResults").innerHTML = resultTotalHtml;
        window.scrollTo( 0, 0 );
        if((typeof hideVisualCue != 'function') == false)
              hideVisualCue(); 
    }
    
 function debugOpera(strMessage)
 {
     if(navigator.userAgent.indexOf("Opera")!=-1)
     {        
        alert("[OPERA_DBG: " + navigator.userAgent + "]:  " + strMessage)
     }
 }

    
    function InitializeXml(xmlData)
    {
        if (window.ActiveXObject)
        {
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async=false;
            xmlDoc.loadXML(xmlData);
             
        }
         else
        {
            var domParse = new DOMParser();
            xmlDoc = domParse.parseFromString(xmlData,'application/xml');
        }
    
        return xmlDoc;
    
    }
    
    function InitializeXmlFromUrl(url)
    {
         if (window.ActiveXObject)
        {
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async=false;
            xmlDoc.load(url);
             
        }
         else
        {
            var req = new XMLHttpRequest();

            req.open("GET", url, false); 
            req.send(null);

            var xmlDoc = req.responseXML;   
        }
    
        return xmlDoc;
    }
    
    function GetXmlElementText(xmlObject,elementPath)
    {
        var xmlElement;
        var textData;
        xmlElement = SelectSingleNode(xmlObject,elementPath);
         if(xmlElement != null)
        {
            textData = xmlElement.text;
        }
        else
        {
            textData = "";
        }
         return textData;
    }
    
    function SelectSingleNode(xmlDoc, elementPath)
    {
        if(window.ActiveXObject)
        {
            return xmlDoc.selectSingleNode(elementPath);
        }
        else
        {
           var xpe = new XPathEvaluator();
           var nsResolver = xpe.createNSResolver( xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement);
           var results = xpe.evaluate(elementPath,xmlDoc,nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE, null);
           return results.singleNodeValue; 
        }
    }
    
    function OnTimeout(result)
    {
        alert("timeout");
    }
    
        
    function OnError(result) 
    {
        var errorMessage = "Exception: " + result.get_message();
        errorMessage = errorMessage + "\n-----------------------------------\n";
        errorMessage = errorMessage + " StackTrace: + ";
        errorMessage = errorMessage + result.get_stackTrace();
        
        alert(errorMessage);
    }

    function GoToNextPage( currentPageNumber)
    {
       try
       {
            searchRequest.PageNumber = currentPageNumber + 1;
            var searchResults = Gallery.Engine.Components.SearchService.Search(searchRequest,OnComplete,OnError);
       }
       catch(excpt)
       {
            alert('Error in Search::GoToNextPage()');
            throw excpt;
       }
    }
    
    
    function GoToPreviousPage(currentPageNumber)
    {
        searchRequest.PageNumber = currentPageNumber - 1;
        var searchResults = Gallery.Engine.Components.SearchService.Search(searchRequest,OnComplete,OnError);
 
    }
    
    function SortResults(sortByField, visualField)
    {
         if(visualField != null)
        {
            if((typeof ToggleSortField != 'function') == false)
                  ToggleSortField(visualField); 
        }   
        
        
        searchRequest.PageNumber = 1;
        searchRequest.SortByField = sortByField;
        var searchResults = Gallery.Engine.Components.SearchService.Search(searchRequest,OnComplete,OnError);

    }

    function Register_SearchControl(xslFilePath, userAdSelection, bStatistics, bQueryFromPage)
    {
    
    }

    function getArgs()
    {
        var args = new Object();
        var query = location.search.substring(1);
        var pairs = query.split("&");
        for(var i = 0; i < pairs.length; i++)
        {
            var pos = pairs[i].indexOf('=');
            if(pos == -1) continue;
            var argname = pairs[i].substring(0,pos);
            var value = pairs[i].substring(pos+1);
            args[argname] = unescape(value);
        }
        return args;
    }


