/*  
 * Project: QShout - Shoutbox Widget for jQuery
 * Version: v1.0 (03/01/‎2010, ‏‎12:02:23 PM)
 * URL    : http://qshout.borisding.com
 * License: MIT  (http://www.opensource.org/licenses/mit-license.php)
 *          Copyright (c) 2010, Boris Ding P H
 */
	  var user = "";
(function($){
      //public QShout
      $.QShout = function( uSettings ){  
      //default settings    
       settings = {
        //misc.
        qsId        : "qsId",
        serverPage  : "qshout2.php",
        loader      : "Cargando...*",
        timer       : 60000,
        maxRow      : 14,
        //shoutbox's body
        bwidth      : "220px",
        bheight     : "434px",
        bBorderWidth: "1px",
        bBorderStyle: "solid",
        bBorderColor: "#000000",
        bFontSize   : "11px",
        bFontFamily : "Verdana, Calibri, Arial",
		blinkColor  : "#8c0000",
        //shoutbox's content
        evenRowColor: "#171717",
        oddRowColor : "#333333",
        rowPadding  : "4px",
        ipCursor    : "help",
        dUrlColor   : "#888888",
        //shoutbox's footer
        fFieldHight : "auto",
        fFieldSize  : 20,
        fFontSize   : "11px",
        fBorderWidth: "1px",
        fBorderStyle: "solid",
        fBorderColor: "#000000",
        fBgColor    : "#333333",
        MioTraGus	: "",
        MioTraGus_perso: "0",
        MioTraGus_oyente	: "",
        MioTraGus_pos: "0",
		MioTraGus_time: "97531",
        MioTraGus_rand: "0",
        vip: "0"      
       };
      //merge/overwrite with user's settings
       settings = ( uSettings )? $.extend( settings, uSettings )
                               : settings;

      if( settings.qsId ){
      //init shoutbox
        $.QShout.init();
      }     
   };

   $.QShout = $.extend( $.QShout, {
      //load html content
      init: function(){
      //qShout's html  
 		if (settings.MioTraGus_pos >= 1){  
      var qShoutHtml = "<table cellpadding='0'>" +
                       "<tr><td>"                +
                       "<div id='chat_cab'><div id='dentro'>Mini Chat - Radiostar <div class='chat_mas'><a href='macrochat.php'><img src='../imagenes/mas.png' alt='Macrochat' title='Entra al Macrochat' /></a></div></div></div>" +
                       //shoutbox's content
                       "<div id='qShout'></div>" +
                       "</td></tr>"              +
                       //shoutbox's footer
                       "<tr><td>"                +
                       "<div id='qFooter'>"      +
                       "<table>" +
                       "<tr><td>"                +
                       "<label>Nombre: </label>"   +
                       "</td><td>"               +
                       "<input type='text' value='"+settings.MioTraGus_oyente+"' id='qName' maxlength='30' disabled='disabled'>" +
                       "</td></tr>"              +
                       "<tr><td>"                +
                       "<label>Mensaje: </label>"+
                       "</td><td>"               +
                       "<input type='text' id='qMessage' maxlength='250' onClick=\"this.value=''\">" +
                       "</td></tr>"              +
                       "<tr><td></td>"           +
                       "<td><input type='button' value='Enviar' onClick='$.QShout.validatePost();' id='qPostBtn'> "+
                       "<a href='javascript:void(0);' onClick='$.QShout.init();'>Refrescar</a>"+
                       "</td></tr>" +
                       "</table>"   +
                       "</div>"     +
                       "</div>"     +
                       "</td></tr>" +
                       "</table>";
                       }
                       else{
      var qShoutHtml = "<table cellpadding='0'>" +
                       "<tr><td>"                +
                       "<div id='chat_cab'><div id='dentro'>Mini Chat - Radiostar <div class='chat_mas'><a href='macrochat.php'><img src='../imagenes/mas.png' alt='Macrochat' title='Entra al Macrochat' /></a></div></div></div>" +
                       //shoutbox's content
                       "<div id='qShout'></div>" +
                       "</td></tr>"              +
                       //shoutbox's footer
                       "<tr><td>"                +
                       "<div id='qFooter'>"      +
                       "<table>" +
                       "<tr><td>"                +
                       "<label>Nombre: </label>"   +
                       "</td><td>"               +
                       "<input type='text' id='qName' maxlength='30'>" +
                       "</td></tr>"              +
                       "<tr><td>"                +
                       "<label>Mensaje: </label>"+
                       "</td><td>"               +
                       "<input type='text' id='qMessage' maxlength='250' onClick=\"this.value=''\">" +
                       "</td></tr>"              +
                       "<tr><td></td>"           +
                       "<td><input type='button' value='Enviar' onClick='$.QShout.validatePost();' id='qPostBtn'> "+
                       "<a href='javascript:void(0);' onClick='$.QShout.init();'>Refrescar</a>"+
                       "</td></tr>" +
                       "</table>"   +
                       "</div>"     +
                       "</div>"     +
                       "</td></tr>" +
                       "</table>";                       	
                       }

      $("#" + settings.qsId ).html( qShoutHtml )                       
                              .each(function(){
     
             $(this).find("#qFooter table").css({
               'border-style'    : settings.fBorderStyle,
               'border-width'    : settings.fBorderWidth,
               'border-color'    : settings.fBorderColor,
               'width'           : '100%',
               'background-color': settings.fBgColor,
               'font-size'       : settings.fFontSize,
               'overflow' 		 : 'hidden'
              });
              $(this).find("#chat_cab").css({
               'border'    		 : 'solid 1px #000000',
               'width'           : '220px',
               'height'			 : '20px',
               'padding-top'	 : '0px',
               'margin'       	 : '0px',
               'overflow' 		 : 'hidden'
              });
              $(this).find("#dentro").css({
               'border'    		 : 'solid 1px #000000',
               'width'           : '218px',
               'height'			 : '16px',
               'padding-top'	 : '0px',
               'background-color': '#8c0000',
               'margin'       	 : '1px',
               'overflow' 		 : 'hidden'
              });              

          $(this).find("#qShout").html( settings.loader )
                                 .each(function(){
               $(this).css({
               'border-style': settings.bBorderStyle,
               'border-width': settings.bBorderWidth,
               'border-color': settings.bBorderColor,
               'height'      : settings.bheight,
               'width'       : settings.bwidth,
               'text-align'	: 'left',
               'overflow'    : 'hidden'
               });
          });
       });

       //style footer's form
       this.styleFooterEle();

       //get content of shout box
        setTimeout( function(){
         $.QShout.loadContent();
        }, 300 );
      },
     
      styleFooterEle: function(){
       var inputs = $("#qFooter: input");

      //iterate to check each element type
        inputs.each(function() {
          var currentEleType = this.type;
          switch(currentEleType){
           case "text":
            $(this).css({
             'border-width' : settings.fBorderWidth,
             'border-style' : settings.fBorderStyle,
             'border-color' : settings.fBorderColor,
             'font-size'    : settings.fFontSize,
             'height'       : settings.fFieldHeight
            });
            //set the size of textfield
            this.size = settings.fFieldSize;
            break;
            case "button":
             $(this).css({
              'font-size': settings.fFontSize,
              'height'   : settings.fFieldHeight
             });
              break;
          }//end switch
        });
      },

      loadContent: function( action ){
       var act = {load: "load"};
       if( action ) { act = $.extend( act, action ) };

       var maxRow = ( settings.maxRow < 0 ) ? 30 
	                                    : settings.maxRow;
											
       var param = "maxRow="+ maxRow +"&action=get&code=" + settings.MioTraGus + "&ext=" + settings.MioTraGus_perso;
       var url   = settings.serverPage + "?" + param;
       $.getJSON(url,
        function( data ){
         var arrayMessage = data.chat.message;         
         var content = "<ul style='margin:0; padding:0px; list-style: none;'>";
          $.each( arrayMessage, function(i){
                    if (arrayMessage[i].vip == 1){
                        var vip = " <a title='Usuario VIP en Delux Radio Star' id='qBv'>&#8483;</a> "; 
                    }else{
                        var vip = "";
                    } 
      				if (arrayMessage[i].val == 0){
				        arrayMessage[i].text = "--><a href='autentificacion.php'>Identif&iacute;cate</a><-- "+ arrayMessage[i].text
      					var usuario = "<font color=\"red\">" + arrayMessage[i].user + "</font>";
      				}else if (arrayMessage[i].djperm == 1 && arrayMessage[i].val <= 4){
      					var usuario = "<img src = \"/avatares/Mini/"+ arrayMessage[i].icono +"\" /> <font color=\"orange\">" + arrayMessage[i].user + "</font>";
      				}else if (arrayMessage[i].djperm == 1 && arrayMessage[i].val >= 5 && arrayMessage[i].val <= 7){
      					var usuario = "<img src = \"/avatares/Mini/"+ arrayMessage[i].icono +"\" /> <font color=\"#a1aff3\">" + arrayMessage[i].user + "</font>";
      				}else if (arrayMessage[i].djperm == 1 && arrayMessage[i].val >= 8){
      					var usuario = "<img src = \"/avatares/Mini/"+ arrayMessage[i].icono +"\" /> <font color=\"#a64cf3\">" + arrayMessage[i].user + "</font>";
      				}else if (arrayMessage[i].val >= 2 && arrayMessage[i].val <= 2){
      					var usuario = "<img src = \"/avatares/Mini/"+ arrayMessage[i].icono +"\" /> <font color=\"#f9c0f8\">" + arrayMessage[i].user + "</font>";
      				}else if (arrayMessage[i].val >= 3 && arrayMessage[i].val <= 3){
      					var usuario = "<img src = \"/avatares/Mini/"+ arrayMessage[i].icono +"\" /> <font color=\"#ff79fd\">" + arrayMessage[i].user + "</font>";
      				}else if (arrayMessage[i].val >= 4 && arrayMessage[i].val <= 4){
      					var usuario = "<img src = \"/avatares/Mini/"+ arrayMessage[i].icono +"\" /> <font color=\"#d6cd66\">" + arrayMessage[i].user + "</font>";
      				}else{
      					var usuario = "<img src = \"/avatares/Mini/"+ arrayMessage[i].icono +"\" /> " + arrayMessage[i].user;
      				} 
          	         if (settings.MioTraGus_pos >= 2 && arrayMessage[i].djperm == 0 && settings.MioTraGus_time == "ODY0MjA="){

           content += "<li>"+
                      "<span>" +
                      usuario +
                      "</span>"+
                      ": "+
                      arrayMessage[i].text +
                      "<div id='dateUrl'>" +
                      arrayMessage[i].time +
                      " "+
                      vip+                      
                      "<a title='Banear a "+ arrayMessage[i].user +"' onClick='$.QShout.validarban(\""+ arrayMessage[i].ip + "\",\"" + arrayMessage[i].user +"\",\"" + arrayMessage[i].user_id +"\");' id='qBn'>&oslash;</a>"+
                      " <a title='IP: "+ arrayMessage[i].ipx +"' id='qIp'>&equiv;</a>"+
                      " <a title='Borrar Mensaje "+ arrayMessage[i].id_b +"' onClick='$.QShout.validarborrado(" + arrayMessage[i].id_b + ");' id='qBr'>x</a>" +
                      "</div>"+
                      "</li>";
          }else if (settings.MioTraGus_pos >= 2 && arrayMessage[i].djperm == 1 && settings.MioTraGus_time == "ODY0MjA="){

           content += "<li>"+
                      "<span>"+
                      usuario +
                      "</span>"+
                      ": "+                     
                      arrayMessage[i].text +
                      "<div id='dateUrl'>" +
                      arrayMessage[i].time +
                      " "+
                      vip+                      
                      "<a title='IP: "+ arrayMessage[i].ipx +"' id='qIp'>&equiv;</a>"+
                      " <a title='Borrar Mensaje "+ arrayMessage[i].id_b +"' onClick='$.QShout.validarborrado(" + arrayMessage[i].id_b + ");' id='qBr'>x</a>" +
                      "</div>"+
                      "</li>";
          }else{
          content += "<li>"+
                      "<span>"+
                      usuario +
                      "</span>"+
                      ": "+
                      arrayMessage[i].text +
                      "<div id='dateUrl'>" +
                      arrayMessage[i].time +
                      " "+
                      vip+
                      "<a title='IP: "+ arrayMessage[i].ipx +"' id='qIp'>&equiv;</a> "+
                      arrayMessage[i].id_b +
                      "</div>"+
                      "</li>";	
          }});
           content += "</ul>";
           
           //manipulate content's css
              $("#qShout").html(content)
                          .each(function(){
                $(this).scrollTop( settings.bheight );

                $(this).find("ul").css({                                           
                  'font-size'  : settings.bFontSize,
                  'font-family': settings.bFontFamily
                });

                $(this).find("ul>li:even").css({
                  'background-color' : settings.evenRowColor,
                  'padding'          : settings.rowPadding
                });

                $(this).find("ul>li:odd").css({
                  'background-color' : settings.oddRowColor,
                  'padding'          : settings.rowPadding
                });

                $(this).find("ul>li a#qIp").css( 'cursor', settings.ipCursor );
                $(this).find("ul>li a#qId").css( 'cursor', settings.ipCursor );
                $(this).find("ul>li a#qBr").css( 'cursor', settings.ipCursor ); 
                $(this).find("ul>li a#qBn").css( 'cursor', settings.ipCursor );
                $(this).find("ul>li a#qBv").css({ 'cursor': settings.ipCursor, 'color': '#a1aff3'});                 				               
                $(this).find("ul>li div").css({
                  'text-align': 'right',
                  'color': settings.dUrlColor
                });

                $(this).find("ul>li span").css({
                  'color': 'green',
                  'font-weight': 'bold'
                });

                $(this).find("ul>li span a").css({
                  'color': '#333',
                  'font-weight': 'bold'});                 

              //apply animation for newly added
               if( act.load === "inserted" ){
                 var oriColor = $(this).find("ul>li:first").css('background-color');
                 $(this).find("ul>li:first").css('background-color', settings.blinkColor);
                    $(this).find("ul>li:first").animate({
                      opacity: 0.4
                      },'slow',function(){
                       $(this).css({
                         'background-color': oriColor,
                         'opacity': 1
                     });
                    });
                   }
              });

          //reload the content after interval time
          setTimeout( function(){
			settings.timer = ( settings.timer < 0 )? 60000
			                                       : settings.timer;
              $.QShout.loadContent();
          }, settings.timer );
        });
      },
      //inputs validation
      validatePost: function(){
       var name    = $("#qName").val();
       var message = $("#qMessage").val();

       if( name == "" || name == null ){
         alert("No has introducido tu nombre");
         $("#qName").focus();
         return false;
       }
       if( message == "" || message == null ){
         alert("El mensaje está vacío");
         $("#qMessage").focus();
         return false;
       }
       this.postShout();
      },
      //Afirmacion borrado
      validarborrado: function(aut){
         if (confirm("El mensaje "+ aut +" va ha ser borrado, utiliza esta función con precaución")){
//         $("#qName").focus();
       	this.postBorrado(aut);
        }else{
          alert('El mensaje no va a ser borrado');  
        }
      }, 
      //Afirmacion baneo
      validarban: function(autb,autc,auti){
         if (confirm("El usuario "+ autc +" ("+ auti +") con la IP: "+ autb +" va ha ser baneado, utiliza esta función con precaución")){
//         $("#qName").focus();
       	this.postBaneado(autb,autc,auti);
        }else{
          alert("El usuario "+ autc +" no va a ser baneado por el momento");  
        }
      },	       
     //post inputs
     postShout: function(){
     	if (settings.MioTraGus_pos >= 1){
       var user    = this.encURI( $("#qName").val() );
       }else{
       var user    = this.encURI( "Visitante - " + $("#qName").val() );       	
       }
       var url     = this.encURI( $("#qUrl").val() );
       var message = this.encURI( $("#qMessage").val() );
       //disable post button
       $("#qPostBtn").attr("disabled", true);

      var inputs = "user=" + user + "&url=" + url + "&message=" + message + "&action=send&ext=" + settings.MioTraGus_perso + "&hash=" + settings.MioTraGus_time + "&rand=" + settings.MioTraGus_rand;
      $.post(settings.serverPage, inputs, function( result ){
        if( result === "done" ){
            clearInterval( settings.timer );
			//load inserted
            $.QShout.loadContent({
              load: "inserted"
            });
            //clear all textfield value
            $("#qFooter: input").each(function(){
             if( this.type === "text" ){
              // this.value = "";
             }else if( this.type === "button" || this.type === "submit" ){
               $(this).attr("disabled", false);
             }
          });
        }
      });
     },
     postBorrado: function(aut){
      var inputs = "action=patada&borrado=" + aut;
      alert("El mensaje "+ aut +" ha sido borrado con exito");
      $.post(settings.serverPage, inputs, function( result ){
        if( result === "done" ){
            clearInterval( settings.timer );
			//load inserted
            $.QShout.loadContent({
              load: "inserted"
            });
        }
      });
     },   
	 
     postBaneado: function(autb,autc,auti){
      var inputs = "action=banear&baneado=" + autb +"&quien=" + autc + "&identifica=" + settings.MioTraGus_rand + "&pos=" + settings.MioTraGus_pos + "&idu=" + auti;
      alert("El usuario "+ autc +" con IP: "+ autb +" ha sido baneado con exito");
      $.post(settings.serverPage, inputs, function( result ){
        if( result === "done" ){
            clearInterval( settings.timer );
			//load inserted
            $.QShout.loadContent({
              load: "inserted"
            });
        }
      });
     }, 	   

    encURI: function( string ){
      return encodeURIComponent(string);
     }
    });

})(jQuery);



