﻿

// event to hide search results when click out of results frame
window.document.addEvent('click', function(event)
{
    // hide search results
    var left = $('vtxSearchResMain').getPosition().x;
    var top = $('vtxSearchResMain').getPosition().y;
    var right = left + $('vtxSearchResMain').getSize().x;
    var bottom = top + $('vtxSearchResMain').getSize().y;
    
    if ( (event.client.x < left) ||
          (event.client.x > right) ||
          (event.client.y < top) ||
          (event.client.y > bottom) )
        $('vtxSearchResMain').setStyle('display', 'none');    
});

window.addEvent('domready', 
    function() 
    {       
        $('vtxSearchBox').addEvent('keyup', function()
        {               
            var vtxProductSearchURL = 'x-rev.search.products.aspx';
            var vtxTopicsSearchURL = 'x-rev.search.topics.aspx';
            var vtxBlogsSearchURL = 'x-rev.search.blogs.aspx';
            var sSearchText = $('vtxSearchBox').value;
            if (sSearchText.length > 3)
            {
            // Removed Per Request
//                if ($('vtxSearchProducts').checked)
//                {
                    $('vtxSearchResProducts').setStyle('display', 'block');
                    VortxSearch(vtxProductSearchURL, sSearchText, 'products');
                //}

//                if ($('vtxSearchTopics').checked)
//                {
                    $('vtxSearchResTopics').setStyle('display', 'block');
                    VortxSearch(vtxTopicsSearchURL, sSearchText, 'topics');
                //}

//                if ($('vtxSearchBlogs').checked)
//                {
                    $('vtxSearchResBlogs').setStyle('display', 'block');
                    VortxSearch(vtxBlogsSearchURL, sSearchText, 'blogs');
                //}
            }                       
        });
        
// Removed per request        
//        $('vtxSearchBox').addEvent('mouseover', function(event)
//        {                    
//            $('vtxSearchOptions').setStyle('display', 'block');            
//            $('vtxSearchOptions').setStyle('left', $('vtxSearchBox').getPosition().x);
//            $('vtxSearchOptions').setStyle('top', $('vtxSearchBox').getPosition().y + $('vtxSearchBox').getSize().y);
//        });        
        
//        $('vtxSearchOptions').addEvent('mouseout', function(event)
//        {
//            var left = $('vtxSearchOptions').getPosition().x;
//            var top = $('vtxSearchOptions').getPosition().y;
//            var right = left + $('vtxSearchOptions').getSize().x;
//            var bottom = top + $('vtxSearchOptions').getSize().y;
//                             
//            if ( (event.client.x <= left) ||
//                  (event.client.x >= right) ||
//                  (event.client.y <= top) ||
//                  (event.client.y >= bottom) )
//                $('vtxSearchOptions').setStyle('display', 'none');        
//        });        
        
//        $('vtxSearchBox').addEvent('mouseout', function(event)
//        {
//            var left = $('vtxSearchOptions').getPosition().x;
//            var top = $('vtxSearchOptions').getPosition().y;
//            var right = left + $('vtxSearchOptions').getSize().x;
//            var bottom = top + $('vtxSearchOptions').getSize().y;
//                             
//            if ( (event.client.x < left) ||
//                  (event.client.x > right) ||
//                  (event.client.y < top) ||
//                  (event.client.y > bottom) )
//                $('vtxSearchOptions').setStyle('display', 'none');        
//        });        
    }
);
        

function VortxSearch(sURL, sSearchText, sType)
{
    var theForm = $('vtxSearchForm');
    var url = sURL + "?" + theForm.toQueryString();
    new Request.JSON({
       url: url,
       method: 'get',
       onRequest: VortxSearchRequest(sType),
       onFailure: VortxSearchFailure,
       onSuccess: VortxSearchSuccess }).send();
}

function VortxHighlightText(sText, sTextToHighlight, sClass)
{
    var sHighlightClass = 'vtxSearchHighlight';
    if ((sClass != null) && (sClass.length > 0))
        sHighlightClass = sClass;
          
    var sTextUpper = sText.toUpperCase();
    var sHighlightUpper = sTextToHighlight.toUpperCase();
    var dex = sTextUpper.indexOf(sHighlightUpper);    
    if (dex >= 0)
    {
        var sStart = sText.substr(0, dex);
        var sHightlight = sText.substr(dex, sTextToHighlight.length)
        var sEnd = sText.substr(dex + sTextToHighlight.length);
        var Ret = sStart + '<span class="' + sHighlightClass + '">' + sHightlight + '</span>' + sEnd;
        return Ret;
    }
    return sText;
}

function VortxMenuItem()
{
    this.Title = '';
    this.Description = '';
    this.ID = 0;
    this.Link = '';
    
    this.fromJSONObject = function(objJSON)
    {
        if (objJSON == null)
            return;
            
        if (objJSON.Name != null)
        {
            this.Title = objJSON.Name;
        }
        
        if (objJSON.Description != null)
        {
            this.Description = objJSON.Description;
        }
        
        if (objJSON.ID != null)
        {
            this.ID = objJSON.ID;
        }
        
        if (objJSON.ImageURL != null)
        {
            this.ImageURL = objJSON.ImageURL;
        }
        
        if (objJSON.Link != null)
        {
            this.Link = objJSON.Link;
        }
    }
    
}


function VortxBuildMenuList(ElementID, arrListJSON, sSearchText, sResultCloneID, sNoResultsID)
{
    // load topic results
    var element = $(ElementID);
    
    element.empty();    
    if ((arrListJSON == null) || (arrListJSON.length <= 0))
    {
        element.adopt($(sNoResultsID).clone());
        return;
    }
    
    i = 0;
    for (i = 0; i < arrListJSON.length; i++)
    {
        var objMenuItem = new VortxMenuItem();
        objMenuItem.fromJSONObject(arrListJSON[i]);
        
        var eleSpanTitle = new Element('span', {'html': VortxHighlightText(objMenuItem.Title, sSearchText) });
        var eleSpanDesc = new Element('span', {'html': VortxHighlightText(objMenuItem.Description, sSearchText) });        

        var objResults = $(sResultCloneID).clone();
        
        var objArrDiv = objResults.getElements('div');
        
        if (objMenuItem.Link.length > 0)
        {
            objArrDiv[0].getElements('a')[0].set('href', objMenuItem.Link);            
        }               
        
        if (objMenuItem.Title.length > 0)
        {
            objArrDiv[0].getElements('a')[0].adopt(eleSpanTitle);
        }
        else
        {
            objArrDiv[0].empty();
        }
        
        if (objMenuItem.Description.length > 0)
        {
            eleSpanDesc.inject(objArrDiv[1], 'top');
            if (objMenuItem.Link.length > 0)
            {
                objArrDiv[1].getElements('a')[0].set('href', objMenuItem.Link);   
            }
        }
        else
        {            
            objArrDiv[1].empty();
            objArrDiv[1].setStyle('display', 'none');
        }
        
        objResults.setStyle('display', 'block');
        element.adopt(objResults);
    }    
}

function VortxSearchRequest(sRequestType)
{      
    $('vtxSearchResMain').setStyle('display', 'block');
    $('vtxSearchResMain').setStyle('left', $('vtxSearchBox').getPosition().x);
    $('vtxSearchResMain').setStyle('top', $('vtxSearchBox').getPosition().y + $('vtxSearchBox').getSize().y);

    var indicator = $('vtxSearchIndicator').clone();
    indicator.setStyle('display', 'block');       

// Removed Per Request
// $('vtxSearchOptions').setStyle('display', 'none');

    if (sRequestType.toLowerCase() == 'products')
    {        
        $('vtxSearchResBodyProducts').empty();
        $('vtxSearchResBodyProducts').adopt(indicator);
   }
    else if (sRequestType.toLowerCase() == 'topics')
    {
       $('vtxSearchResBodyTopics').empty();
       $('vtxSearchResBodyTopics').adopt(indicator);
   }
    else if (sRequestType.toLowerCase() == 'blogs')
    {
        $('vtxSearchResBodyBlogs').empty();
        $('vtxSearchResBodyBlogs').adopt(indicator);
    }
}

function VortxSearchFailure()
{
}

function VortxSearchSuccess(data)
{   
    if (!data)
        return;    
            
    var sSearchText = $('vtxSearchBox').value;   
    
    if (data.Products != null)
    {
        VortxBuildMenuList('vtxSearchResBodyProducts', data.Products, sSearchText, 'vtxSearchResBodyTemplate', 'vtxSearchNoResults');
    }

    if (data.Topics != null)
    {
        VortxBuildMenuList('vtxSearchResBodyTopics', data.Topics, sSearchText, 'vtxSearchResBodyTemplate', 'vtxSearchNoResults');
    }
        
   if (data.Blogs != null)
    {
        VortxBuildMenuList('vtxSearchResBodyBlogs', data.Blogs, sSearchText, 'vtxSearchResBodyTemplate', 'vtxSearchNoResults');
    }
}

