﻿/*
Especificar Cabecera+Cuerpo

>CABECERA#CUERPO

Mensajes mas largos de 140c

>CABECERA#CUERPO_

>_CABECERA#CUERPO

Especificar enlaces

   [URL]

Especificar intersticial
>i:[URL]

Especificar rotators
>r:[URL]|ORD_
>[URL]|ORD
...
>[URL]|ORD

Especificar banner inferior

>b:[URL]|WIDTH|HEIGHT

Ocultar todas las notificaciones

>QUIT
*/

CmdParse=function(json)
{
    this.Tweets=new Array();
    var i=0;
  
    while(json[i].text.indexOf("QUIT")==-1 && i<json.length){
        // alert(json[i].text.replace(/&gt;/g,'>'));
         this.Tweets[i]=json[i].text.replace(/&gt;/g,'>');
         i++;
    }       
};


CmdParse.prototype.constructor=CmdParse;

CmdParse.prototype.Parse=function()
{   
    var bAgrupa=false;
    var resultado=new Array();
    var cabecera="";
    var acum="";
    var j=0;
   
    for(var i=this.Tweets.length-1;i>=0;i--)
    {
        var tw=this.Tweets[i];       
        //Comprobamos que sea un comando
        if(tw.charAt(0)=='>'){
            //Comprobamos la longitud del comando
            if(tw.charAt(tw.length-1)=='_'){
                  bAgrupa=true;
            }else{
                  bAgrupa=false;                
            } 
            //Comprobamos el tipo del mensaje
            if(tw.indexOf('#')!=-1) //Tipo notificación
            {
                var obj={};
             
                if(bAgrupa){
                    cabecera=(tw.split('#')[0].replace(/>/g,'')=="")?cabecera:tw.split('#')[0].replace(/>/g,'');
                    var cuerpo=tw.split('#')[1];
                    if(cabecera=="")
                        acum+=tw.replace(/>|_/g,'');
                    else
                        acum+=(' '+cuerpo.replace(/_/g,''));
                }
                else{
                    obj['title']=(cabecera=="")?tw.split('#')[0].replace(/>/g,''):cabecera;
                    obj['body']=(acum=="")?tw.split('#')[1]:acum+' '+tw.split('#')[1];
                    obj['body']=this.ProcesaLink(obj['body']);
                    obj['Type']='n';      
                    resultado[j]=obj;
                    j++;
                    acum="";
                    cabecera="";
                }
               // alert("Tipo notificacion "+acum);                                 
            }
            else if(tw.charAt(1)=='b' && tw.charAt(2)==':') //Tipo banner
            {
           
                var obj=this.ProcesaDobleLink(tw);
                obj['Type']='b';       
                resultado[j]=obj;
                j++;
            }
            else if(tw.charAt(1)=='i' && tw.charAt(2)==':') //Tipo intersticial
            {  
              //  alert("Tipo Intersticial");
                var obj=this.ProcesaDobleLink(tw);
                obj['Type']='i';       
                resultado[j]=obj;
                j++;
            }
            else if(tw.charAt(1)=='r' && tw.charAt(2)==':') //Tipo rotator
            {
           
            }
        }
    }
    return resultado;
}

CmdParse.prototype.ProcesaLink=function(data)
{      
    if(/\{(.)+\*(.)+}/.test(data)){               
        var strLnk=/\{(.)+\*(.)+}/.exec(data)[0];                
        var arrLink=strLnk.replace(/\{|\}/g,'').split('*');       
        data=data.replace(strLnk,'<a href=\"'+arrLink[1]+'\" style=\"color:white;text-decoration:underline;\" >'+arrLink[0]+'</a>');               
    }
    return data;
}

CmdParse.prototype.ProcesaDobleLink=function(data)
{   
    var obj={};           
    var arrLink=data.replace(/>(b|i):/,'').split('*');       
    var arrGraph=arrLink[0].split("|");
    obj['Graphic']=arrGraph[0];
    if(arrGraph.length>1){
        obj['Width']=arrGraph[1];
        obj['Height']=arrGraph[2];
    }
    obj['Link']=arrLink[1];
   
    return obj;    
}