/** v.2.4
 *  This function exercises administration menegment system of real-time viewer
 *  To work this function you should connect library "json.js" for jquery
 *  and apply output tag to variable "div_block"
 */
    var prepared	  = new Array();
    var placemarks    = new Array();

function air()
{
    var timelimit     = 4500;           // задержка появления нового блока кардсов
    var rndcoef       = 6000;           // задержка появления войскардсов внутри блока
    var srv_timeout   = 6000;           // задержка перед повторным запросом на сервер
    var url           = "/rtv/";        // URL каталога
    var initfile      = "rtstart.php";  // Файл, c которого стартуем
    var id     	      = 0;              // Время старта
    var rtview_period = 0;              // Интервалs
    var referal       = '';


    this . init = function(opt)
    {
          this.referal = getUrlVars()['ref'];
          if (this.referal == undefined)
          {
              this.referal = '';
          }
          if(opt.rtview_period != "undefined" && opt.rtview_period !=0  && $.trim(opt.rtview_period) != "")
          {
               srv_timeout   = opt.rtview_period*1000;
          }
          this.getInfo(1);
    }



        this.getInfo = function(p)
    {
        var f = "";
        if(p==1)
        {
            f =url + initfile;
        }
        else
        {
            f =url + initfile;
	    }
     	// Пока колличество битых итераций не превысило лимит - идем вперед
        $.ajax({
          type   : "GET",
          url    : f,
          data   : "ajax=" + p + "&id=" + id+"&ts=" + Math.random() + '&region=ru',
          error  : function (XMLHttpRequest, textStatus, errorThrown)
                   {
                       if(XMLHttpRequest.status == 404 || XMLHttpRequest.status == 200)
                       {
                           setTimeout('onAir.getInfo(2)',srv_timeout);
                           return false;
                       }
                   },
          success: this.onGetInfo
        });
    }



  /**
   * parse incomming data
   */
   this.onGetInfo = function(data)
   {
        var arr = $.parseJSON(data);

        if(arr.length == 0 || $.trim(data)=="")
        {
	        setTimeout('onAir.getInfo(2)',srv_timeout);
        }
        else
        {
            prepared = new Array();
            var index = 0;

        	for(var i in arr)
        	{
        		if(!arr[i].coords)
        			continue;

        		if(arr[i].opname !="" && arr[i].opname !="_" )
                    arr[i].to = 'абоненту &laquo;' + arr[i].opname + '&raquo;, <span>' + arr[i].rname + '</span>';
                else if (arr[i].rname != "")
                    arr[i].to = '<span>' + arr[i].rname + '</span>';

        		prepared[index++] = arr[i];
        	}

            try
            {
                onAir.parseRt(0);
            }catch(e){}
        }
     	return false;
    }



    this . get_random = function()
    {
        var ranNum= Math.floor(Math.random()*rndcoef + 1);
        return ranNum;
    }


    //вывод
    this . parseRt = function(item)
    {

       if(prepared[item - 1])
       {
     	   map.removeOverlay(placemarks[item - 1]);
     	   delete(prepared[item - 1]);
     	   //$('.YMaps-layer').fadeOut('slow');
     	   delete(placemarks[item - 1]);
       }



       if(count(prepared) == 0)
       {
    	   onAir.getInfo(2);
    	   return false;
       }

       if(prepared[item])
       {
           var ref = '';
           if (this.referal == undefined || this.referal == '')
           {
               ref = '';
           }
           else
           {
               ref = '?ref='+this.referal;
           }
    	   //$('#out').html(prepared[item].date_in+' | '+prepared[item].name+' | '+prepared[item].to+' | '+prepared[item].url)
    	   coords = prepared[item].coords.split(' ');
    	   placemarks[item] = new YMaps.Placemark(new YMaps.GeoPoint(coords[0],coords[1]), {style: s} );
    	   placemarks[item].date_in = prepared[item].date_in;
    	   placemarks[item].name    = prepared[item].name;
    	   placemarks[item].to		 = prepared[item].to;
    	   placemarks[item].url     = prepared[item].url;
    	   map.addOverlay(placemarks[item]);
    	   onAirBallon = '<div class="b-card b-card_map">'
    	               + '	<div class="player"><a href="' + prepared[item].url+ ref + '"><img src="/images/player_live.gif" alt="." /></a></div>'
    	               + '	<div class="card-info">'
    	               + '		<p class="theme"><a href="' + prepared[item].url+ ref + '">' + prepared[item].name + '</a></p>'
    	               + '		<p class="time">Отправлено в ' + prepared[item].date_in + '</p>'
    	               + '		<p class="place">' + prepared[item].to + '</p>'
    	               + '	</div>'
    	               + '</div>'
    	   placemarks[item].openBalloon(onAirBallon);
    	   map.panTo(new YMaps.GeoPoint(coords[0],coords[1]),true);
       }
       item++;
       setTimeout("onAir.parseRt("+ item +")", this.get_random());
       return false;
   }

}
var onAir = new air();

function pr(cont, max_level, curr_level, pref){
    var out=$('#out').get(0);
    if (!curr_level) curr_level=0;
    if (!pref) pref='';
    if (!max_level) max_level=2;

    if (typeof cont=='object'){
    		pref=pref.concat('&nbsp;&nbsp;&nbsp;&nbsp;', pref);
    		//pref=pref.concat(' -> ', pref);
   	 	for (var i in cont){
    			out.innerHTML+=pref+' -> '+i+' : '+cont[i]+"<br>";
    		if (typeof cont[i]=='object' && curr_level<max_level)
    			pr(cont[i], max_level, curr_level, pref);

    	}
    }
    else
    	out.innerHTML+='<br>'+cont;
    out.innerHTML+='-------<br>';
   }

function count(arr)
{
	var length = 0;

	if(arr)
		for (var i in arr)
		{
			if(isInt(i))
				length++;
	//		alert(i + " " + length);
		}

	return length;
}

function isInt(x) {
	   var y=parseInt(x);
	   if (isNaN(y)) return false;
	   return x==y && x.toString()==y.toString();
	 }
