/*  
 * Project: QShout - Shoutbox Widget for jQuery
 * Version: v1.1.8 (28/09/‎2010, ‏‎10:53 AM)
 * URL    : http://qshout.borisding.com
 * License: MIT  (http://www.opensource.org/licenses/mit-license.php)
 *          Copyright (c) 2010, Boris Ding P H
 */

(function($){
      //public QShout
      $.QShout = function( uSettings ){                   
      //default settings    
       settings = {
        //misc.
        qsId        : "qsID",
        serverPage  : "class_qshout.php",
        loader      : "Sukasi varžteliai...",
        timer       : 60000,
        maxRow      : 30,
		admin		: false,
        //shoutbox's body
       };
      //merge/overwrite with user's settings
       settings = ( uSettings )? $.extend( settings, uSettings )
                               : settings;

      if( settings.qsId ){
      //init shoutbox
        $.QShout.init();
      //bind 'Enter' key, code 13 to submit
        $('#qName, #qUrl, #qMessage').keypress(function(e){
          code = e.keyCode ? e.keyCode : e.which;
          if( code.toString() == 13 ){
            $.QShout.validatePost();
          }
        });
      }     
   };

   $.QShout = $.extend( $.QShout, {
      //load html content
      init: function(){
      //qShout's html      
      var qShoutHtml = "<div id='qShout'></div>" +
                       "<div id='qFooter'>"      +
                       "<label for='qName'>Vardas: </label>"   +
                       "<input type='text' placeholder='Auksinis kardas' id='qName' maxlength='30' required>" +
                       "<br /><label for='qMessage' style='vertical-align: top;'>Žinutė: </label>"+
                       "<textarea id='qMessage' placeholder='Lalala' rows='2' required></textarea>" +
                       "<br /><input type='button' value='Rašyti' onClick='$.QShout.validatePost();' id='qPostBtn'> "+
                       "</div>"     +
                       "</div>";

      $("#" + settings.qsId ).html( qShoutHtml )                       
                             .each(function(){
     
          $(this).find("#qShout").html( settings.loader )
                                 .each(function(){
          });
       });

       //style footer's form
       this.styleFooterEle();

       //get content of shout box
        setTimeout( function(){
         $.QShout.loadContent();
        }, 300 );
      },
     
      styleFooterEle: function(){
       var inputs = $("#qFooter :input");
      },

      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";
       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].url != "" ){
             arrayMessage[i].user = "<a href='"+ arrayMessage[i].url +"'>"+ arrayMessage[i].user + "</a>";
            }
           var message = arrayMessage[i].text;
               message = message.replace(/%22/gi,'"');
           content += "<li>"+
                      "<span>"+
                      arrayMessage[i].user +
                      "</span>"+
                      ": "+
                      message+
                      "<span class='dateUrl'>" +
                      arrayMessage[i].time +
                      " ";
			if (settings.admin == true) {
				content += "<a title='IP: "+ arrayMessage[i].ip +"' class='qIp'>&equiv;</a>"+
						  "<a title='Ištrinti' href='/site/delete_shout/"+arrayMessage[i].id+"'>⊠</a>";
				}
			content +="</span>"+
					  "<div style='width: 100%; height: 1px; clear: both;'></div>"+
                      "</li>";
          });
           content += "</ul>";
           
           //manipulate content's css
              $("#qShout").html(content)
                          .each(function(){

                $(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
                });
              });

          //reload the content after interval time
          setTimeout( function(){
			settings.timer = ( settings.timer < 0 )? 30000
			                                       : settings.timer;
              $.QShout.loadContent();
          }, settings.timer );
        });
      },
      //inputs validation
      validatePost: function(){
       var name    = $.trim($("#qName").val());
       var url     = $.trim($("#qUrl").val());
       var message = $.trim($("#qMessage").val());

       if( name == "" || name == null ){
         alert("Pamiršai prisistatyti");
         $("#qName").focus();
         return false;
       }
       
       if( name.length > 30 ){
         alert("Vardas per ilgas (max 30 ženklų)");
         $("#qName").focus();
         return false;
       }
       
       if( message == "" || message == null ){
         alert("Pamiršai ką nors parašyti");
         $("#qMessage").focus();
         return false;
       }
       if( url != "" ){
         var checkURL = new RegExp();
         checkURL.compile("^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$");
         if( !checkURL.test(url) ){
           alert("Invalid URL!");
           $("#qUrl").focus();
           return false;
         }
       }
       this.postShout();
	   setTimeout($.QShout.loadContent(),400);
      },
     //post inputs
     postShout: function(){
       var user    = this.encURI($.trim($("#qName").val() ));
       var url     = "";
       var message = this.encURI($.trim($("#qMessage").val() ));
       
       //disable post button
       $("#qPostBtn").attr("disabled", true);
	   $("#qMessage").attr("disabled", true);
	   var t = setTimeout('$("#qPostBtn, #qMessage").attr("disabled", false)',500);
	   var t2 = setTimeout('$("#qMessage").focus().val("");',500);	   
	   $("#qShout").animate({scrollTop: 0}, 200);

      var inputs = "user=" + user + "&url=" + url + "&message=" + message + "&action=send";
      $.post(settings.serverPage, inputs, function( result ){
        result = $.trim(result);
      });
     },
    //encode
    encURI: function( string ){
      return encodeURIComponent(string);
     }
		
    });

})(jQuery);



