  
    var errorCount=0; 
    var errorCount1 = 0;  

    var twitter_link;

    function searchYandex1(query)
    {
      var link = "http://blogs.yandex.ru/search.xml?ft=all&holdres=mark&text="+query;
      var yql = "select * from rss where url=\""+link+"\"";
      alert(yql);
      load(yql, "fsqtips");
    }

  function fsqtips(o)
  {
    inRequest = false; 

    alert(dump(o));
    
    if (!o.query)
    {
      alert("Service error. Please wait a moment and try again");      
      return;
    }

    if (!o.query.results)
    {
      alert("Service error. Please wait a moment and try again");
      return;
    }

   alert(dump(o.query));

  }


    function searchYandex(query)
    {
      var link = "http://blogs.yandex.ru/search.xml?ft=all&holdres=mark&text="+query;
      var feed = new google.feeds.Feed("http://blogs.yandex.ru/search.rss?ft=all&holdres=mark&text="+query+"&fict="+(new Date()).getTime()); 
      feed.setNumEntries(15);
      var container = document.getElementById("yandex");

      container.innerHTML = "<img style='padding-top:100px;padding-left:100px' src='/yat/loading.gif' alt='loading ...' border='0'/>";

      feed.load(function(result) {
          
        if (!result.error) {
          container = document.getElementById("yandex");
          container.innerHTML = '';
          var tweet = '';
          for (var i = 0; i < result.feed.entries.length; i++) {
            var entry = result.feed.entries[i];
            var div = document.createElement("div");

            var s ="<img src='http://favicon.yandex.net/favicon/"+getDomain(entry.link)+"' border='0' alt='' width='16' height='16'/> "
                  + "<a href='"+entry.link+"' target='_blank'>"+entry.title+"</a><br/>";

                s+="<span style='font-size:80%;color:#555555'>"+dateDiff(new Date(entry.publishedDate), new Date());

                if (entry.author) 
	                s+=" by "+entry.author;

            s+="</span><br/>";

            tweet = entry.content;

            var re = new RegExp("(([a-zA-Z]+:\/\/)([a-zA-Z][a-zA-Z0-9_\.-]*[a-zA-Z]{2,6})([a-zA-Z0-9~\#\/\._\?\&%-=]*[a-zA-Z0-9~\#\/_\?\&%-=]))", "g");
    	    tweet = tweet.replace(re, '<a style="' + 'text-decoration:none;" target="_new" href=$1 >$1</a>');

            re = new RegExp("@([a-zA-Z0-9_]+)", "g");
   	    tweet = tweet.replace(re, '@<a style="' + 'text-decoration:none;" target="_new" href=http://tinfo.linkstore.ru?u=$1>$1</a>');

            re = new RegExp("#([a-zA-Z0-9_]+)", "g");
	    tweet = tweet.replace(re, '<a style="' + 'text-decoration:none;" href=http://got.linkstore.ru?q=%23$1>#$1</a>');

  	    tweet = tweet.replace(/&/g, '&');

            re = new RegExp("(http://twitpic.com/)([0-9a-zA-Z]*)");
     	    var m = re.exec(tweet);
	    if  (!m || m.length == 0 || m[2] == "photos" || m[2] == "photo" || m[2] == "tag") {} 
            else {tweet = tweet +'<br/>'+ '<center><a href="http://twitpic.com/' + m[2] + '" target="_blank"><img src="http://twitpic.com/show/thumb/' + m[2] + '" border=0 height=150 width=150></a></center>';}	

            re = new RegExp("(http://yfrog.com/)([0-9a-zA-Z]*)");
   	    m = re.exec(tweet);
  	    if  (!m || m.length == 0) {} 
 	    else {tweet = tweet +'<br/>' + '<center><a href="http://yfrog.com/' + m[2] + '" target="_blank"><img src="http://yfrog.com/' + m[2] + '.th.jpg" border=0 height=150 width=150></a></center>';}	

            re = new RegExp("(http://img.ly/)([0-9a-zA-Z]*)");
     	m = re.exec(tweet);
  	if  (!m || m.length == 0) {} 
 	else {tweet = tweet+ '<br/>'+'<center><a href="http://img.ly/' + m[2] + '"><img src="http://img.ly/show/thumb/'+m[2]+'" border="0" style="height:150;width:150;"></a></center>'}	

        re = new RegExp("(http://tweetphoto.com/)([0-9a-zA-Z]*)");
   	var m = re.exec(tweet);
  	if  (!m || m.length == 0) {} 
 	else {tweet = tweet +'<br/>' + '<center><a href="http://tweetphoto.com/' + m[2] + '" target="_blank"><img src="http://TweetPhotoAPI.com/api/TPAPI.svc/imagefromurl?size=medium&url=http://tweetphoto.com/' + m[2] + '" border=0 height=150 width=150></a></center>';}	

        re = new RegExp("(http://plixi.com/p/)([0-9a-zA-Z]*)");
     	m = re.exec(tweet);
  	if  (!m || m.length == 0) {} 
 	else {tweet += '<br/><center><a href="http://plixi.com/p/' + m[2] + '" target="_blank"><img src="http://api.plixi.com/api/tpapi.svc/imagefromurl?size=medium&url=http://plixi.com/p/' + m[2] + '" border=0 height=150 width=150></a></center>';}	        

        re = new RegExp("(http://lockerz.com/s/)([0-9a-zA-Z]*)");
     	m = re.exec(tweet); 
  	if  (!m || m.length == 0) {} 
 	else {tweet += '<br/><center><a href="http://lockerz.com/s/' + m[2] + '" target="_blank"><img src="http://api.plixi.com/api/tpapi.svc/imagefromurl?size=medium&url=http://lockerz.com/s/' + m[2] + '" border=0 height=150 width=150></a></center>'; }	

        re = new RegExp("(http://farm)([0-9])(.static.flickr.com/)([0-9a-zA-Z_\.\/]*)");
     	m = re.exec(tweet);
  	if  (!m || m.length == 0) {} 
 	else {tweet += '<br/><center><a href="'+m[0]+'" target="_blank"><img src="'+m[0]+ '" border=0 height=150 width=150></a></center>'; return tweet;}	        

        re = new RegExp("(http://twitrpix.com/)([0-9a-zA-Z]*)");
	m = re.exec(tweet);
	if  (!m || m.length == 0) {} 
	else {tweet += '<br/><center><a href="http://twitrpix.com/' + m[2] + '" target="_blank"><img src="http://img.twitrpix.com/thumb/' + m[2] + '" border=0 height=150 width=150></a></center>'; }	

        re = new RegExp("(http://moby.to/)([0-9a-zA-Z]*)");
	m = re.exec(tweet);
	if  (!m || m.length == 0) {} 
	else {tweet += '<br/><center><a href="http://moby.to/' + m[2] + '" target="_blank"><img src="http://moby.to/' + m[2] + ':medium" border=0 height=150 width=150></a></center>'; }	

        re = new RegExp("(http://twitsnaps.com/)([0-9a-zA-Z]*)");
	m = re.exec(tweet);
	if  (!m || m.length == 0) {} 
	else {tweet += '<br/><center><a href="http://twitsnaps.com/' + m[2] + '" target="_blank"><img src="http://twitsnaps.com/thumb/' + m[2] + '" border=0 height=150 width=150></a></center>'; }	

        re = new RegExp("(http://twitgoo.com/)([0-9a-zA-Z]*)");
	m = re.exec(tweet);
	if  (!m || m.length == 0) {} 
	else {tweet += '<br/><center><a href="http://twitgoo.com/' + m[2] + '" target="_blank"><img src="http://twitgoo.com/' + m[2] + '/thumb" border=0 height=150 width=150></a></center>'; }	

        re = new RegExp("(http://instagr.am/p/)([0-9a-zA-Z_\-]*)/");
	m = re.exec(tweet);
	if  (!m || m.length == 0) {} 
	else {tweet += '<br/><center><a href="http://instagr.am/p/'+m[2] +  '/" target="_blank"><img src="http://instagr.am/p/' + m[2] + '/media?size=t" border=0 height=150 width=150></a></center>'; return tweet;}	




        s+=tweet+"<br/><br/>";
          
            div.innerHTML = s;             
            container.appendChild(div);
          }

        /*
         var l = document.createElement("div"); 
         l.innerHTML="<a href='"+link+"' title='Yandex search' target='_blank'>See more from Yandex</a>"
                    +"<br/>&nbsp;";
         container.appendChild(l);
        */
        } 
       else
       {
        errorCount1++;
        if (errorCount1==2)        
         alert("Yandex search error:"+result.error.code+" "+result.error.message); 
        else
         searchYandex(query);          
       } 

      });
    }

   function searchTwitter(query)
   {
     twitter_link="http://search.twitter.com/search?q="+query;

     var s ="http://search.twitter.com/search.json?q="+query+"&rpp=15";

     var container = document.getElementById("twitter");
     container.innerHTML = "<img style='padding-top:100px;padding-right:100px' src='/got/loading.gif' alt='loading ...' border='0'/>";

     getTwitter(s+"&callback=results");
     		
   }

    function results(t)
    {
       var v ='';
       var container = document.getElementById('twitter');

       if (t) v = t.results;

       if (!t)
       {
         container.innerHTML="<div class='error'>nobody writes about that</div>";   
       }
       else
       if (v.length==0)
       {
         container.innerHTML="<div class='error'>nobody writes about that</div>";   
       }
       else
       {
         var sText = "";  
         for (var i=0; i<v.length; i++)
         { 
           sText +=getEntry(v[i]);
         }

        
         container.innerHTML=sText;

       /*
         var l = document.createElement("div"); 
         l.innerHTML="<a href='"+twitter_link+"' title='Twitter search' target='_blank'>See more from Twitter</a>"
                     +"<br/>&nbsp;";
         container.appendChild(l);
       */

       } 
    }


    function getEntry(entry)
    {

           var sText ="<a style='text-decoration:none' href='http://tinfo.linkstore.ru?u="+entry.from_user+"' target='_blank'><img src='"+entry.profile_image_url+"' style='float:left;padding-right:7px' border='0' width='48' height='48'/></a>"; 
           var geo = isGeoCoded(entry);

           sText += proceedText(entry.text);

           if (geo)
              sText+="&nbsp; <a href='http://bigmap.linkstore.ru?lat="
                    +getLatitude(entry)
                    +"&lng="
                    +getLongitude(entry)
                    +"&zml=10" 
                    +"&mrk=1"  
                    +"' target='_blank' style='text-decoration:none' title='Show map'>"
                    +"<img alt='' width='16' height='16' border='' src='/yat/map.jpg'/></a>";


           sText += "<br/>";
          
           sText+="<span style='font-size:80%;color:#555555'>";

           if (geo)
             sText+="<a title='show map' href='http://bigmap.linkstore.ru?lat="+getLatitude(entry)+"&lng="+getLongitude(entry)+"&mrk=1' target='_blank'>";

           sText+=dateDiff(new Date(entry.created_at), new Date());

           if (geo)
             sText+="</a>&nbsp; ";
 
          if (entry.from_user) 
             sText+=" by <a href='http://tinfo.linkstore.ru?u="+entry.from_user+"' target='_blank'>"+entry.from_user+"</a>";

           sText+="&nbsp;";
           sText+=" <a href='http://twitter.com/home?status=@"+entry.from_user+"&in_reply_to_status_id="+entry.id_str+"&in_reply_to="+entry.from_user
            +"' target='_blank' title='Reply to '"+entry.from_user+"'>Reply</a> "; 
           sText+="&nbsp;";
           sText+=" <a href='http://twitter.com/"+entry.from_user+"/statuses/"+entry.id_str
                 +"' target='_blank' title='Show tweet'>View tweet</a>";

           if (entry.text.indexOf("@")==0)
             sText+="&nbsp; "+"<a style='text-decoration:none' title='Conversation' target='_blank' href='http://tdialog.linkstore.ru?"+entry.id_str+"' target='_blank'><img alt='' border='0' src='/yat/thread.png'/></a>&nbsp; ";

           sText+="</span><br/><br/><br/>";

           return sText;
    }

    function proceedText(text)
    {
        var tweet = text;
        var re = new RegExp("(([a-zA-Z]+:\/\/)([a-zA-Z][a-zA-Z0-9_\.-]*[a-zA-Z]{2,6})([a-zA-Z0-9~\#\/\._\?\&%-=]*[a-zA-Z0-9~\#\/_\?\&%-=]))", "g");
        tweet = tweet.replace(re, '<a style="' + 'text-decoration:none;" target="_new" href=$1 >$1</a>');
        
        re = new RegExp("@([a-zA-Z0-9_]+)", "g");
	tweet = tweet.replace(re, '@<a style="' + 'text-decoration:none;" target="_new" href=http://tinfo.linkstore.ru?u=$1>$1</a>');

        re = new RegExp("#([a-zA-Z0-9_]+)", "g");
	tweet = tweet.replace(re, '<a style="' + 'text-decoration:none;" href=http://got.linkstore.ru?q=%23$1>#$1</a>');

        tweet = tweet.replace(/&/g, '&');

        re = new RegExp("(http://twitpic.com/)([0-9a-zA-Z]*)");
	var m = re.exec(tweet);
	if  (!m || m.length == 0 || m[2] == "photos" || m[2] == "photo" || m[2] == "tag") {} 
	else {tweet = tweet+'<br/>' + '<center><a href="http://twitpic.com/' + m[2] + '" target="_blank"><img src="http://twitpic.com/show/thumb/' + m[2] + '" border=0 height=150 width=150></a></center>';}	

        re = new RegExp("(http://yfrog.com/)([0-9a-zA-Z]*)");
	var m = re.exec(tweet);
	if  (!m || m.length == 0) {} 
	else {tweet = tweet +'<br/>' + '<center><a href="http://yfrog.com/' + m[2] + '" target="_blank"><img src="http://yfrog.com/' + m[2] + '.th.jpg" border=0 height=150 width=150></a></center>';}	

        re = new RegExp("(http://img.ly/)([0-9a-zA-Z]*)");
     	m = re.exec(tweet);
  	if  (!m || m.length == 0) {} 
 	else {tweet = tweet+ '<br/>'+'<center><a href="http://img.ly/' + m[2] + '"><img src="http://img.ly/show/thumb/'+m[2]+'" border="0" style="height:150;width:150;"></a></center>'}	

        re = new RegExp("(http://tweetphoto.com/)([0-9a-zA-Z]*)");
   	var m = re.exec(tweet);
  	if  (!m || m.length == 0) {} 
 	else {tweet = tweet +'<br/>' + '<center><a href="http://tweetphoto.com/' + m[2] + '" target="_blank"><img src="http://TweetPhotoAPI.com/api/TPAPI.svc/imagefromurl?size=medium&url=http://tweetphoto.com/' + m[2] + '" border=0 height=150 width=150></a></center>';}	

        re = new RegExp("(http://plixi.com/p/)([0-9a-zA-Z]*)");
     	m = re.exec(tweet);
  	if  (!m || m.length == 0) {} 
 	else {tweet += '<br/><center><a href="http://plixi.com/p/' + m[2] + '" target="_blank"><img src="http://api.plixi.com/api/tpapi.svc/imagefromurl?size=medium&url=http://plixi.com/p/' + m[2] + '" border=0 height=150 width=150></a></center>';}	        

        re = new RegExp("(http://farm)([0-9])(.static.flickr.com/)([0-9a-zA-Z_\.\/]*)");
     	m = re.exec(tweet);
  	if  (!m || m.length == 0) {} 
 	else {tweet += '<br/><center><a href="'+m[0]+'" target="_blank"><img src="'+m[0]+ '" border=0 height=150 width=150></a></center>'; return tweet;}	        

        re = new RegExp("(http://twitrpix.com/)([0-9a-zA-Z]*)");
	m = re.exec(tweet);
	if  (!m || m.length == 0) {} 
	else {tweet += '<br/><center><a href="http://twitrpix.com/' + m[2] + '" target="_blank"><img src="http://img.twitrpix.com/thumb/' + m[2] + '" border=0 height=150 width=150></a></center>'; }	

        re = new RegExp("(http://moby.to/)([0-9a-zA-Z]*)");
	m = re.exec(tweet);
	if  (!m || m.length == 0) {} 
	else {tweet += '<br/><center><a href="http://moby.to/' + m[2] + '" target="_blank"><img src="http://moby.to/' + m[2] + ':medium" border=0 height=150 width=150></a></center>'; }	

        re = new RegExp("(http://twitsnaps.com/)([0-9a-zA-Z]*)");
	m = re.exec(tweet);
	if  (!m || m.length == 0) {} 
	else {tweet += '<br/><center><a href="http://twitsnaps.com/' + m[2] + '" target="_blank"><img src="http://twitsnaps.com/thumb/' + m[2] + '" border=0 height=150 width=150></a></center>'; }	

        re = new RegExp("(http://twitgoo.com/)([0-9a-zA-Z]*)");
	m = re.exec(tweet);
	if  (!m || m.length == 0) {} 
	else {tweet += '<br/><center><a href="http://twitgoo.com/' + m[2] + '" target="_blank"><img src="http://twitgoo.com/' + m[2] + '/thumb" border=0 height=150 width=150></a></center>'; }	

        re = new RegExp("(http://instagr.am/p/)([0-9a-zA-Z_\-]*)/");
	m = re.exec(tweet);
	if  (!m || m.length == 0) {} 
	else {tweet += '<br/><center><a href="http://instagr.am/p/'+m[2] +  '/" target="_blank"><img src="http://instagr.am/p/' + m[2] + '/media?size=t" border=0 height=150 width=150></a></center>'; return tweet;}	


        return tweet;
    }
    
   
   function dateDiff(d1, d2)
   {
     var diff  = new Date();

     diff.setTime(Math.abs(d1.getTime() - d2.getTime()));

     var timediff = diff.getTime();

     var weeks = Math.floor(timediff / (1000 * 60 * 60 * 24 * 7));
     timediff -= weeks * (1000 * 60 * 60 * 24 * 7);

     var days = Math.floor(timediff / (1000 * 60 * 60 * 24)); 
     timediff -= days * (1000 * 60 * 60 * 24);

     var hours = Math.floor(timediff / (1000 * 60 * 60)); 
     timediff -= hours * (1000 * 60 * 60);

     var mins = Math.floor(timediff / (1000 * 60)); 
     timediff -= mins * (1000 * 60);

     var secs = Math.floor(timediff / 1000); 
     timediff -= secs * 1000;

     var ans ="";
     if (weeks!=0) ans+=weeks+" weeks ";

     if (days!=0)  ans+=days+" days ";

     if (hours!=0) ans+=hours+" hours ";
     else
     {
       if (mins!=0)  ans+=mins+" mins ";   
       else
          ans += secs +" secs "    
     }

     return ans+"ago";
   }

   function getName(s)
   {
     var i = s.indexOf(" ");
     if (i>0) return s.substring(0,i); 
     else     return s;
   }

   function search()
   {
      var s = document.forms['mf'].q.value;

      if (s!='')
      {
        s= encodeURIComponent(s);
        
        errorCount=0;
        errorCount1=0;
        searchYandex(s);
        searchTwitter(s);

        writeShare(s);
      } 

      return false;
   }

  function getDomain(url)
  {
    var s = url;

    if (s.indexOf("http://")==0)
      s=s.substring(7);

    if (s.indexOf("https://")==0)
      s=s.substring(8);

    var i=s.indexOf("/");
    
    if (i>0) s = s.substring(0,i);
  
    i=s.indexOf("?");
    if (i>0) s = s.substring(0,i);

    i = s.indexOf(";");
    if (i>0) s = s.substring(0,i);

    return s;    
  }

  function pauseComp(millis)
  {
   var date = new Date();
   var curDate = null;

   do { curDate = new Date(); }
   while(curDate-date < millis);
  } 
 
  function getTwitter(query)
  {
      var cbscript = document.createElement("script");
      cbscript.src = query;
      cbscript.type = 'text/javascript';
      document.body.appendChild(cbscript);
  }

 function writeShare(query)
   {
     var twitter_link="http://search.twitter.com/search?q="+query;
     var yandex_link = "http://blogsearch.yandex.ru/search.xml?ft=all&holdres=mark&text="+query;
     var this_link=encodeURIComponent("http://yat.linkstore.ru?q=")+encodeURIComponent(query);
     var photo_link="http://twpic.linkstore.ru?q="+query;

     
     var subjectLine='Take a look at this search'; 
     var bodyText='See: '+this_link;

     var message_link = 'mailto:?subject='+escape(subjectLine)+'&body='+bodyText;
     
     var face_link = 'http://www.facebook.com/sharer.php?u='+this_link+'&t='+encodeURIComponent(subjectLine);
     
     var s = "<strong>More:</strong> &nbsp; <a href='"+yandex_link+"' title='Yandex search' target='_blank'>Yandex</a> | "
           + "<a href='"+twitter_link+"' title='Twitter search' target='_blank'>Twitter</a> | " 
           + "<a href='"+photo_link+"' title='Images for Twitter search' target='_blank'>Photos</a> &nbsp; &nbsp; <strong>Share:</strong> &nbsp; " 
           + "<a href='"+message_link+"' title='Share via email' target='_blank'>email</a> | "
	   + "<a href='"+face_link+"' title='Share via facebook' target='_blank'>facebook</a> | "
	   + "<a href='http://twitter.com/home?status="+this_link+"' target='_blank'>twit this</a>";

     s="<center><table border='0'><tr><td valing='top'>"+s+"</td>"
      +"</tr></table></center>";

     document.getElementById('share').innerHTML = s;
   }

function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}

function load(yql,cb)
{   
    var src = 'http://query.yahooapis.com/v1/public/yql?q='+
               encodeURIComponent(yql) + '&format=json&callback=' + cb + '&'+
              'env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys';
    var head = document.getElementsByTagName('head')[0];
    var s = document.createElement('script');
    s.setAttribute('id','yqlgeodata');
    s.setAttribute('src',src);
    head.appendChild(s);
}

function isGeoCoded(entry)
  {
    if (entry.geo) return true;
    if (!entry.place) return false;
    if (!entry.place.bounding_box) return false;

    return true;  
  }

  function getLatitude(entry)
  {
    if (entry.geo) 
    {     
      return entry.geo.coordinates[0];
    }
    else
    {  
      var box = entry.place.bounding_box.coordinates;
      var point0 = box[0][0];

      return point0[1];
    }
  }

  function getLongitude(entry)
  {
    if (entry.geo) 
      return entry.geo.coordinates[1];
    else
    {  
      var box = entry.place.bounding_box.coordinates;
      var point0 = box[0][0];

      return point0[0];
    }
  }

