/** 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"
 */
function rtview()
{
    var timelimit     = 4500;           // задержка появления нового блока кардсов
    var rndcoef       = 6000;           // задержка появления войскардсов внутри блока
    var srv_timeout   = 6000;           // задержка перед повторным запросом на сервер
    var div_block     = "#rt_cnt";      // блок, куда выводится результат
    var obj           = "obj";          // блок, который служет контейнером для каждого из подгружаемых элементов
    var arr           = new Array();

    var partner       = "";             // Имя партнера
    var url           = "/rtv/";        // URL каталога
    var initfile      = "rtstart.php";  // Файл, c которого стартуем

    var id     	      = 0;              // Время старта
    var rtview_period = 0;              // Интервалs
    var gameType      = '';


    this . init = function(opt)
    {
          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(),
          error  : function (XMLHttpRequest, textStatus, errorThrown)
                   {
                       if(XMLHttpRequest.status == 404 || XMLHttpRequest.status == 200)
                       {
                           setTimeout('rt.getInfo(2)',srv_timeout);
                           return false;
                       }
                   },
          success: this.onGetInfo
        });
    }



  /**
   * parse incomming data
   */
   this.onGetInfo = function(data)
   {
        // Старая версия с использованием JSON
        var data_decoded = $.parseJSON(data);
        //var data_decoded = rt.parseData(data);
        var out = '';
        arr = new Array();

      //  pr(data_decoded);


        for (var i in data_decoded)
        {
            arr[i] = new Array();
            arr[i] = data_decoded[i];
    	    if(id*1 < data_decoded[i]['id']*1)
    	    {
    		      id = data_decoded[i]['id'];
        	}
    	}

        if(arr.length == 0 || $.trim(data)=="")
        {
	        setTimeout('rt.getInfo(2)',srv_timeout);
        }
        else
        {
            for (var i=arr.length-1; i>-1;i--)
            {
 	          /**
               *  creating output
               */
                try
                {
		            rt.arr = arr;
                    out += rt . printitem(i);
                }
                catch(e){}
            }
            $(div_block).prepend(out);
            $(function() { $(".live").live();});

           /**
            * next
            */
            try
            {
                rt.parseRt(0);
            }catch(e){}
        }
     	return false;
    }



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




   /**
    *  print card-item
    */
    this . printitem=function(item)
    {
        var to = "";

        if(arr[item]['opname'] !="" && arr[item]['opname'] !="_" )
            to = 'абоненту &laquo;' + arr[item]['opname'] + '&raquo;, ' + arr[item]['rname'];
        try
        {
            var ref = partnerHref;
        } catch (e) {
            var ref = '';
        }
        /*'+arr[item]['url']+ref+'*/
        var out = '<li class="item obj">		'+
					    '<div class="b-sms">'+
							'<div class="cover"><a href=""><img src="/images/pic_cover.png" alt="" /></a></div>'+
							'<div class="sms_info">'+
								'<h4><a href="">'+arr[item]['name']+'</a></h4>'+
								'<p class="time">Отправлено в '+arr[item]['date_in']+'</p>'+
								'<p class="place">'+to+'</span></p>'+
							'</div>'+
						'</div>'+
					'</li>';
        return out;
    }


this.parseRt = function(item)
    {
       var index = 0;
       var tmp_arr = new Array();
       var isIE = (document.compatMode && document.all);

    //   if(isIE)
    //   {
    //    	var arl = 4;
    //   }
    //   else
    //   {
            var arl = 5;
    //   }


       /**
        * count obj items
        */
       $("." + obj).each(
          function(i)
          {
              tmp_arr[i] = i;
          }
       );

       /**
        *  get new part wich elements
        */

       if(tmp_arr.length <= arl)
       {
           rt.getInfo(2);
    	   $(div_block).css('bottom',0);
    	   $.rtnext2();
           $("." + obj + ":last").remove();
           return false;
       }
       $(div_block).css('bottom',0);
       $("." + obj + ":last").remove();
       //$(div_block).css('bottom',0);
       $.rtnext2();
       item++;

       var cnt = item % 3;
       if(cnt == 0)
       {
          setTimeout("rt.parseRt("+ item +")", timelimit);
       }
       else
       {
          setTimeout("rt.parseRt("+ item +")", this.get_random());
       }
       return false;
   }



   /**
    *  rtview parser
    *  pattern:   text|text|text\n
    *             text|text|text\n
    */
   this.parseData = function(data)
   {
       var arr = new Array();
 	   // debug from trash
       data = $.trim(data);
       var dataArr = data.split(/[\n]/g);
       for (var i in dataArr)
       {

    	dataArr[i] =  dataArr[i].replace('||','|_|');
	        arr[i] =  dataArr[i].split(/[|]/g);

       }
       return arr;
   }
}
var rt = new rtview();
