/** 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      = 'casual';


    this . init = function(opt)
    {
        if(opt.partner != "undefined" && opt.partner !=0  && $.trim(opt.partner) != "")
          {
               partner       = opt.partner;
          }

          if(opt.gametype != "undefined" && opt.gametype !=0  && $.trim(opt.gametype) != "")
          {
               gametype      = opt.gametype;
          }
         // initfile      = opt.initfile;
         // rtview_period = opt.rtview_period;
          //rtview_ts     = opt.rtview_ts-(rtview_period*2);

          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() + "&gametype=" + gametype,
          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 = "";

        // Обработка рейтинга
        var rating1="";
        var rating2="";
        var rating3="";
        var rating4="";
        var rating5="";

        // Обработка ссылок для различного типа контента
        var gameBtn = "";
        var onclick = "";
        var gnew    = "";

        // Link to download
        var glink = "/";
        var glinkd = "";
        var rlink = "/";
        switch(arr[item]['type'])
        {
            case 'casual':
                gameBtn = 'btnDownload2.png';
                glink = "/"+arr[item]['type']+"/" + arr[item]['ralias'] + "/" + arr[item]['galias'] + ".html";
                glinkd = "?download";
                rlink = "/"+arr[item]['type']+"/" + arr[item]['ralias'] + "/";
                onclick = 'onclick="javascript: if (!window.opera) OpenFile(\'/content/casual/'+arr[item]['content_id']+
                          '/'+arr[item]['fname']+'\',10,10); mark_download(this.href, '+arr[item]['content_id']+'); pageTracker._trackPageview(\'/casual/download\'); return false;"';
                break;

            case 'mobile':
                glink = "/"+arr[item]['type']+"/" + arr[item]['ralias'] + "/" + arr[item]['galias'] + ".html";
                rlink = "/"+arr[item]['type']+"/" + arr[item]['ralias'] + "/";
                gameBtn = 'btnMobile2.png';
                break;

            case 'flash':
                glink = "javascript:void(0);";
                rlink = "/"+arr[item]['type']+"/" + arr[item]['ralias'] + "/";
                onclick = 'onclick="showPlay('+arr[item]['content_id']+');"';
                gameBtn = 'btnGaming2.png';
                break;

            case 'online':
                glink = '/redirect/?id='+arr[item]['content_id'];
                rlink = "/"+arr[item]['type']+"/" + arr[item]['ralias'] + "/";
                gameBtn = 'btnGaming2.png';
                break;

            default:
                gameBtn = 'btnGaming2.png';
                break;
        }

        /**
         * Обложка для игрушки
         */

        if(!arr[item]['src'] || arr[item]['src'] =='undefined')
        {
            arr[item]['src'] = '/content/imgs/blank.gif';
        }

        var p ="";
        if(partner != "")
        {
            p = "/?"+partner;
        }

        if(arr[item]['opname'] !="" && arr[item]['opname'] !="_" )
        {
            to ='абоненту &laquo;'+ arr[item]['opname'] + '&raquo;,<br> ';
        }

        if(arr[item]['new']==1)
        {
            gnew = '<i></i>';
        }


        arr[item]['rating'] == 1?rating1="cur":false;
        arr[item]['rating'] == 2?rating2="cur":false;
        arr[item]['rating'] == 3?rating3="cur":false;
        arr[item]['rating'] == 4?rating4="cur":false;
        arr[item]['rating'] == 5?rating5="cur":false;

        var out = '<div class="item game obj">'+
					  '<div class="gameImage">'+gnew+
						'<a href="'+glink+'" '+onclick+'><img height="100" width="100" alt="'+arr[item]['name']+'" src="'+arr[item]['src']+'" title="'+arr[item]['name']+'" /></a>'+
					  '</div>'+
					  '<div class="gameDesc">'+
						'<h3><a href="'+glink+'">'+arr[item]['name']+'</a></h3>'+
						'<div class="gameRate">'+
							'<ul class="rate">'+
								'<li class="one '+rating1+'">1</li>'+
								'<li class="two '+rating2+'">2</li>'+
								'<li class="three '+rating3+'">3</li>'+
								'<li class="four '+rating4+'">4</li>'+
								'<li class="five '+rating5+'">5</li>'+
							'</ul>'+
						'</div>'+
						'<p>Жанр: <a href="'+rlink+'">'+arr[item]['rname']+'</a></p>'+
                        '<p class="btn"><a href="'+glink+glinkd+'" '+onclick+'><img src="/images/'+gameBtn+'" /></a></p>'+
					  '</div>'+
                    '</div>';
        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();