
function replaceHiglight(text,highlight){
	//может это не совсем красиво, но зато работает
	var reg=RegExp(' '+highlight+' ');
	text = text.replace(reg, ' <b>'+highlight+'</b> ');//в строке
	reg=RegExp(highlight+' ');
	text = text.replace(reg, '<b>'+highlight+'</b> ');//начало строки
	reg=RegExp(' '+highlight);
	text = text.replace(reg, ' <b>'+highlight+'</b>');//конец строки
	return text;
}

Hints = new Object();

Hints.langs = new Object();
Hints.langs['ru'] = {
   'h1'  : 'Результаты поиска на запрос: ', 
   'all' : 'Посмотреть все'
};

Hints.langs['en'] = {
   'h1' : 'Search results ',
   'all' : 'Show all'
};


Hints.create = function(topic_id, partner_id, sv)
{
   this.lng = $('html').attr('lang');
   if(this.lng == null)
      this.lng = 'en';
   this.topic_id = topic_id;
   this.partner_id = partner_id;
   this.sv = sv;
   this.cursor_x = 0;
   this.cursor_y = 0;
   this.word = new String();
   this.mouse_in_hint = false;
   this.timeout_id = null;
   this.objective = null;
 
   $('.search-map-div a').mouseover(Hints.aMouseOver);
   $('.search-map-div a').mouseover(function(){Hints.objective = 'a';});
   $('.search-map-div a').mouseout(Hints.hintHide);
   $('.search-map-div a').click(function(){
      clearTimeout(Hints.timeout_id);
      if(Ads.save_icon_src)
         Ads.div_word.find('.icon').attr('src', Ads.save_icon_src);
      Hints.mouse_in_hint = false;
   });

   $('.hint').live('mouseenter', function(){
      Hints.mouse_in_hint = true;
   });
 
   $('.hint').live('mouseleave', function(){

      $('.hint').fadeOut(400, function(){$(this).remove();});
   });

   $('.close').click(function(){
      $('.hint').hide();
   });

   $('.hint .all').live('click', Hints.sendNewReq);

   $('.hint h1 a').live('click', Hints.sendNewReq);	
}	

Hints.sendReq = function(word)
{
   var url_query = "/SearchRequest.asp";

   var data_query = {
      page:1, 
      request: word, 
      searchVia: Hints.sv, 
      html: 0, 
      topicId: Hints.topic_id, 
      partnerId: Hints.partner_id, 
      pagesize: 3, 
      viewtype: "service", 	
      FirstLaunch: 0, 
      ResultLetterCount: 19, 
      requestsource: "map",
      time_unit: "i",
      sd_wrate: 5,
      arate: 5,
      anno_wrate:5
   };

   $.ajax({
      async: false,
      type: "GET",
      url: url_query,
      contentType: "application/xml; charset=\"utf-8\"",
      dataType :($.browser.msie) ? "text" : "xml",  
      data: data_query,
      timeout: 50,
      ifModified: true,
      beforeSend : Ads.waitBanner,
      success: Hints.processResult
   });
}

Hints.processResult = function(data, status)
{
   var xml;
   if (typeof data == "string")
   {
      xml = new ActiveXObject("Microsoft.XMLDOM");
      xml.async = false;
      xml.loadXML(data);
   }
   else
      xml = data;

   if($('.hint').html() != '')
      $('.hint').remove();

   var ol = $('<ol>');

   if(Hints.mouse_in_hint == true)
   {
      if($(xml).find('result:eq(0)').text() != '')
      {
         var count_res = 0;
         var img_res = (Hints.sv == 9 || Hints.sv == 2) ? true : false;
         var video_res = (Hints.sv == 5) ? true : false;


         $(xml).find('result').each(function()
         {
            var title_el = $(this).find('title').find('shortvalue:eq(0)');

            title = title_el.text();
            if (title == '')
            {
               title = $(this).find('title').slice(0,1).text();
            }

            var l = $(title_el).find('highlight')['length'];
            for(var i = 0; i < l; i++)
            {
               var highlight = $(title_el).find('highlight:eq(' + i + ')').text();
               title = replaceHiglight(title, highlight, i);
            }

            if(Hints.sv == 9)
               var url = 'http://' + $(this).find('html-link').text();
            else if(Hints.sv == 2)
               var url = $(this).find('RefererUrl').text();
            else
               var url = $(this).find('url').text();

            var shorturl = (url.length > 58) ? url.substr(0,58) + '...' : url;

            var enclosure = $(this).find('enclosure').attr('url');
 
            if(enclosure != '' && enclosure != null)
               enclosure = $('<img src="' + enclosure + '"/>');
            else if(video_res)
               enclosure = $('<img src="' + $(this).find('staticpreview').text() + '"/>');
            else
               enclosure = '';


            var annotation = $(this).find('annotation').text();
            var l = $(this).find('annotation').find('highlight')['length'];

            for(var i = 0; i < l; i++)
            {
               var highlight = $(this).find('annotation').find('highlight:eq(' + i + ')').text();
               annotation = replaceHiglight(annotation, highlight, i);
            }

            if(!title)
               title_a = $("<a>").attr("href",url).text(shorturl);
            else
               title_a=$("<a>").attr("href",url).html(title);

            title_a.attr('target','_blank');

            if(img_res)
            {
               if(Hints.sv == 9)
                  var min_img_link = $(this).find('thumbnail-link').text();
               else
                  var min_img_link = $(this).find('Url').text();

               var p_title = $("<a target='_blank' class='link_img' href='" + url + "'><img src='" +min_img_link + "'/></a><p class='annotation'>" + ((Hints.sv == 2)?title_a.html():annotation) + "</p>");
            }
            else
            {
               var p_title = $("<p>").addClass("title").append(title_a);
               var p_annotation = $("<p class='annotation'>").html(annotation);
            }

            var p_url = $("<p>").addClass("url").text(shorturl);
            var li = $('<li>').append('<span class="number">' + ($(this).index()+1) + '.</span>').append(enclosure).append(p_title).append(p_annotation).append(p_url);
            count_res++;
            ol.append(li);
         });
 
         var h1_req = (Hints.objective == 'a')?$('.input-request').val():Hints.word;
         $('<div class="hint"/>')
        .append('<h1>' + Hints.langs[Hints.lng].h1 +'<a>' + h1_req + '</a></h1>')
        .append(ol)
        .append('<a class="all">' + Hints.langs[Hints.lng].all + '</a>')
        .appendTo('body')
        .css({"left" : Hints.cursor_x, "top": Hints.cursor_y, 'display' : 'none'});

        if(img_res)
        {
           $(".hint ol").addClass('images');
           var width_hint = count_res * (152 + 10);
           $(".hint").css({"width" : width_hint});
        }

        Ads.div_word.find('.icon').attr('src', Ads.save_icon_src);
        $(".hint").fadeIn(400);
        $('.hint li a').each(sendViaGo);
      }
   }
}

Hints.saveWord = function()
{
   Hints.word = $(this).text();	
}

Hints.aMouseOver = function(event)
{
   var pos_map = $('.search-map-div').position().top;
   var div_word = $(event.target).parents('div');
    var pos = div_word.position();
   var lh_word = div_word.css('line-height');
   lh_word = lh_word.replace('px','');
   if($(event.target).attr('src') != null && $(event.target).attr('src') != undefined)
      var word = $(event.target).next('a').text();
   else
      var word = $(this).text();
   Ads.selected_words = $.trim(word);
 
   var request_text = $('.input-request').val();

   if(request_text != '')
      word = request_text;
   Hints.word = word;
   Hints.timeout_id = setTimeout("Hints.sendReq('" + word + "')", 400);
   Ads.id_timeout = setTimeout('Ads.sendReq()', 400);
   Hints.mouse_in_hint = true;
   Hints.cursor_x = event.pageX - 197;
   Hints.cursor_y = parseInt(pos.top) + parseInt(lh_word) + parseInt(Math.round(pos_map));

}

Hints.hintHide = function()
{
   clearTimeout(Hints.timeout_id);

   $('.hint').oneTime('40ms', function()
   {	
      if(!Hints.mouse_in_hint)
      {
         $('.hint').fadeOut(400, function(){$(this).remove();});
      }

   });
   Hints.mouse_in_hint = false;
}

Hints.sendNewReq = function()
{
   $('.input-request').val('');
   clickWord(Hints.word, true);
}