// Removing search results
function hideSearchResults() {
/* hiding search results as the user clicks on the different categories */
  $('#resultdialog').removeClass('active');
    $("#resultlist").removeClass().addClass('all');
    $("#resultlinks").removeClass().addClass('all');
    $("#searchcount").removeClass().addClass('all');
}
/* closing the searhc result dialog */
$('#resultclose').click(function(e) {
  e.preventDefault();
  hideSearchResults();
});

$(document.body).click(function() {
});

/* START non link areas where cursor should change to pointing hand */
$('.t_button').mouseover(function() {
    $('.t_button').css('cursor','pointer');
});
/* END non link areas  */
/* Changing font size to smaller */
$('#smallA').click(function() {
        $('.mainContent .heading,.mainContent h1, .mainContent h2, .mainContent h3, .mainContent p, .mainContent li, .mainContent table').css('font-size','smaller');
        $('.t_button').removeClass('active')
        $(this).addClass('active')
});

/* Reset font size */
$('#medA').click(function() {
        $('.mainContent .heading').css('font','600 16px/1 Arial');
        $('.mainContent h1').css('font','600 18px/1.2 Arial');
        $('.mainContent h2').css('font','600 16px/1.2 Arial');
        $('.mainContent h3').css('font','600 14px/1.2 Arial');
        $('.mainContent p').css('font','13px/20px Verdana');
        $('.mainContent li').css('font','400 13px/1 Verdana');
        $('.mainContent li').css('line-height','14px');
        $('.mainContent .toc li').css('font', 'normal 10px/1.2 Verdana');
        $('.mainContent table').css('font','13px/1.2 Verdana');
        $('.mainContent .heading').css('font','600 16px/1 Arial');
        $('.mainContent .indexboxcont li').css('font','600 13px/1 Verdana');
        $('.t_button').removeClass('active')
        $(this).addClass('active')
});
/* Changing font size to bigger */
$('#bigA').click(function() {
        $('.mainContent .heading,.mainContent h1, .mainContent h2, .mainContent h3, .mainContent p, .mainContent li, .mainContent table').css('font-size','large');
        $('.mainContent .heading,.mainContent h1, .mainContent h2, .mainContent h3, .mainContent p, .mainContent li, .mainContent table').css('line-height','25px');
        $('.t_button').removeClass('active')
        $(this).addClass('active')
});

/* Show page content after closing feedback box */
$('.feedclose').click(function() {
    $('.bd').show();
    $('.hd').show();
    $('.footer').show();
    $('#feedbackBox').hide();
    $('#blurpage').hide();
});

/* Hide page content and show feedback box */
$('.feedback').click(function() {
    $('.bd').hide();
    $('.hd').hide();
    $('.footer').hide();
    $('#feedbackBox').show();
    $('#blurpage').show();
});
/* Default search URL */
var qturl = "";

/* The next function handles the response data (in xml) returned by the search engine */

// Process data sent back from the server. The data is structured as a XML.
/*
XML structure handled by function processNokiaData()
<page> - container for each page returned
<pageWords/> - contains keywords
<pageTitle/> - contains page title/header content
<pageUrl/> - contains page URL - URL relative to root
<pageType> - contains page type - APIPage/Article/Example
</page>
*/


function processNokiaData(response){
/* fetch the responce from the server using page as the root element */
    var propertyTags = response.getElementsByTagName('page');
    /* reset counters */
    var apiCount = 0;
    var articleCount = 0;
    var exampleCount = 0;
    var full_li_element;

/* remove any old results */
    $('#resultlist li').remove();


    /* running through the elements in the xml structure */
    for (var i=0; i<propertyTags.length; i++) {
        /* for every element named pageWords*/
        for (var j=0; j< propertyTags[i].getElementsByTagName('pageWords').length; j++) {
            /* start a new list element */
            full_li_element = '<li';
                    /* if the pageType element reads APIPage, add class name api */
      if (propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'APIPage') {
          full_li_element += ' class="api"';
          apiCount++;
      }
                    /* if the pageType element reads Article, add class name article */
      else if (propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'Article') {
          full_li_element += ' class="article"';
          articleCount++;
      }
                    /* if the pageType element reads Example, add class name example */
      else if (propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'Example') {
          full_li_element += ' class="example"';
          exampleCount++;
      }
            /* adding the link element*/
            full_li_element += '><a href="'+qturl;
            /* adding the URL attribute*/
            full_li_element += propertyTags[i].getElementsByTagName('pageUrl')[j].firstChild.nodeValue;
              /* adding the link title and closing the link and list elements */
            full_li_element += '">' + propertyTags[i].getElementsByTagName('pageWords')[0].firstChild.nodeValue + '</a></li>';
            /* appending the list element to the #resultlist div*/
            $('#resultlist').append(full_li_element);
        }
    }

    /* if the result is not empty */
    if (propertyTags.length > 0) {
    /* add class name active to show the dialog */
      $('#resultdialog').addClass('active');
      /* setting number of hits*/
      $('#resultcount').html(propertyTags.length);
      $('#apicount').html(apiCount);
      $('#articlecount').html(articleCount);
      $('#examplecount').html(exampleCount);

    }
    else {
      $('#pageType').addClass('red');
      }



  // Filtering results in display
    $('p#resultlinks a').click(function(e) {
      e.preventDefault();
    // Displays API ref pages
        if (this.id == "showapiresults") {
            $("#resultlist").removeClass().addClass('api');
            $("#resultlinks").removeClass().addClass('api');
            $("#searchcount").removeClass().addClass('api');
        }
    // Displays Articles
        else if (this.id == "showarticleresults") {
            $("#resultlist").removeClass().addClass('article');
            $("#resultlinks").removeClass().addClass('article');
            $("#searchcount").removeClass().addClass('article');
        }
    // Displays Examples
        if (this.id == "showexampleresults") {
            $("#resultlist").removeClass().addClass('example');
            $("#resultlinks").removeClass().addClass('example');
            $("#searchcount").removeClass().addClass('example');
        }
    // Displays All
        if (this.id == "showallresults") {
            $("#resultlist").removeClass().addClass('all');
            $("#resultlinks").removeClass().addClass('all');
            $("#searchcount").removeClass().addClass('all');
        }
    });
}

//build regular expression object to find empty string or any number of blank
var blankRE=/^\s*$/;


function CheckEmptyAndLoadList()
{
    /* Start Extracting information for feedback and adding this to the feedback form */
    var pageUrl = window.location.href;
    var pageVal = $('title').html();
    $('#pageType').removeClass('red');
    $('#feedUrl').remove();
    $('#pageVal').remove();
    $('.menuAlert').remove();
    $('#feedform').append('<input id="feedUrl" name="feedUrl" value="'+pageUrl+'" style="display:none;">');
    $('#feedform').append('<input id="pageVal" name="pageVal" value="'+pageVal+'" style="display:none;">');
    /* End Extracting information for feedback and adding this to the feedback form */

    /* extracts search query */
    var value = document.getElementById('pageType').value;
    /* if the search is less than three chars long remove class names and remove elements from old search*/
    if ((blankRE.test(value)) || (value.length < 3))
    {
    $('#resultdialog').removeClass('active');
    $('#resultlist li').remove();
    }
}

// Loads on doc ready - prepares search
    $(document).ready(function () {
    /* fetch page title*/
    var pageTitle = $('title').html();
    /* getting content from search box */
          var currentString = $('#pageType').val() ;
      /* if the search box is not empty run CheckEmptyAndLoadList*/
        if (currentString.length < 1){
            CheckEmptyAndLoadList();
        }

        /* on key-up in the search box execute the following */
        $('#pageType').keyup(function () {
        /* extract the search box content */
          var searchString = $('#pageType').val() ;
      /* if the string is less than three characters */
          if ((searchString == null) || (searchString.length < 3)) {
            /* remove classes and elements*/
                $('#pageType').removeClass('loading');
                 $('.searching').remove();
            /*  run CheckEmptyAndLoadList */
                     CheckEmptyAndLoadList();

                $('.report').remove();
                return;
           }
       /* if timer checks out */
            if (this.timer) clearTimeout(this.timer);
            this.timer = setTimeout(function () {
            /* add loading image by adding loading class */
                $('#pageType').addClass('loading');
                $('.searching').remove();

            /* run the actual search */
               $.ajax({
                contentType: "application/x-www-form-urlencoded",
                url: 'http://' + location.host + '/nokiasearch/GetDataServlet',
                data: 'searchString='+searchString,
                dataType:'xml',
                type: 'post',
                success: function (response, textStatus) {
                /* on success remove loading img */
                $('.searching').remove();
                $('#pageType').removeClass('loading');

                processNokiaData(response);

 }
              });
            }, 500); /* timer set to 500 ms */
        });
      });